| Metadata | Value |
|---|---|
| Status | Active |
| Version | 1.1.0 |
| Last Updated | 2026-09-10 |
| Author | Sangeetha Grantha Team |
| Document Type | Evidence record |
[!NOTE] Historical evidence: results, counts, commands, and observations below belong to the original work described here. The editorial update date is not a new test or corpus verification. For present behavior, use current feature map.
Provide a curator review interface for managing unmatched PDF extractions and tracking lyric section inconsistencies. Also fix the bulk import idempotency key scoping bug.
CuratorRoutes.kt: Two endpoints — stats and section issues (paginated)CuratorService.kt: Stats aggregation across imported_krithis. Section-issue counts are a SQL aggregate of variant-vs-canon section counts (TRACK-133); the paginated section-issues list still compares krithi_sections vs krithi_lyric_sections per variant.BulkImportTaskRepository.kt: Fixed idempotency key to include jobType (batchId::jobType::sourceUrl)CuratorReviewPage.tsx: Two-tab UI (Pending Matches, Section Issues)ConfirmationModal.tsx: Reusable modal with configurable confirm color and optional notes| File | Change |
|---|---|
CuratorRoutes.kt |
New — curator API endpoints |
CuratorService.kt |
New — stats and section issue logic |
AppModule.kt |
DI registration for CuratorService |
Routing.kt |
Route registration for curator endpoints |
BulkImportTaskRepository.kt |
Idempotency key includes jobType |
CuratorReviewPage.tsx |
New — curator review page |
ConfirmationModal.tsx |
New — reusable modal component |
App.tsx |
Route for /curator-review |
Sidebar.tsx |
Navigation entry |
client.ts |
API client functions |
types.ts |
CURATOR_REVIEW enum value |
Ref: application_documentation/10-implementations/track-080-curator-review-ui.md