| Metadata |
Value |
| Status |
Completed |
| Version |
1.0.1 |
| Last Updated |
2026-02-02 |
| Author |
Sangeetha Grantha Team |
| Related Tracks |
TRACK-001 (Bulk Import), TRACK-008 (Entity Resolution) |
TRACK-031: Composer Deduplication – Avoid Duplicate Composer Names
1. Goal
Avoid creating duplicate composer records when the same person is referred to by different names (e.g. “Dikshitar” vs “Muthuswami Dikshitar”, “Thyagaraja” vs “Tyagaraja”). Ensure a single canonical composer per person and map aliases to it during import and reference-data entry.
2. Problem Statement
- Observed: Reference data lists show “Dikshitar” (Unknown Place • ? - ?) and “Muthuswami Dikshitar” (1775 - 1835) as separate composers; they are the same person.
- Cause: Scraped or manual input uses short forms (“Dikshitar”); entity resolution may suggest candidates but review flow can still create a new composer instead of mapping to the existing canonical one. No alias/canonical rules or merge flow.
- Impact: Duplicate composers fragment krithi attribution, complicate search, and clutter reference data.
3. Scope (Analysis)
- In scope: Composers (primary); patterns may extend to Ragas/Talas alias handling.
- Out of scope: Merging existing duplicate records in DB (can be a follow-up track).
4. Implementation Plan (To Be Refined)
4.1 Canonical Names and Aliases
4.2 Entity Resolution
4.3 Import Review Flow
4.4 Reference Data UI
4.5 Default Language for Composers
5. References
6. Progress Log
- 2026-01-30: Track created; analysis and implementation plan drafted.
- 2026-01-30: Implemented composer_aliases migration (22__composer_aliases.sql), ComposerAliasesTable, ComposerAliasRepository, seed 03_composer_aliases.sql; wired alias resolution into EntityResolutionService (alias map in composerMap) and ComposerRepository.findOrCreate (resolve alias before create). Reference data UI warning/merge deferred.
- 2026-02-01: Fixed composer alias lookup to avoid implicit join without FK, preventing bulk approve failures during import review.
- 2026-02-02: Track completed. Alias mechanism verified.