feat: FastAPI console with dashboard, Pulp client, healthz (stages 0-1)

- config: PULP_* env + 사내 CA(verify=) 대응
- pulp_client: Basic Auth get/post/patch, status/list_repos/get_version
- BFF 라우트: GET / (대시보드), GET /repos (조각), GET /healthz
- views: Pulp JSON → 표시 모델 (GPG 검증 배지 3단계, 요약 집계)
- HTMX + Jinja 템플릿, vendored pico.css/htmx.js (CDN 의존 0)
- 브라우저는 Pulp 직접 호출 안 함 — 모두 BFF 경유 (스펙 §2)
- 테스트: pulp_client(respx), 라우트(dependency_overrides), views 순수함수

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-17 10:55:01 +09:00
parent a91b9d0245
commit 3622b4f20a
21 changed files with 671 additions and 0 deletions

15
app/static/README.md Normal file
View File

@@ -0,0 +1,15 @@
# static/ — 로컬 동봉 자산
폐쇄망 대비 CDN 의존 없이 실물을 여기 둔다(스펙 §9). 현재 동봉된 것:
- `pico.min.css` — Pico CSS v2 (베이스 스타일)
- `htmx.min.js` — htmx v2 (부분 갱신/폴링)
- `app.css` — 프로젝트 커스텀(@font-face, Pico 변수 오버라이드)
- `fonts/PretendardVariable.woff2` — Pretendard variable 폰트
반입/갱신 시 인터넷 가능 PC에서 받아 교체:
- Pico: https://github.com/picocss/pico
- htmx: https://unpkg.com/htmx.org/dist/htmx.min.js
- Pretendard: https://github.com/orioncactus/pretendard (dist/web/variable/woff2)
사내망은 TLS 가로채기(boknet CA)가 있어 `curl``--ssl-no-revoke` 가 필요할 수 있다.

1
app/static/htmx.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4
app/static/pico.min.css vendored Normal file

File diff suppressed because one or more lines are too long