Project

General

Profile

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)