- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록) - `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록 — 창끼리 공유하되 저장소에는 안 올리는 장부 - 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠) - graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.1 KiB
4.1 KiB
완료 이력 - [C01] ui_template_locale.ts 분할
- 완료 일자: 2026-08-02
- 기능명:
ui_template_locale.ts분할 — 700줄 제약 위반 해결 - 이관 소스:
docs/raw/PLAN.md
작업 계획 및 이력
배경
- 2026-08-01 기준
ui_template/ui_template_locale.ts가 1,230줄로 프로젝트 700줄 제한을 위반. - 이 파일은
currentLanguageIndex,ui_locales,t(key)3개를 export 하며 A01A09 / B01B11 거의 전 페이지가 import 하는 최상위 공유 자원 ([[ui_templates]]concepts 참조).
결정 사항 (2026-08-02 사용자 승인)
- 배럴(Barrel) 유지 방식 채택.
ui_template_locale.ts는 얇은 재export 파일로 남기고 사전 데이터만 하위 파일로 분리한다. - 이유: 소비처 13개 이상 파일의 import 구문을 단 한 줄도 수정하지 않으므로 회귀 위험이 최소. 완전 분할은 얻는 것 대비 회귀 범위가 과도.
리스크 (구현 시 주의)
- 키 하나가 누락돼도 런타임 에러가 나지 않고 화면 문구만 조용히 사라진다 → 분할 전후 키 개수 및 키 목록 완전 일치를 반드시 대조할 것.
- 키 중복 시 스프레드 순서에 따라 뒤쪽이 앞쪽을 덮어쓴다 → 분할 파일 간 중복 키 0건을 확인할 것.
목표 구조
ui_template/
├ ui_template_locale.ts (배럴 ~30줄: currentLanguageIndex, ui_locales 합성, t())
├ ui_template_locale_common.ts (헤더/푸터/버튼/공통 문구)
├ ui_template_locale_a.ts (A01~A09 로그인 전 페이지 문구)
└ ui_template_locale_b.ts (B01~B11 워크플로우 페이지 문구)
- 분할 후 모든 파일이 700줄 이하여야 한다. B그룹이 700줄을 넘으면
_b1(B01B05) /B11) 로 한 번 더 쪼갠다._b2(B06
구현 체크리스트
- 1. 원본
ui_template_locale.ts의ui_locales키를 common / A / B 그룹으로 분류하고 분할 전 키 개수를 기록한다. → 714개, 중복 0건. - 2.
ui_template_locale_common.ts생성 — 공통 문구 사전 export (60키 / 96줄).LocaleEntry타입 정의처. - 3.
ui_template_locale_a.ts생성 — A그룹 문구 사전 export (141키 / 263줄). - 4. B그룹은 700줄 초과가 예상되어 처음부터 2분할 —
ui_template_locale_b1.ts(B01B04, 260키 / 430줄),B11, 253키 / 408줄).ui_template_locale_b2.ts(B05 - 5.
ui_template_locale.ts를 배럴(51줄)로 축소 — 하위 사전 4종 스프레드 합성.LANGUAGES/LanguageCode/currentLanguageIndex/setLanguage/t/ui_locales/LocaleKeyexport 시그니처 동일 유지, 소비처 import 수정 0건. - 6. 분할 전후 키 대조 — 714개 전부 키·값 문자열까지 완전 일치, 파일 간 중복 키 0건 확인.
- 7.
npm run typecheck(tsc --noEmit) 오류 0건,prettier --write5개 파일 모두unchanged. - 8. 전 파일 700줄 이하 확인(최대 430줄) 후 커밋 및
.claude/git-autopush.ps1실행.
구현 시 계획과 달라진 점
- 계획서의
ui_template_locale_b.ts단일 파일 대신_b1/_b22분할로 착수. B그룹 사전만 약 840줄이라 단일 파일로는 700줄 제약을 만족할 수 없음(계획서 재분할 조항 적용). LocaleEntry타입은 기존에 비공개였으나, 4개 사전 파일이satisfies에 사용해야 하므로ui_template_locale_common.ts에서 export 하도록 변경(배럴에서는 재export 하지 않아 외부 노출 표면은 불변).- 파일 말미에 흩어져 있던
B01_Dashboard_*11개 키(프로젝트 관리/사용자 관리/확인 메시지)를_b1의 B01 블록으로 이동. 키·값은 불변이며 사전 조회는 순서 무관.
미결사항 해소 이력
- 해결된 미결사항: 기존 향후 작업 내
2. ui_template_locale.ts 분할 (700줄 제약 위반 해결) - 상세:
PLAN.md향후 작업의 미결사항(다음 세션에서 확정) 항목 중 2번에 존재하던ui_template_locale.ts분할 건이 이번 리팩토링 및 검증을 거쳐 최종 완료됨에 따라,PLAN.md내 미결사항 목록에서 완전히 삭제 및 해소되었습니다.