42 lines
3.5 KiB
Markdown
42 lines
3.5 KiB
Markdown
# BAT-006 Planning
|
|
|
|
## Included REQ
|
|
- REQ-006: pytest/AppTest/Smoke CI 자동화
|
|
|
|
## Delivery Plan
|
|
1. REQ-006 승인 상태와 dcy-006 freeze 결정을 입력 gate로 확인한다.
|
|
2. GitHub Actions workflow를 `.github/workflows/` 아래에 신설하고 `pull_request`, `main` 대상 `push`, `workflow_dispatch` 트리거를 정의한다.
|
|
3. CI 실행 환경을 표준화한다: `uv`/Python 설치, project extras 설치, runner temp 경로 사용, 운영 DB 기본 경로 접근 금지.
|
|
4. pytest 회귀 스위트 job을 구성해 `tests/` 전체 또는 동일 의미의 표준 명령을 필수 게이트로 실행한다.
|
|
5. Streamlit AppTest job을 synthetic fixture DB 기준으로 실행한다.
|
|
6. HTTP smoke와 DB safety smoke용 CI wrapper를 추가한다. wrapper는 fixture 준비, 환경 변수 설정, readiness polling, timeout, cleanup, 민감정보 비출력 정책을 담당한다.
|
|
7. DB safety smoke는 임시 fixture/검증 DB에서만 실행하고 운영 DB 및 원본 금융 파일 경로를 사용하지 않는지 검증한다.
|
|
8. `docs/project-structure.md`와 `docs/runtime-flows.md`에 CI workflow, smoke wrapper, gate result flow, 로컬 browser evidence(dcy-004)와의 경계를 반영한다. 필요하면 `docs/runbooks/ci-smoke.md`를 추가한다.
|
|
9. 로컬에서 가능한 범위의 CI 등가 명령을 실행하고, GitHub Actions 실제 로그 또는 로컬 dry-run 한계를 verification에 명확히 기록한다.
|
|
|
|
## Dependencies
|
|
- 기존 pytest 설정: `pyproject.toml`의 `[tool.pytest.ini_options]`와 dev extra의 `pytest`.
|
|
- 기존 Streamlit AppTest 자산: `tests/test_dashboard_app.py`.
|
|
- 기존 smoke 자산: `scripts/ledger_restore_smoke.py`, `scripts/streamlit_browser_evidence.py` 내부 로직 중 CI에서 재사용 가능한 부분.
|
|
- dcy-002 운영 안전 원칙: 검증 DB/fixture 우선, 운영 DB restore/mutation 금지.
|
|
- dcy-004 evidence 경계: browser screenshot evidence는 로컬 보강 경로이며 CI 필수 게이트가 아니다.
|
|
|
|
## Design Gate
|
|
Design required: yes.
|
|
|
|
Reason: 이 batch는 CI workflow, wrapper entrypoint, fixture DB safety boundary, baseline runtime docs를 함께 정의한다. runner 환경·민감정보·운영 DB 접근 차단 규칙이 요구사항의 핵심이므로 구현 전 job 경계와 wrapper 책임을 설계 문서에 고정한다.
|
|
|
|
## Milestones
|
|
- M1: REQ-006 Approved 및 BAT-006 standard batch 생성.
|
|
- M2: CI workflow/job 구조와 wrapper contract 설계 완료.
|
|
- M3: Workflow와 wrapper 구현, synthetic fixture 실행 경로 연결.
|
|
- M4: pytest/AppTest/HTTP/DB safety smoke 로컬 등가 검증 통과.
|
|
- M5: baseline docs/runbook 갱신 및 verification evidence 작성.
|
|
- M6: QC gate PASS/PASS_WITH_NOTES 후 REQ-006 Implemented 전환.
|
|
|
|
## Risks
|
|
- Streamlit HTTP smoke가 readiness 대기/포트 충돌로 flaky해질 수 있다. 고정 또는 결정적 포트 할당, polling timeout, 프로세스 cleanup을 wrapper에서 표준화한다.
|
|
- CI 로그에 실계좌번호, 실잔액, `raw_payload`, 원본 파일명, 비밀번호가 노출될 수 있다. synthetic fixture만 사용하고 wrapper 출력은 요약/상태 중심으로 제한한다.
|
|
- GitHub Actions runner에는 로컬 browser evidence 환경이 없을 수 있다. browser-screenshot E2E는 CI 필수 게이트에서 제외하고 dcy-004 로컬 evidence 경로로 유지한다.
|
|
- 브랜치 보호 required check 설정은 저장소 외부 GitHub 설정이므로, 이 batch는 workflow/check 이름을 안정화하고 문서에 후속 운영 설정으로 기록한다.
|