Goal
artist_name / group_name / metadata.brand 등 text 중심 참조를 줄이고, artist_id / group_id / brand_id 및 instagram_accounts FK를 앱·검색·저장 경로의 기본 키로 전환한다.
Context
Program structure
Sprint 1 (vertical slice — @philippekwak)
| Track |
Issue |
Sprint task |
| Audit & S2 plan |
#581 |
S1-philippekwak-5 |
| Enrichment scale-up |
#578, #495 |
S1-philippekwak-6 |
| Backfill queue PoC |
#582 |
S1-philippekwak-7 (stretch) |
Monorepo pointer: docs/database/entity-id-migration-program.md
Sprint 2+ (waves — 본 epic 하위에서 쪼갤 예정)
- Meilisearch: artists/brands/groups id 기반 검색 인덱스
- Write path: upload / verify / admin 저장 시 FK 우선
- UI resolver: render 시 id → name / thumbnail / profile
- Promote policy: 전량 auto-promote (confidence gate 유지)
References
Security note
DATABASE_SERVICE_ROLE_KEY는 web(Vercel)이 아닌 api-server / ai-server에만 둔다.
Definition of done (epic — program level)
Goal
artist_name/group_name/metadata.brand등 text 중심 참조를 줄이고,artist_id/group_id/brand_id및instagram_accountsFK를 앱·검색·저장 경로의 기본 키로 전환한다.Context
artists,brands,groups,instagram_accounts(~1,518 IA rows, 2026-05-25)service_role설계 오류 → fix(admin): Instagram accounts enrichment API 프로덕션 500 오류 #578 (api-server 이관)Program structure
Sprint 1 (vertical slice — @philippekwak)
Monorepo pointer:
docs/database/entity-id-migration-program.mdSprint 2+ (waves — 본 epic 하위에서 쪼갤 예정)
References
docs/database/entity-enrichment-pipeline.mddocs/database/entity-id-migration-program.mdSecurity note
DATABASE_SERVICE_ROLE_KEY는 web(Vercel)이 아닌 api-server / ai-server에만 둔다.Definition of done (epic — program level)