feat: complete dcy-015 monthly settlement dashboard
Merge dcy-015 monthly settlement dashboard delivery after local and GitHub Actions verification.
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# impl-bat-018-qc1-rework progress
|
||||
|
||||
- 현재 단계: `implementation`
|
||||
- 현재 작업중인 앵커:
|
||||
- `dashboard/app.py` : `page_monthly_settlement(db_path: str)`
|
||||
- `tests/test_dashboard_app.py` : `test_streamlit_apptest_core_pages_use_synthetic_fixture_db`
|
||||
- `docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md`
|
||||
- 검사한 파일:
|
||||
- `.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-018-qc1-implementation-context.md`
|
||||
- `.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-018-qc1-rework.md`
|
||||
- `.stagepilot/delivery/dcy-015_monthly-settlement/bat-018-qc-verdict-01.md`
|
||||
- `.stagepilot/delivery/dcy-015_monthly-settlement/state.json`
|
||||
- `dashboard/app.py`
|
||||
- `tests/test_dashboard_app.py`
|
||||
- `docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md`
|
||||
- 적용한 변경:
|
||||
- 월정산 셸에 조회 기준(선택 월/기준일/조회 시각)과 읽기 전용 모드 표기 추가.
|
||||
- 월정산 페이지에 거래/예산 이동 가이드(텍스트 링크) 추가.
|
||||
- 월 파라미터를 쿼리 파라미터(`month`) 기반으로 수락, 텍스트 입력 기본값으로 반영.
|
||||
- 월정산 AppTest에 대표값 검증 추가 (지표/예산/월 선택/리드온리/도움 링크).
|
||||
- 구현 증적(`implementation.md`)의 command/evidence 섹션 갱신.
|
||||
- 실행/검사 명령:
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .` → `All checks passed!`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py` → `....` (4 passed)
|
||||
- 현재 blocker:
|
||||
- 없음
|
||||
- 다음 단계:
|
||||
- 구현 아티팩트 경로/상태를 기준으로 delivery-runner에게 구현 완료 보고(업무 범위/증적 포함).
|
||||
@@ -0,0 +1,25 @@
|
||||
# Progress: impl-bat-018-qc2-rework
|
||||
|
||||
- current step: 리워크 구현 마감 (BADGE 추가) 및 최신 검증 완료
|
||||
- files inspected:
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-018-qc2-rework.md
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-018-qc2-implementation-context.md
|
||||
- dashboard/app.py (anchor: page_monthly_settlement, header area)
|
||||
- tests/test_dashboard_app.py (anchor: 월정산 AppTest 블록)
|
||||
- docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
- files modified:
|
||||
- dashboard/app.py
|
||||
- tests/test_dashboard_app.py
|
||||
- docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
- design/implementation decisions made:
|
||||
- 사용 중인 Streamlit 1.30.0(최소 사양)에서 안정성 높은 `st.badge` 호출 대신 `st.markdown` HTML 칩(시각적 배지)을 사용
|
||||
- 캡션 `모드: 읽기 전용`은 유지하면서 읽기 전용 상태 텍스트를 별도 배지로 `🔒 읽기 전용` 렌더링
|
||||
- AppTest는 배지 텍스트를 별도 assertion으로 확인하도록 강화
|
||||
- commands/checks run:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py
|
||||
- git -C /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff status --short
|
||||
- git -C /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff diff -- docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md tests/test_dashboard_app.py dashboard/app.py
|
||||
- current blocker: 없음
|
||||
- next concrete step: 변경사항(파일/명령/증거)를 dev-butler/dev-qc에 전달
|
||||
@@ -0,0 +1,7 @@
|
||||
current step: 구현 완료 및 검증
|
||||
files inspected: jarca_ledger_mcp/adapters/streamlit/overview_gateway.py, dashboard/app.py, tests/test_dashboard_app.py, jarca_ledger_mcp/application/monthly_settlement_service.py, jarca_ledger_mcp/service.py
|
||||
files modified: jarca_ledger_mcp/adapters/streamlit/overview_gateway.py, dashboard/app.py, tests/test_dashboard_app.py, docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
design/implementation decisions made: 기존 요약 페이지 스타일을 유지해 월정산을 read-only slice로 추가, REQ-022 `get_monthly_settlement_summary` seam만 사용해 월간 KPI/현금흐름/예산 섹션 렌더링, 네비게이션/dispatch에 월정산을 연결하고 AppTest에 월정산 섹션 텍스트 검증을 추가
|
||||
commands/checks run: `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .` (PASS), `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py` (PASS; rerun after heading-text fix), initial 실패(월간 핵심 KPI 텍스트 미탐지) 발생 후 수정해 재실행
|
||||
current blocker: 없음
|
||||
next concrete step: 가웨인(dev-butler) 리뷰와 dev-qc에게 변경 파일/검증 근거 공유
|
||||
@@ -0,0 +1,24 @@
|
||||
# BAT-019 QC1 rework progress
|
||||
|
||||
- current step: rework implemented in `dashboard/app.py` and test assertions updated in `tests/test_dashboard_app.py`; now validating with pytest/ruff.
|
||||
- files inspected:
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-qc1-implementation-context.md`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-qc1-rework.md`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/bat-019-qc-verdict-01.md`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/implementation.md`
|
||||
- files modified:
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/impl-bat-019-qc1-rework.md`
|
||||
- decisions made:
|
||||
- Scope kept to REQ-024-only in `page_monthly_settlement()` and monthly settlement AppTest.
|
||||
- Added representative account import/reconciliation display with fallback labels (`기관`, `유형`, `최근 동기화`, `잔액`, `상태`).
|
||||
- Preserved existing links and added uncategorized CTA in `미분류 페이지`.
|
||||
- Added asset section summary metrics (`자산 합계`, `총부채`, `순자산`, `자산 마감 상태`) and warning/exclusion caption from `asset_snapshot` payload.
|
||||
- commands/checks run:
|
||||
- `/tmp/jarca-test-venv/bin/pytest tests/test_dashboard_app.py -q` → pass (`4 passed`)
|
||||
- `/tmp/jarca-test-venv/bin/ruff check dashboard/app.py tests/test_dashboard_app.py` → pass
|
||||
- blocker: none (resolved)
|
||||
- next concrete step: package changed files + evidence handoff to 가웨인/dev-qc with exact assertions of diff and test commands output.
|
||||
@@ -0,0 +1,36 @@
|
||||
# impl-bat-019 worker progress
|
||||
|
||||
## step
|
||||
- Implemented dev-impl contract updates for 월정산 dashboard handoff and updated dashboard smoke checks.
|
||||
- Ran required validations; all targeted tests currently pass.
|
||||
|
||||
## files
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-implementation-context.md (read for contract)
|
||||
- dashboard/app.py
|
||||
- jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- tests/test_dashboard_app.py
|
||||
|
||||
## files-modified
|
||||
- dashboard/app.py:line~962-1113 (`page_monthly_settlement`)
|
||||
- jarca_ledger_mcp/adapters/streamlit/overview_gateway.py: lines 3-29 (gateway import/re-export exposure)
|
||||
- tests/test_dashboard_app.py:42-99 (월정산 fixture test expectations)
|
||||
|
||||
## decisions
|
||||
- Preserved 월정산 KPI + 기존 블로커 개요 layout, added required three sections under `정산 전 운영 블로커 점검` in order:
|
||||
- `정산 전 검토` (`🧯`)
|
||||
- `거래 반영 / 계좌 상태` (`📥`)
|
||||
- `자산 / 순자산 마감 상태` (`🏦`)
|
||||
- Kept metric keys and section labels as contract-stated copy (`미처리 review`, `미대조 계좌`, `순자산`) and route CTAs.
|
||||
- Kept asset snapshot call in 월정산 via adapter: `overview_gateway.get_asset_snapshot_report(basis_date=basis_date, db_path=db_path)` with fallback `basis_date = settlement.get("basis_date") or f"{selected_month}-01"`.
|
||||
|
||||
## checks
|
||||
- `python3 -m pytest tests/test_dashboard_app.py` (first run failed: pytest missing)
|
||||
- Created venv + installed deps with `pip install -e .[dev,dashboard]`
|
||||
- `pytest tests/test_dashboard_app.py` => `4 passed in 14.87s`
|
||||
- Verified no sensitive raw paths in 월정산 body assertions (`fixture.sqlite3`, `/home/`, `.local/share/jarca/uploads`, `raw_payload`).
|
||||
|
||||
## blocker
|
||||
- None
|
||||
|
||||
## next step
|
||||
- Deliver diff/evidence to `dev-qc` for handoff review and continuation. Current branch state is ready for review if no additional scope change is requested.
|
||||
@@ -0,0 +1,36 @@
|
||||
# BAT-020 impl progress
|
||||
|
||||
- current step: 월정산 read-only Evidence/다음 액션 하드닝 구현 및 문서 정합성 반영 후 검증 실행
|
||||
- files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-020-implementation-context.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-020.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/project-structure.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/runtime-flows.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-020_20260712_monthly-settlement-evidence-next-actions-verification-hardening/implementation.md
|
||||
- files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/project-structure.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/runtime-flows.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-020_20260712_monthly-settlement-evidence-next-actions-verification-hardening/implementation.md
|
||||
- design/implementation decisions made:
|
||||
- 월정산 페이지 기존 블로커/리포트 데이터만으로 read-only Evidence 섹션을 구성하고, 새 데이터 소스 호출은 추가하지 않음.
|
||||
- Evidence/다음 액션은 오직 텍스트+링크 형태로 렌더링해 close/Write 경로를 추가하지 않음.
|
||||
- 기존 경량성/보안 제약(비노출 문자열 검사)을 유지하기 위해 기존 AppTest 금지 문자열 검증을 그대로 유지.
|
||||
- 월정산 검증 요구 문자열은 `월정산 결과 / Evidence`, `읽기 전용 근거 요약`, `다음 액션`, `예산 조정 후보`, `분류/검토 규칙 후보`, `대조/Import/백업 후속 작업` 등으로 고정.
|
||||
- commands/checks run:
|
||||
- read_file: dashboard/app.py / tests/test_dashboard_app.py / docs/project-structure.md / docs/runtime-flows.md
|
||||
- search_files: def page_monthly_settlement in dashboard/app.py
|
||||
- write_file: worker-progress, implementation evidence 문서 생성
|
||||
- patch: dashboard/app.py
|
||||
- patch: tests/test_dashboard_app.py
|
||||
- patch: docs/project-structure.md
|
||||
- patch: docs/runtime-flows.md
|
||||
- .venv/bin/python -m ruff check .
|
||||
- .venv/bin/python -m pytest -q tests/test_dashboard_app.py
|
||||
- .venv/bin/python scripts/ci_dashboard_http_smoke.py
|
||||
- current blocker: 없음
|
||||
- next concrete step: none (검증 패스 후 상태를 impl-lane handoff 상위 문서로 반영 필요)
|
||||
@@ -0,0 +1,33 @@
|
||||
# QC progress — BAT-018 rerun 01
|
||||
|
||||
- current step: AC-by-AC verdict drafting after requirement/code/test recheck and command reruns.
|
||||
- files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-018-rerun-01.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/bat-018-qc-verdict-01.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/impl-bat-018-qc1-rework.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-supervision/impl-20260712T025428Z/final-result.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-023_monthly-settlement-dashboard-shell-kpi-cashflow-budget.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/jarca_ledger_mcp/application/monthly_settlement_service.py
|
||||
- files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-018-rerun-01.md
|
||||
- design/implementation decisions made:
|
||||
- Use the underscore-path state artifact named inside the QC handoff as canonical because the runner-supplied hyphenated `delivery_state` path does not exist.
|
||||
- Evaluate REQ-023 strictly against both the formal spec and the rerun focus items from the prior fail; passing lint/tests alone is not sufficient.
|
||||
- Treat gateway seam usage as satisfied only if `dashboard/app.py` calls `overview_gateway.get_monthly_settlement_summary(...)` rather than recomputing formulas locally.
|
||||
- commands/checks run:
|
||||
- read_file on QC handoff, canonical state, prior verdict, impl progress, impl supervision result, requirement doc, target code/test/doc files
|
||||
- search_files for `get_monthly_settlement_summary`
|
||||
- search_files for badge/header rendering usage
|
||||
- `git status --short`
|
||||
- `git diff -- dashboard/app.py tests/test_dashboard_app.py docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md jarca_ledger_mcp/adapters/streamlit/overview_gateway.py`
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .` → pass
|
||||
- `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py` → pass (4 passed)
|
||||
- current blocker, if any:
|
||||
- Remaining QC gap: the REQ-023 header/month-selection area still does not implement a read-only status badge; current code only appends `모드: 읽기 전용` inside a caption line.
|
||||
- next concrete step:
|
||||
- Deliver the rerun verdict with AC coverage, exact gap references, and note the runner handoff path ambiguity as a governance/input defect (not the primary implementation blocker).
|
||||
@@ -0,0 +1,30 @@
|
||||
# QC Progress — BAT-018 rerun 02
|
||||
|
||||
- Timestamp: 2026-07-12 12:22:36 KST
|
||||
- current step: Independent verification completed; final verdict being prepared for BAT-018 / REQ-023.
|
||||
- files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-018-rerun-02.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/bat-018-qc-verdict-02.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/impl-bat-018-qc2-rework.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-023_monthly-settlement-dashboard-shell-kpi-cashflow-budget.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
- files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-018-rerun-02.md
|
||||
- design/implementation decisions made:
|
||||
- Scope remained limited to BAT-018 / REQ-023 only.
|
||||
- Read-only badge evidence was judged against the explicit REQ-023 header requirement, not inferred from caption text alone.
|
||||
- Fresh lint/test evidence was re-run independently instead of relying only on runner-reported results.
|
||||
- commands/checks run:
|
||||
- git status --short
|
||||
- date '+%Y-%m-%d %H:%M:%S %Z %z'
|
||||
- git diff -- dashboard/app.py tests/test_dashboard_app.py jarca_ledger_mcp/adapters/streamlit/overview_gateway.py docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py
|
||||
- current blocker, if any:
|
||||
- None found within BAT-018 / REQ-023 scope after rerun 02.
|
||||
- next concrete step:
|
||||
- Issue the QC verdict with AC-by-AC coverage, residual risk assessment, and repeated-verdict count.
|
||||
@@ -0,0 +1,41 @@
|
||||
current step: AC/REQ 대조 완료 후 판정 정리
|
||||
files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-018.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/bat-018-qc-stall-escalation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/index.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/planning.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-018_20260712_monthly-settlement-dashboard-shell-kpi-cashflow-budget/implementation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-023_monthly-settlement-dashboard-shell-kpi-cashflow-budget.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-024_monthly-settlement-operational-blockers-import-account-asset-status.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-025_monthly-settlement-evidence-next-actions-verification-hardening.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/jarca_ledger_mcp/application/monthly_settlement_service.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-supervision/impl-20260712T022240Z/final-result.json
|
||||
files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-018.md
|
||||
design/implementation decisions made:
|
||||
- QC 판정은 BAT-018 / REQ-023 범위에만 한정하고 REQ-024/025 요구와 구분해 평가한다.
|
||||
- lint/pytest 통과만으로 승인하지 않고 REQ-023 In Scope와 AC-5 증거 부족 여부를 별도로 판정한다.
|
||||
- AppTest 본문/metric 출력을 실제 실행으로 확인해 기본 월에서 월정산 페이지가 빈 값 방어 렌더링 되는 점을 확인했다.
|
||||
commands/checks run:
|
||||
- read_file qc-bat-018.md
|
||||
- read_file state.json
|
||||
- read_file worker-progress/qc-bat-018.md (missing -> created)
|
||||
- read_file BAT-018 index/planning/implementation docs
|
||||
- read_file REQ-023/024/025 SRS docs
|
||||
- read_file overview_gateway.py
|
||||
- read_file dashboard/app.py (full + monthly settlement section)
|
||||
- read_file tests/test_dashboard_app.py
|
||||
- read_file impl supervisor final-result.json
|
||||
- search_files in dashboard/app.py for monthly settlement symbols
|
||||
- search_files in jarca_ledger_mcp for get_monthly_settlement_summary definition
|
||||
- terminal: git status --short && git diff -- dashboard/app.py tests/test_dashboard_app.py jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- terminal: /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check . && /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py
|
||||
- terminal: /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python AppTest fixture smoke for 월정산 page
|
||||
current blocker, if any:
|
||||
- 구현 승인 blocker 있음: REQ-023 in-scope 항목( KST timestamp, read-only status badge, CTA/menu guidance )이 구현되지 않았고, AC-5가 요구한 representative KPI/budget content 검증도 테스트에 없음.
|
||||
next concrete step:
|
||||
- 최종 QC 결과를 fail로 정리하고, 누락 구현/테스트 보강 항목을 line reference와 함께 반환한다.
|
||||
@@ -0,0 +1,37 @@
|
||||
# QC progress — BAT-019 rerun 01
|
||||
|
||||
- timestamp: 2026-07-12T19:05:04+09:00
|
||||
- current step: Final QC assessment completed for BAT-019 rerun; implementation behavior and test evidence rechecked against REQ-024 and QC verdict 01 gaps.
|
||||
- files inspected:
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-019-rerun-01.md
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/bat-019-qc-verdict-01.md
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-qc1-rework.md
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-qc1-implementation-context.md
|
||||
- .stagepilot/delivery/dcy-015_monthly-settlement/bat-019-qc1-rework-supervisor-integrity-blocked.md
|
||||
- .stagepilot/worker-progress/impl-bat-019-qc1-rework.md
|
||||
- docs/srs/Interface/req-024_monthly-settlement-operational-blockers-import-account-asset-status.md
|
||||
- docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/index.md
|
||||
- docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/implementation.md
|
||||
- dashboard/app.py
|
||||
- tests/test_dashboard_app.py
|
||||
- jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- files modified:
|
||||
- .stagepilot/worker-progress/qc-bat-019-rerun-01.md
|
||||
- design/implementation decisions made:
|
||||
- Separated harness supervisor-integrity failure from implementation acceptance per handoff.
|
||||
- Treated this rerun as verdict count 2 for the same BAT-019 / REQ-024 acceptance scope.
|
||||
- Used direct repository inspection and fresh local execution as the primary basis for re-review because the supervised impl rework lacks canonical final-result artifacts.
|
||||
- Judged that UI behavior appears to close the prior missing-detail gaps, but the committed AppTest still does not directly assert all required representative detail fields called out in the rerun handoff.
|
||||
- commands/checks run:
|
||||
- date --iso-8601=seconds
|
||||
- git status --short
|
||||
- /tmp/jarca-test-venv/bin/ruff check .
|
||||
- /tmp/jarca-test-venv/bin/pytest tests/test_dashboard_app.py -q
|
||||
- git diff -- dashboard/app.py tests/test_dashboard_app.py jarca_ledger_mcp/adapters/streamlit/overview_gateway.py docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/implementation.md .stagepilot/worker-progress/impl-bat-019-qc1-rework.md .stagepilot/worker-progress/qc-bat-019-rerun-01.md
|
||||
- /tmp/jarca-test-venv/bin/python - <<'PY' ... AppTest monthly settlement fixture inspection ... PY
|
||||
- current blocker, if any:
|
||||
- Implementation worker supervisor integrity remains incomplete for the QC1 rework run (no canonical final-result / exit file).
|
||||
- For implementation acceptance itself, AppTest coverage remains weaker than the rerun handoff requirement: the committed test does not directly assert representative freshness timestamp or user-friendly account status detail.
|
||||
- next concrete step:
|
||||
- Return QC verdict: implementation behavior mostly looks corrected, but same-scope acceptance should not pass until automated AppTest assertions are strengthened and runner/lead handle the separate supervisor-integrity blocker.
|
||||
@@ -0,0 +1,35 @@
|
||||
current step: Evidence comparison complete; drafting BAT-019 rerun 02 verdict.
|
||||
files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-019-rerun-02.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-019-rerun-02.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/implementation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/bat-019-qc-verdict-01.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-qc1-implementation-context.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-024_monthly-settlement-operational-blockers-import-account-asset-status.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-019-rerun-02.md
|
||||
design/implementation decisions made:
|
||||
- Judged BAT-019 only against REQ-024 and the rerun-02 handoff closure targets.
|
||||
- Kept harness execution integrity separate from implementation acceptance because state.json still records a supervisor-integrity block while the current code/tests can be independently inspected and revalidated.
|
||||
- Treated the stale blocked control-plane state as a follow-up/governance issue, not as proof of an implementation defect.
|
||||
commands/checks run:
|
||||
- read_file qc-bat-019-rerun-02.md
|
||||
- read_file state.json
|
||||
- read_file worker-progress/qc-bat-019-rerun-02.md
|
||||
- read_file docs/batches/bat-019.../implementation.md
|
||||
- read_file bat-019-qc-verdict-01.md
|
||||
- read_file impl-bat-019-qc1-implementation-context.md
|
||||
- read_file req-024_monthly-settlement-operational-blockers-import-account-asset-status.md
|
||||
- read_file tests/test_dashboard_app.py
|
||||
- read_file dashboard/app.py
|
||||
- search_files for required visible strings and service seams in dashboard/app.py and tests/test_dashboard_app.py
|
||||
- terminal: git status --short
|
||||
- terminal: /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .
|
||||
- terminal: /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py
|
||||
current blocker, if any:
|
||||
- Control-plane mismatch remains: state.json is still blocked on supervisor integrity failure and points at the older integrity-blocked handoff, so runner/lead must reconcile delivery-state authority separately from this implementation verdict.
|
||||
next concrete step:
|
||||
- Return the independent QC verdict with explicit separation between REQ-024 implementation acceptance and the remaining harness/control-plane follow-up.
|
||||
@@ -0,0 +1,35 @@
|
||||
# QC Progress — BAT-019
|
||||
|
||||
- current step: REQ-024 / BAT-019 구현-검증 대조 완료, 판정 정리 중
|
||||
- files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-019.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-019-implementation-context.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-024_monthly-settlement-operational-blockers-import-account-asset-status.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/index.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/planning.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-019_20260712_monthly-settlement-operational-blockers-import-account-asset-status/implementation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/jarca_ledger_mcp/adapters/streamlit/overview_gateway.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-supervision/impl-20260712T092749Z/final-result.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-supervision/impl-20260712T092749Z/child.log
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/impl-bat-019.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/discovery/dcy-015_20260711_monthly-settlement-page-requirements-wireframe.md
|
||||
- files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-019.md
|
||||
- design/implementation decisions made:
|
||||
- supervisor final-result는 존재하므로 BAT-019는 harness integrity failure가 아니라 구현 수용성으로 판정 가능하다고 봄.
|
||||
- QC 범위는 REQ-024 / BAT-019로 제한하되, AC만이 아니라 REQ 본문/Discovery intent와 구현 일치 여부를 함께 점검함.
|
||||
- 현재 구현은 민감정보 비노출, asset snapshot seam 재사용, lint/pytest 통과는 충족.
|
||||
- 그러나 REQ-024가 요구한 unresolved item별 CTA 및 import/account·asset 상태 상세 표시가 충분하지 않다는 잠정 결론.
|
||||
- commands/checks run:
|
||||
- read_file qc handoff/state/progress/implementation artifacts
|
||||
- terminal: `git status --short && git diff -- dashboard/app.py jarca_ledger_mcp/adapters/streamlit/overview_gateway.py tests/test_dashboard_app.py`
|
||||
- search_files: `get_asset_snapshot_report`, `page_monthly_settlement`, REQ-024 path lookup
|
||||
- terminal: `/home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check . && /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py`
|
||||
- terminal: venv Python AppTest probe for `월정산` body/metrics/CTA presence and forbidden-string absence
|
||||
- current blocker, if any:
|
||||
- 구현 불일치 의심: `미분류 추천 대기`에 대응하는 기존-page CTA가 월정산 본문에 없고, import/account section이 REQ-024/Discovery가 적시한 account name/type/institution, last_synced_at, last_balance, status badge를 렌더링하지 않음. asset section도 assets/liabilities/warnings/excluded summary를 표시하지 않음.
|
||||
- next concrete step:
|
||||
- AC/REQ별 미충족 항목을 명시한 fail verdict와 구현 재작업 요청을 정리한다.
|
||||
@@ -0,0 +1,35 @@
|
||||
# QC progress — BAT-020
|
||||
|
||||
- current step: Evidence review and validation reruns complete; preparing final BAT-020 verdict.
|
||||
- files inspected:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/qc-bat-020.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/state.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/delivery/dcy-015_monthly-settlement/impl-bat-020-implementation-context.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-supervision/impl-20260712T102306Z/final-result.json
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/impl-bat-020.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/srs/Interface/req-025_monthly-settlement-evidence-next-actions-verification-hardening.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-020_20260712_monthly-settlement-evidence-next-actions-verification-hardening/implementation.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/batches/bat-020_20260712_monthly-settlement-evidence-next-actions-verification-hardening/verification.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/dashboard/app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/project-structure.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/docs/runtime-flows.md
|
||||
- files modified:
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.worktrees/kickoff/.stagepilot/worker-progress/qc-bat-020.md
|
||||
- design/implementation decisions made:
|
||||
- BAT-020 QC scope treated as fresh REQ-025 acceptance review.
|
||||
- Harness execution integrity reviewed separately from implementation acceptance; impl final-result exists and reports result_class=done, so no harness-integrity blocker was found for BAT-020.
|
||||
- Verified against both the QC handoff AC set and the underlying REQ-025 acceptance wording, including full-suite lint/pytest checks in addition to the runner’s targeted checks.
|
||||
- commands/checks run:
|
||||
- date --iso-8601=seconds
|
||||
- git status --short
|
||||
- git diff -- dashboard/app.py tests/test_dashboard_app.py docs/project-structure.md docs/runtime-flows.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check dashboard/app.py tests/test_dashboard_app.py docs/project-structure.md docs/runtime-flows.md
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q tests/test_dashboard_app.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python scripts/ci_dashboard_http_smoke.py
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m ruff check .
|
||||
- /home/ubuntu/workspaces/jarca-ledger-mcp/.venv/bin/python -m pytest -q
|
||||
- current blocker, if any:
|
||||
- None found after code/doc review and validation reruns.
|
||||
- next concrete step:
|
||||
- Return the BAT-020 QC verdict with AC-by-AC evidence, residual risk note, and verdict-count statement.
|
||||
Reference in New Issue
Block a user