| Metadata | Value |
|---|---|
| Status | Completed |
| Version | 1.0.0 |
| Last Updated | 2026-03-15 |
| Author | Sangeetha Grantha Team |
Add end-to-end testing and runtime validation for the import pipeline so that silent failures (like TRACK-094’s format mismatch) are caught immediately rather than discovered after manual DB inspection.
The TRACK-093 bulk import of 67 krithis appeared successful at every UI touchpoint (upload, extraction, approval) but produced empty shells — zero lyrics, sections, or lyric sections persisted. The failure was invisible because:
catch { println } blockLyricVariantPersistenceServiceTest.kt in api/src/test/kotlin/.../services/CanonicalExtractionDto → assert krithi_sections (3), krithi_lyric_variants (2: SA + TE), krithi_lyric_sections (3 per variant) all populatedScrapedKrithiMetadata payload → assert lyric variant persisted (backward compatibility)logger.error logged, approval succeeds without crashGET /v1/admin/imports/:id/validation — returns section/variant/lyric counts, payload format, and issue listGET /v1/admin/imports/validation/summary — batch-level health check (total, withPayload, withVariants, needsBackfill)ImportValidationResponse, ValidationSummaryResponse (both @Serializable)| File | Change |
|---|---|
modules/backend/api/src/test/kotlin/.../services/LyricVariantPersistenceServiceTest.kt |
New: 3 integration tests (canonical, legacy, malformed) |
modules/backend/api/src/test/kotlin/.../services/ExtractionResultProcessorTest.kt |
Updated tests to reflect existing payload enrichment |
modules/backend/api/.../routes/ImportRoutes.kt |
Validation endpoints |
modules/backend/api/.../services/ImportValidationService.kt |
New: validation logic |
modules/frontend/sangita-admin-web/src/pages/CuratorReviewPage.tsx |
Validation indicators |
Ref: application_documentation/10-implementations/track-095-import-pipeline-test-validation.md