3.5 KiB
3.5 KiB
BAT-006 Planning
Included REQ
- REQ-006: pytest/AppTest/Smoke CI 자동화
Delivery Plan
- REQ-006 승인 상태와 dcy-006 freeze 결정을 입력 gate로 확인한다.
- GitHub Actions workflow를
.github/workflows/아래에 신설하고pull_request,main대상push,workflow_dispatch트리거를 정의한다. - CI 실행 환경을 표준화한다:
uv/Python 설치, project extras 설치, runner temp 경로 사용, 운영 DB 기본 경로 접근 금지. - pytest 회귀 스위트 job을 구성해
tests/전체 또는 동일 의미의 표준 명령을 필수 게이트로 실행한다. - Streamlit AppTest job을 synthetic fixture DB 기준으로 실행한다.
- HTTP smoke와 DB safety smoke용 CI wrapper를 추가한다. wrapper는 fixture 준비, 환경 변수 설정, readiness polling, timeout, cleanup, 민감정보 비출력 정책을 담당한다.
- DB safety smoke는 임시 fixture/검증 DB에서만 실행하고 운영 DB 및 원본 금융 파일 경로를 사용하지 않는지 검증한다.
docs/project-structure.md와docs/runtime-flows.md에 CI workflow, smoke wrapper, gate result flow, 로컬 browser evidence(dcy-004)와의 경계를 반영한다. 필요하면docs/runbooks/ci-smoke.md를 추가한다.- 로컬에서 가능한 범위의 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 이름을 안정화하고 문서에 후속 운영 설정으로 기록한다.