ID: TRACK-005 Status: Completed Owner: Sangita Grantha Architect Created: 2026-01-22 Updated: 2026-01-22
The initial Bulk Import implementation (TRACK-001, TRACK-003) delivered a “technical” MVP that is operationally brittle and user-unfriendly. Key Deficiencies:
Deliver a production-grade Bulk Import capability that is intuitive (“Drag & Drop”), transparent (Real-time Progress), and robust.
POST /v1/admin/bulk-import/upload (Multipart).
storage/imports/ directory.batchId immediately.kotlin-csv or commons-csv).status_message on the Batch entity for high-level feedback (Implemented via UI inference from Job states).useInterval or tanstack-query polling (2s interval) for running batches.Pre-flight Check: Validate URL accessibility (HEAD request) during Manifest Ingest (Implemented valid URL syntax check).
Validation: Ensure all 3 required columns (Krithi, Raga, Hyperlink) exist before creating tasks.
Uploads: Use Ktor ContentNegotiation and MultiPartData to handle uploads.
Polling: Stick to short-polling (simple, robust) over WebSockets for now.
CSV: Use a standard library to handle edge cases (quotes, newlines).