Files
Aislo/docs/raw/plans/2026-08-02_plan_ui_template_locale_split.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `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>
2026-09-09 18:19:07 +09:00

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) / _b2(B06B11) 로 한 번 더 쪼갠다.

구현 체크리스트

  • 1. 원본 ui_template_locale.tsui_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줄), ui_template_locale_b2.ts(B05B11, 253키 / 408줄).
  • 5. ui_template_locale.ts 를 배럴(51줄)로 축소 — 하위 사전 4종 스프레드 합성. LANGUAGES/LanguageCode/currentLanguageIndex/setLanguage/t/ui_locales/LocaleKey export 시그니처 동일 유지, 소비처 import 수정 0건.
  • 6. 분할 전후 키 대조 — 714개 전부 키·값 문자열까지 완전 일치, 파일 간 중복 키 0건 확인.
  • 7. npm run typecheck (tsc --noEmit) 오류 0건, prettier --write 5개 파일 모두 unchanged.
  • 8. 전 파일 700줄 이하 확인(최대 430줄) 후 커밋 및 .claude/git-autopush.ps1 실행.

구현 시 계획과 달라진 점

  • 계획서의 ui_template_locale_b.ts 단일 파일 대신 _b1/_b2 2분할로 착수. 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 내 미결사항 목록에서 완전히 삭제 및 해소되었습니다.