---
task_id: task-2447
type: checklist
scope: task
created: 2026-05-04
updated: 2026-05-04
status: in-progress
---

# 체크리스트: task-2447

**task**: task-2447

---

## Phase 1 — 인프라 (팀장 직접)

- [ ] A. `scripts/extension_version_bump.py` 작성 (--check / --sync 모드)
- [ ] B. `tests/scripts/test_extension_version_bump.py` 작성
- [ ] C. `.github/workflows/extension-release.yml` 작성 (workspace + InsuRo 양쪽)

## Phase 2 — 백엔드 (엔키)

- [ ] A. `server/routes/extension.py` 신규 모듈 (router + 5분 TTL 캐시 + GitHub URL 구성)
- [ ] B. `server/main.py` inline endpoint를 새 모듈에 위임 (URL 유지) + alias `/api/extension/latest-version` 추가
- [ ] C. `server/config/extension_version.json` 0.1.0 → 0.4.1 sync
- [ ] D. `server/tests/test_extension_routes.py` 신규 테스트 (캐시 hit/miss + schema)

## Phase 3 — 프론트 (이쉬타르)

- [ ] A. `extension/manifest.json` version 0.4.0 → 0.4.1
- [ ] B. `extension/popup.html` line 30 hardcoded "v0.1.0" 제거 → `<div id="ext-version-footer">로딩중...</div>`
- [ ] C. `extension/popup.js` DOMContentLoaded → chrome.runtime.getManifest() 기반 footer 출력
- [ ] D. `src/pages/CompositeExtensionGuide.tsx` stale 경고 추가 (installed != latest 시)

## Phase 4 — 검증 (팀장 + 닌기르수)

- [ ] A. pytest (server/tests/test_extension_routes.py + tests/scripts/test_extension_version_bump.py) PASS
- [ ] B. `npm run build` (InsuRo) PASS
- [ ] C. L1 스모크: 서버 재시작 + curl `/api/insuro/composite-design/extension-version` → version 0.4.1 확인
- [ ] D. `python3 scripts/extension_version_bump.py --check` → exit 0
- [ ] E. grep popup.html "v0.4" 또는 "v0.1" 패턴 → 0건
- [ ] F. Codex 사전 검증 PASS
- [ ] G. G3 독립 검증 PASS

## 검증

- [ ] 보고서 작성 (`/home/jay/workspace/memory/reports/task-2447.md`)
- [ ] PR 생성 + Gemini 리뷰 통과
- [ ] L1 스모크테스트 결과 기록
- [ ] 3문서 status: completed
- [ ] finish-task.sh 실행 (.done 자동 생성)
