Worklog-2026-06-27 » History » Version 1
joungmin ko, 06/28/2026 06:51 AM
| 1 | 1 | joungmin ko | # 작업로그 — 2026-06-27 (역설계·현행화·코드리뷰·개선) |
|---|---|---|---|
| 2 | |||
| 3 | > 기준 커밋 `2190123` → `7081f1a` · **17 커밋, 71 파일, +4,727 / −1,441** · 작성: [AI] Claude Code |
||
| 4 | |||
| 5 | ## 1. 개요 |
||
| 6 | 운영 중인 HitMusicU를 **역설계서로 문서화**하고 Redmine/git을 현행화한 뒤, **6-페르소나 코드리뷰**로 개선점을 도출·등록·처리. 고위험 항목은 **Design-First + 별도 리뷰어 패스**로 진행. |
||
| 7 | |||
| 8 | ## 2. 문서 아키텍처 (역설계) |
||
| 9 | - `docs/` 신설: Diátaxis + ADR + 설계서 구조 (`docs/README.md` 문서지도) |
||
| 10 | - **역설계서 6편**: 49-chart-query, 50-lyrics-pipeline, 51-flashcards, 52-frontend, 502-auth-personalization, 503-backoffice |
||
| 11 | - **ADR 4건**: 0001 LLM 프로바이더, 0002 백오피스 보안, 0003 artist_name_norm, 0004 song 복합키 |
||
| 12 | |||
| 13 | ## 3. 보안 (P0) |
||
| 14 | - **#506/#507/#509** 하드코딩 시크릿(DB PW·Genius·OCI/OpenRouter 키) → env 이전 + **git 이력 filter-repo 스크럽** → 리스크 수용 완료 |
||
| 15 | - **#508** 백오피스 앱인증 부재 → 리스크 수용 완료(완화책 적용) |
||
| 16 | - 커밋: ae9dd30, db7e5d9 (+ 이력 재작성 db7e5d9) |
||
| 17 | |||
| 18 | ## 4. 6-페르소나 코드리뷰 → P1 버그 8건 (#510~#517) |
||
| 19 | 보안/백엔드/프론트/성능/데이터품질/QA 관점 병렬 리뷰(교차검증). 수정·배포 완료: |
||
| 20 | - #510 번역/발음 빈문자열→None · #511 Drill per-card 난이도 · #512 복습 실패 노출 |
||
| 21 | - #513 Redis 읽기 DB폴백 · #514 전역 예외핸들러(400) · #515 Billboard FK 매핑(+14주 재적재) |
||
| 22 | - #516 부분가사 저장 차단 · #517 백오피스 batch 가드(부분) |
||
| 23 | - 커밋: a279c3e |
||
| 24 | |||
| 25 | ## 5. P2 개선 묶음 (#518~#523) |
||
| 26 | | 이슈 | 결과 | 핵심 | |
||
| 27 | |------|------|------| |
||
| 28 | | #518 보안 | 진행 80% | CORS env·XFF 우측IP·에러마스킹·admin DB role 재확인 (a65d704) | |
||
| 29 | | #519 데이터품질 | 진행 70% | Korean감지·장르매처·MB검증·JSON salvage·source·영문명검증 (dbbdb3a) | |
||
| 30 | | #520 백엔드 | **해결** | JwtService·clearCache SCAN·@Transactional·SLF4J (edfbfdc) | |
||
| 31 | | #521 성능/비용 | 진행 70% | 캐시 TTL계층·미캐싱추가·LLMcap 호출계수·async·N+1·풀 (c46184e) | |
||
| 32 | | #522 프론트 | 진행 80% | 카드a11y·lib/api·aria·실패처리·메타데이터·modal·speak (92dac0c) | |
||
| 33 | | #523 기술부채 | **해결** | 죽은코드 삭제·RateLimiter·visitor:today TTL·parse가드 (7081f1a) | |
||
| 34 | |||
| 35 | ## 6. 분리 설계→리뷰→구현 (대형, 모두 완료) |
||
| 36 | - **#524** artist_name_norm 가상컬럼+인덱스 — 검색 sargable화·오매칭 제거(Taylor 59→1, BTS 15→1), 로마자 검색(IU→아이유). 리뷰어가 한글(영문) 매칭 결함 차단. (5d298c3, c7e796f) |
||
| 37 | - **#525** song (song_name, artist_id) 복합키 — 동명이곡 7,254 분리(신규 11,818행), 7테이블 FK 재매핑. 리뷰어 REJECT→941행 오귀속 방지. 검증게이트+백업 마이그레이션. (3073c7a) |
||
| 38 | - **#526** ChartController(653줄) 5분할 + CacheService + curl→RestTemplate. (1045098) |
||
| 39 | |||
| 40 | ## 7. 후속 이슈 |
||
| 41 | - **#528** 분리행 메타 재도출 — english_title 476곡 채움(genre 휴면기능 보류) (1565ca3) |
||
| 42 | - **#529** Map→DTO — LyricsDto로 CLOB fragility 제거(바이트동일), 광범위 sweep 비권장 (e71f3b4) |
||
| 43 | - **#530** karaoke — tjmedia 새 endpoint + URL 이중인코딩 버그 수정 → 해결(밤편지→48879 등) (c769cae) |
||
| 44 | |||
| 45 | ## 8. DB 마이그레이션 (sqlcl/python, 백업 보존) |
||
| 46 | - artist_name_norm 가상컬럼 4 + 인덱스 4 (`db/migrations/2026-06-27-artist-name-norm.sql`) |
||
| 47 | - song 복합키 분리: 신규 11,818행 + FK 재매핑 (`scripts/migrate_525_song_composite_key.py`, `*_bak_525` 백업) |
||
| 48 | - Billboard 14주 재적재, english_title 476곡 백필 |
||
| 49 | |||
| 50 | ## 9. 검증 |
||
| 51 | 모든 변경 빌드(mvn/npm) + pm2 재기동 + 스모크/회귀 + DB 무결성 게이트로 확인. 마이그레이션은 dry-run 후 검증게이트 통과 시에만 커밋. |
||
| 52 | |||
| 53 | ## 10. 의도적 보류 (대형 재설계 / 저ROI / 데이터 재처리) |
||
| 54 | JWT refresh 재설계(#518) · LLMcap Redis백업·MB배치 재시작성(#521) · 협업파서→/featuring(#522) · 광범위 Map→DTO(#529) · genre 크롤(#528) · 기존 오염데이터 재처리(#519) |