Mikhail Chusavitin
|
bca82f9dc0
|
export: implement streaming CSV with Excel compatibility
Implement Phase 1 CSV Export Optimization:
- Replace buffering with true HTTP streaming (ToCSV writes to io.Writer)
- Add UTF-8 BOM (0xEF 0xBB 0xBF) for correct Cyrillic display in Excel
- Use semicolon (;) delimiter for Russian Excel locale
- Use comma (,) as decimal separator in numbers (100,50 instead of 100.50)
- Add graceful two-phase error handling:
* Before streaming: return JSON errors for validation failures
* During streaming: log errors only (HTTP 200 already sent)
- Add backward-compatible ToCSVBytes() helper
- Add GET /api/configs/:uuid/export route for configuration export
New tests (13 total):
- Service layer (7 tests):
* UTF-8 BOM verification
* Semicolon delimiter parsing
* Total row formatting
* Category sorting
* Empty data handling
* Backward compatibility wrapper
* Writer error handling
- Handler layer (6 tests):
* Successful CSV export with streaming
* Invalid request validation
* Empty items validation
* Config export with proper headers
* 404 for missing configs
* Empty config validation
All tests passing, build verified.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-02-09 10:47:10 +03:00 |
|