Skip to content

feat(blog): sprint-157 [P10] — ADR 콘텐츠 i18n + 자동 번역기 + /stop EN 의무#256

Merged
tpals0409 merged 1 commit into
mainfrom
feat/sprint-157-adr-en-content
May 18, 2026
Merged

feat(blog): sprint-157 [P10] — ADR 콘텐츠 i18n + 자동 번역기 + /stop EN 의무#256
tpals0409 merged 1 commit into
mainfrom
feat/sprint-157-adr-en-content

Conversation

@tpals0409

Copy link
Copy Markdown
Owner

Summary

인프라

  • docs/adr-en/ 별도 디렉토리 (blog content/posts-en/ 패턴 계승)
  • getAllAdrs(locale) 시그니처 확장 — EN 우선 / KR fallback + hasEnTranslation 플래그
  • 영문 라우팅 6 페이지 모두 locale='en' 호출로 전환
  • KoreanOnlyBanner 조건 변경: locale==='en' && !hasEnTranslation (영문판 보유 시 배너 제거)

자동 번역기

  • scripts/translate-adr.mjs (310라인) — Claude API claude-opus-4-7 사용
  • CLI: --target/--all/--dry-run/--force/--help
  • 번역 정책 system prompt 박음: literal translation, frontmatter title만 영문화, 코드/링크/표/mermaid 보존
  • ANTHROPIC_API_KEY 미설정 시 exit 2 + 안내 (placeholder 0)

워크플로우 의무화

  • .claude/commands/stop.md — KR+EN 동시 작성 + 자동 번역기 호출 + 일관성 검증 4파일 + 완료 보고 EN 행
  • .claude/commands/agents/scribe.md — Sprint 157 P10 KR+EN 의무 섹션 신설

시범 번역 (사용자 직접 실행)

  • 본 PR에서는 인프라+스크립트만, 시범 번역 0개 (ANTHROPIC_API_KEY 미설정)
  • 사용자가 키 설정 후 node scripts/translate-adr.mjs --target docs/adr/... 실행하면 즉시 영문판 생성
  • 우선 권장: 영구 8 + 토픽 1 + sprint-156 = 10개

점진 활성화 lint

  • scripts/check-adr-en-coverage.mjs--lint(WARN, 현재 105건) / --strict(Sprint 158+ CI hard gate 예정)

Test plan

  • tsc --noEmit 0 에러
  • npm run build 244 페이지 (KR 122 + EN 122)
  • check-adr-links.mjs blog/out/adr 1,109 links, 0 broken
  • check-adr-links.mjs blog/out/en/adr 1,213 links, 0 broken
  • check-adr-conversion.mjs 10/10 fixture, 105 ADR 파싱 성공
  • check-doc-refs.mjs --include-untracked 172 files, 0 broken refs
  • EN 페이지 KoreanOnlyBanner 렌더 검증 (영문판 미보유 시 표시 / 보유 시 제거)
  • translate-adr.mjs --dry-run 정상 동작 + API key 미설정 시 exit 2 안내

후속 (Sprint 158+ 또는 사용자 즉시 실행)

  • ANTHROPIC_API_KEY 설정 후 10개 시범 번역 → 검증 → --all로 나머지 95건 batch
  • check-adr-en-coverage.mjs --strict CI hard gate 활성화

🤖 Generated with Claude Code

docs/adr-en/ 영문 디렉토리 신규 (blog content/posts-en/ 패턴 계승)
- loader.ts getAllAdrs(locale) 확장 — EN 우선 / KR fallback + hasEnTranslation 플래그
- 영문 라우팅 6 페이지가 'en' locale로 ADR 로드 → 영문판 있으면 사용, 없으면 KR + 배너
- scripts/translate-adr.mjs Claude API 자동 번역기 (CLI: --target/--all/--dry-run/--force)
- scripts/check-adr-en-coverage.mjs lint (--lint warning / --strict fail) — Sprint 158+ 강제 활성화 예정
- ANTHROPIC_API_KEY 미설정으로 본 sprint 시범 번역은 스킵 — 인프라 + 스크립트만 완성
- /stop 워크플로우 + Scribe 페르소나에 KR+EN 동시 작성 의무 추가
- docs/adr-en/README.md 번역 정책 명문화

Sprint 152 시드 #19 (KR/EN 양면 plan 의무) 본격 적용 — 사용자 명시 요구.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tpals0409 tpals0409 enabled auto-merge (squash) May 18, 2026 13:24
@github-actions

Copy link
Copy Markdown

Coverage Report

Coverage directory not found at /home/runner/work/AlgoSu/AlgoSu/coverage — no services changed, skipping coverage gate.

@tpals0409 tpals0409 merged commit 7d0fedf into main May 18, 2026
36 of 37 checks passed
@tpals0409 tpals0409 deleted the feat/sprint-157-adr-en-content branch May 18, 2026 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant