docs: split monthly settlement requirements
This commit is contained in:
@@ -8,7 +8,11 @@
|
|||||||
- 마지막 갱신 시각(KST): 2026-07-11 14:30 KST
|
- 마지막 갱신 시각(KST): 2026-07-11 14:30 KST
|
||||||
- 대체됨: 없음
|
- 대체됨: 없음
|
||||||
- 후속 Discovery 참조: 없음
|
- 후속 Discovery 참조: 없음
|
||||||
- 생성된 REQ 참조: REQ-022 (`docs/srs/Interface/req-022_monthly-settlement-read-only-dashboard.md`)
|
- 생성된 REQ 참조:
|
||||||
|
- REQ-022 (`docs/srs/Interface/req-022_monthly-settlement-read-model-foundation.md`)
|
||||||
|
- REQ-023 (`docs/srs/Interface/req-023_monthly-settlement-dashboard-shell-kpi-cashflow-budget.md`)
|
||||||
|
- REQ-024 (`docs/srs/Interface/req-024_monthly-settlement-operational-blockers-import-account-asset-status.md`)
|
||||||
|
- REQ-025 (`docs/srs/Interface/req-025_monthly-settlement-evidence-next-actions-verification-hardening.md`)
|
||||||
- 요청 출처: 최총무가 등록한 GitHub Issues #3 `[Feature] 월정산 페이지 기능 요구사항 정의`, #4 `[Design] 월정산 페이지 와이어프레임 수준 섹션 설계안`
|
- 요청 출처: 최총무가 등록한 GitHub Issues #3 `[Feature] 월정산 페이지 기능 요구사항 정의`, #4 `[Design] 월정산 페이지 와이어프레임 수준 섹션 설계안`
|
||||||
- GitHub 확인 상태: repository issue 본문은 확인 완료. GitHub Project 4 API 직접 조회는 현재 CLI token의 `read:project` scope 부족으로 별도 blocked이나, 원문 요구사항은 issue #3/#4에서 확인했다.
|
- GitHub 확인 상태: repository issue 본문은 확인 완료. GitHub Project 4 API 직접 조회는 현재 CLI token의 `read:project` scope 부족으로 별도 blocked이나, 원문 요구사항은 issue #3/#4에서 확인했다.
|
||||||
|
|
||||||
@@ -271,3 +275,6 @@ REQ 초안 작성 인계 시점의 확정 플래그와 섹션 참조만 기록
|
|||||||
|
|
||||||
## Approval Correction
|
## Approval Correction
|
||||||
- 2026-07-11 14:30 KST: 사용자 지시에 따라 Discovery 승인자를 `Justin Ko`로 정정했다.
|
- 2026-07-11 14:30 KST: 사용자 지시에 따라 Discovery 승인자를 `Justin Ko`로 정정했다.
|
||||||
|
|
||||||
|
## REQ Split Correction
|
||||||
|
- 2026-07-11 20:56 KST: 사용자 지시에 따라 기존 umbrella `REQ-022 Monthly settlement read-only dashboard`를 삭제하고, dcy-015 범위를 REQ-022~REQ-025 네 개의 작은 REQ로 재분해했다. 분해 이유는 월정산 페이지 1차 범위가 read model, dashboard shell, operational blocker/status, evidence/verification hardening으로 나뉘는 큰 작업이며, 기존 단일 REQ delivery가 implementation worker context-compaction stall로 blocked 되었기 때문이다.
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# REQ-022 Monthly settlement read-model foundation
|
||||||
|
|
||||||
|
- Status: Proposed
|
||||||
|
- Type: Interface
|
||||||
|
- Priority: High
|
||||||
|
- Owner: 렛저장인
|
||||||
|
- Source Discovery: `docs/discovery/dcy-015_20260711_monthly-settlement-page-requirements-wireframe.md`
|
||||||
|
- Source Issues: `#3 [Feature] 월정산 페이지 기능 요구사항 정의`, `#4 [Design] 월정산 페이지 와이어프레임 수준 섹션 설계안`
|
||||||
|
- Depends On: REQ-005, REQ-020, REQ-021
|
||||||
|
- Created At (KST): 2026-07-11 20:56 KST
|
||||||
|
|
||||||
|
## 1. Intent
|
||||||
|
|
||||||
|
Build the internal read-only monthly settlement summary model that later dashboard slices can consume without duplicating formulas in Streamlit UI code.
|
||||||
|
|
||||||
|
## 2. In Scope
|
||||||
|
|
||||||
|
- Parse and validate a target month in `YYYY-MM` form.
|
||||||
|
- Compute the selected month basis date as the KST month end.
|
||||||
|
- Add an application/service-layer read model for monthly settlement summary.
|
||||||
|
- Reuse existing monthly cashflow, budget, uncategorized/review, account/import, and asset snapshot services where available.
|
||||||
|
- Return a structured summary with at least:
|
||||||
|
- selected month and basis date
|
||||||
|
- actual income, actual expense, net cashflow, savings rate
|
||||||
|
- budget overrun count
|
||||||
|
- unresolved blocker count skeleton
|
||||||
|
- source coverage/status fields needed by later UI slices
|
||||||
|
- Add focused tests for month parsing, basis date, empty/synthetic DB behavior, and core summary shape.
|
||||||
|
|
||||||
|
## 3. Out of Scope
|
||||||
|
|
||||||
|
- Streamlit `월정산` page or routing.
|
||||||
|
- Detailed blocker/import/account/asset section UI.
|
||||||
|
- Monthly close persistence, `monthly_settlements` table, transaction locks, MCP tool, or export.
|
||||||
|
|
||||||
|
## 4. Acceptance Criteria
|
||||||
|
|
||||||
|
- AC-1: A service/application entrypoint returns a deterministic monthly settlement summary for a selected month.
|
||||||
|
- AC-2: Invalid month input fails with a clear validation error or documented fallback.
|
||||||
|
- AC-3: Basis date is the selected month end under KST assumptions.
|
||||||
|
- AC-4: KPI values reuse existing service definitions rather than dashboard-local formulas.
|
||||||
|
- AC-5: The returned model is suitable for later Streamlit and MCP extension without exposing raw import payloads or raw local paths.
|
||||||
|
- AC-6: Focused automated tests cover summary shape and at least one synthetic fixture result.
|
||||||
|
- AC-7: `python -m ruff check .` and the relevant pytest slice pass.
|
||||||
|
|
||||||
|
## 5. Notes
|
||||||
|
|
||||||
|
This REQ is the foundation slice split out of the deleted umbrella `REQ-022 Monthly settlement read-only dashboard`.
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
# REQ-022 Monthly settlement read-only dashboard
|
|
||||||
|
|
||||||
- Status: Approved
|
|
||||||
- Type: Interface
|
|
||||||
- Priority: High
|
|
||||||
- Owner: 렛저장인
|
|
||||||
- Source Discovery: `docs/discovery/dcy-015_20260711_monthly-settlement-page-requirements-wireframe.md`
|
|
||||||
- Source Issues: `#3 [Feature] 월정산 페이지 기능 요구사항 정의`, `#4 [Design] 월정산 페이지 와이어프레임 수준 섹션 설계안`
|
|
||||||
- Batch: TBD
|
|
||||||
- Created At (KST): 2026-07-11 14:30 KST
|
|
||||||
- Approved At (KST): 2026-07-11 14:30 KST
|
|
||||||
|
|
||||||
## 1. 배경
|
|
||||||
|
|
||||||
현재 Jarca Ledger에는 월정산에 필요한 개별 기능이 이미 존재한다. `요약` 페이지는 월중 운영 허브를 제공하고, `자산/마감` 페이지는 자산 snapshot preview/close를 제공하며, 확인필요 큐·미분류·잔액대조·import batch·예산 대비 정보도 각각 조회할 수 있다.
|
|
||||||
|
|
||||||
그러나 월말 정산을 위해서는 운영자가 여러 화면을 오가며 순서를 기억해야 한다. 이 REQ는 dcy-015 confirmed 범위에 따라 1차 구현을 **Streamlit dashboard의 read-only checklist/report 월정산 페이지**로 제한하고, 월정산 close 상태 영속화, MCP/finance-agent summary tool, PDF/Excel/Markdown export는 후속 범위로 분리한다.
|
|
||||||
|
|
||||||
## 2. Intent
|
|
||||||
|
|
||||||
월정산을 단순 보고서 모음이 아니라 한 페이지에서 수행하는 운영 검토 흐름으로 제공한다. 사용자는 대상 월을 선택하고, 월말 거래 반영 상태, 정산 전 blocker, 월간 핵심 수치, asset snapshot preview/close 상태, 다음 액션을 한 화면에서 판단할 수 있어야 한다.
|
|
||||||
|
|
||||||
## 3. 범위
|
|
||||||
|
|
||||||
### In Scope
|
|
||||||
|
|
||||||
- Streamlit dashboard에 `월정산` 페이지를 추가한다.
|
|
||||||
- 대상 월 선택(`YYYY-MM`)과 basis date 자동 계산을 제공한다.
|
|
||||||
- 월정산 상태는 1차 범위에서 별도 DB 영속화하지 않고, 기존 데이터에서 read-only로 산출한다.
|
|
||||||
- 기존 service/application layer 계산 정의를 재사용해 내부 summary read model을 구성한다.
|
|
||||||
- 내부 summary read model은 후속 MCP/finance-agent tool 확장이 가능하도록 dashboard 내부에 계산식을 고립시키지 않는다.
|
|
||||||
- 다음 8개 섹션을 기본 정보구조로 구현한다.
|
|
||||||
1. Header / 월 선택
|
|
||||||
2. 월간 핵심 KPI
|
|
||||||
3. 현금흐름 / 지출 구조
|
|
||||||
4. 예산 대비 점검
|
|
||||||
5. 정산 전 검토 Blocker
|
|
||||||
6. 자산 / 순자산 마감 상태
|
|
||||||
7. 월정산 결과 / Evidence
|
|
||||||
8. 다음 액션
|
|
||||||
- `docs/project-structure.md`, `docs/runtime-flows.md`, 필요 시 `docs/interface-contract.md`에 월정산 page/read-model 흐름과 후속 범위 경계를 반영한다.
|
|
||||||
|
|
||||||
### Out of Scope
|
|
||||||
|
|
||||||
- 월정산 close 상태를 저장하는 신규 `monthly_settlements` table 또는 lock/close 엔티티 도입.
|
|
||||||
- 월별 거래 잠금, 장부 확정 후 수정 금지 정책, 자동 스케줄 기반 정산 실행.
|
|
||||||
- MCP/finance-agent-facing monthly settlement summary tool 노출.
|
|
||||||
- PDF/Excel/Markdown export.
|
|
||||||
- 외부 금융기관 자동 잔액 동기화, 세무/법률 회계 리포트, 복식부기 수준 closing engine.
|
|
||||||
- GitHub Project 4 field/status 변경.
|
|
||||||
|
|
||||||
## 4. 기능 요구사항
|
|
||||||
|
|
||||||
### FR-1. 대상 월 선택과 상태 헤더
|
|
||||||
|
|
||||||
- 사용자는 `YYYY-MM` 단위로 정산 월을 선택할 수 있어야 한다.
|
|
||||||
- 기본값은 KST 현재 월이다.
|
|
||||||
- 시스템은 선택 월의 말일을 basis date로 자동 계산해야 한다.
|
|
||||||
- 상단에는 대상 월, basis date, read-only 산출 상태 배지를 표시해야 한다.
|
|
||||||
- 상태 배지는 별도 월정산 close 영속화 없이 기존 snapshot/import/review 데이터를 근거로 산출해야 한다.
|
|
||||||
|
|
||||||
### FR-2. 월간 핵심 KPI
|
|
||||||
|
|
||||||
- 대상 월 기준 실제 수입, 실제 지출, 순현금흐름, 저축률을 표시해야 한다.
|
|
||||||
- 계산 기준은 기존 monthly cashflow 정의와 동일하게 `transactions.transaction_date` 및 `ledger_categories.cashflow_kind`를 사용해야 한다.
|
|
||||||
- 예산 초과 항목 수와 미해결 blocker 수를 함께 표시해야 한다.
|
|
||||||
|
|
||||||
### FR-3. 현금흐름 / 지출 구조
|
|
||||||
|
|
||||||
- 대상 월의 카테고리별 지출 Top N을 표시해야 한다.
|
|
||||||
- 가족 구성원/person별 지출 또는 사용처/카테고리 grouping을 제공해야 한다.
|
|
||||||
- 고정비/변동비 또는 cashflow_kind 기반 구성을 기존 데이터가 허용하는 범위에서 표시해야 한다.
|
|
||||||
- 상세 거래 화면으로 이동할 수 있는 메뉴 안내 또는 CTA를 제공해야 한다.
|
|
||||||
|
|
||||||
### FR-4. 예산 대비 점검
|
|
||||||
|
|
||||||
- 대상 월의 budget vs actual report를 표시해야 한다.
|
|
||||||
- table은 category, subcategory, person, budget, actual, remaining, usage rate, status를 포함해야 한다.
|
|
||||||
- 초과 또는 임박 항목은 시각적으로 구분해야 한다.
|
|
||||||
|
|
||||||
### FR-5. 정산 전 검토 Blocker
|
|
||||||
|
|
||||||
- 상단 요약과 상세 섹션에서 최소 다음 blocker를 표시해야 한다.
|
|
||||||
- 미분류 거래 수
|
|
||||||
- 큰 금액 미분류 거래 수 또는 미분류 금액 합계
|
|
||||||
- 확인필요/이체 검토 pending 수
|
|
||||||
- held/recheck 수
|
|
||||||
- 잔액대조 필요 계좌 수
|
|
||||||
- 최근 import 상태와 `row_count = 0` 또는 rolled_back batch
|
|
||||||
- `stale_valuation`, `missing_last_balance`에 해당하는 자산/계좌 경고
|
|
||||||
- 내부 코드성 경고명은 UI에서 자연어 설명으로 표시해야 한다.
|
|
||||||
- 각 blocker는 관련 상세 페이지로 이동할 수 있는 메뉴 안내 또는 CTA를 제공해야 한다.
|
|
||||||
|
|
||||||
### FR-6. 거래 반영 / import 상태
|
|
||||||
|
|
||||||
- 계좌별 계좌명, 유형, 기관명, 마지막 반영 시각(`last_synced_at`), 마지막 잔액(`last_balance`), 상태 배지를 표시해야 한다.
|
|
||||||
- 상태 배지는 `정상`, `주의`, `갱신 필요`, `잔액 없음` 또는 이에 준하는 사용자 친화 표현을 사용해야 한다.
|
|
||||||
- 최근 import batch 목록은 source, masked filename/provenance summary, imported_at, row_count, status를 표시해야 한다.
|
|
||||||
- import provenance 표시는 REQ-021의 minimal/operator-summary 노출 정책을 따라야 하며 raw local path나 raw payload를 노출하지 않아야 한다.
|
|
||||||
|
|
||||||
### FR-7. 자산 / 순자산 마감 상태
|
|
||||||
|
|
||||||
- 대상 월 basis date 기준 asset snapshot preview 또는 closed snapshot 상태를 표시해야 한다.
|
|
||||||
- 자산 합계, 총부채, 순자산, included/excluded/warnings 요약을 표시해야 한다.
|
|
||||||
- snapshot close 실행 자체는 기존 `자산/마감` workflow와 service를 재사용하며, `월정산` 페이지에서 직접 close write를 추가하는 것은 1차 범위에서 제외한다.
|
|
||||||
- close가 필요한 경우 사용자가 `자산/마감` 페이지로 이동할 수 있는 CTA를 제공해야 한다.
|
|
||||||
|
|
||||||
### FR-8. 월정산 결과 / Evidence와 다음 액션
|
|
||||||
|
|
||||||
- read-only 결과 섹션은 close 가능 조건 pass/fail, 주요 blocker, snapshot 상태, source summary를 표시해야 한다.
|
|
||||||
- 다음 액션 섹션은 다음 달 예산 조정 후보, 반복 미분류/확인필요 rule 후보, 잔액대조/backup/import follow-up을 제안해야 한다.
|
|
||||||
- PDF/Excel/Markdown export는 UI나 backend 구현에 포함하지 않고 후속 범위임을 문서화해야 한다.
|
|
||||||
|
|
||||||
### FR-9. 검증 범위
|
|
||||||
|
|
||||||
- dashboard AppTest 또는 equivalent Streamlit smoke는 `월정산` 페이지가 synthetic fixture DB에서 렌더링되는지 확인해야 한다.
|
|
||||||
- HTTP smoke 또는 browser evidence는 핵심 섹션 heading과 주요 KPI/blocker 표시를 확인해야 한다.
|
|
||||||
- full pytest와 ruff가 통과해야 한다.
|
|
||||||
|
|
||||||
## 5. 비기능 요구사항
|
|
||||||
|
|
||||||
- NFR-1 (계산 일관성): 월정산 페이지의 계산 기준은 기존 service/application layer 정의를 재사용해야 하며 dashboard 내부에서 별도 산식을 중복 구현하지 않는다.
|
|
||||||
- NFR-2 (무부작용): 1차 월정산 페이지는 read-only여야 하며, 월정산 close 영속화나 거래 lock 같은 신규 write side effect를 만들지 않는다.
|
|
||||||
- NFR-3 (확장성): 내부 summary read model은 후속 MCP/finance-agent-facing tool로 확장 가능하도록 application/service boundary에서 구성한다.
|
|
||||||
- NFR-4 (민감정보 보호): import/provenance/evidence 표시는 REQ-021 정책을 따르고 raw path, raw payload, 원본 금융파일 내용을 노출하지 않는다.
|
|
||||||
- NFR-5 (운영성): 내부 코드명(`missing_last_balance`, `stale_valuation` 등)은 사용자에게 자연어 설명과 권장 조치로 표시한다.
|
|
||||||
|
|
||||||
## 6. Acceptance Criteria
|
|
||||||
|
|
||||||
- AC-1: Streamlit sidebar 또는 routing에서 `월정산` 페이지에 접근할 수 있다.
|
|
||||||
- AC-2: 대상 월 선택 시 basis date가 해당 월 말일로 계산되어 표시된다.
|
|
||||||
- AC-3: 대상 월의 실제 수입, 실제 지출, 순현금흐름, 저축률, 예산 초과 항목 수, 미해결 blocker 수가 표시된다.
|
|
||||||
- AC-4: 현금흐름/지출 구조 섹션이 카테고리/person/고정비 또는 동등한 월간 지출 분석을 표시한다.
|
|
||||||
- AC-5: 예산 대비 섹션이 budget, actual, remaining, usage rate, status를 표시하고 초과/임박 항목을 구분한다.
|
|
||||||
- AC-6: 정산 전 검토 Blocker 섹션이 미분류, 확인필요/이체 검토, 보류/재검토, 잔액대조, import, last_balance/valuation 경고를 사용자 친화 문구로 표시한다.
|
|
||||||
- AC-7: 거래 반영/import 상태 섹션이 계좌별 last_synced_at/last_balance 상태와 최근 import batch 상태를 표시하며 raw local path/raw payload를 노출하지 않는다.
|
|
||||||
- AC-8: 자산/순자산 마감 상태 섹션이 asset snapshot preview 또는 closed 상태, 자산 합계, 총부채, 순자산, warnings/excluded 요약을 표시한다.
|
|
||||||
- AC-9: 1차 범위 구현에는 신규 `monthly_settlements` table, 월정산 close persistence, MCP monthly settlement tool, export 기능이 포함되지 않는다.
|
|
||||||
- AC-10: 내부 summary read model 또는 gateway는 후속 MCP 확장을 방해하지 않는 위치에 구성된다.
|
|
||||||
- AC-11: `dashboard` synthetic fixture 기반 AppTest/HTTP smoke 또는 equivalent browser evidence가 `월정산` 페이지 핵심 섹션 렌더링을 검증한다.
|
|
||||||
- AC-12: `docs/project-structure.md`, `docs/runtime-flows.md`, 필요 시 `docs/interface-contract.md`가 월정산 page/read-model 흐름과 후속 범위 경계를 반영한다.
|
|
||||||
- AC-13: `python -m ruff check .`와 `python -m pytest -q`가 통과한다.
|
|
||||||
|
|
||||||
## 7. Impacted Area
|
|
||||||
|
|
||||||
- `dashboard/app.py` 또는 월정산 page module
|
|
||||||
- `jarca_ledger_mcp.adapters.streamlit.*_gateway`
|
|
||||||
- 월정산 summary read model을 둘 application/service module
|
|
||||||
- `tests/test_dashboard_app.py` 및 dashboard HTTP/browser smoke
|
|
||||||
- `docs/project-structure.md`
|
|
||||||
- `docs/runtime-flows.md`
|
|
||||||
- `docs/interface-contract.md` if an internal/external interface contract changes
|
|
||||||
|
|
||||||
## 8. Notes
|
|
||||||
|
|
||||||
- 이 REQ는 dcy-015의 1차 범위만 다룬다.
|
|
||||||
- 월정산 close 영속화, MCP/finance-agent summary tool, PDF/Excel/Markdown export는 후속 Discovery/REQ 후보로 남긴다.
|
|
||||||
- 기존 `자산/마감` 페이지의 asset snapshot close write semantics를 중복 구현하지 않는다.
|
|
||||||
- GitHub Project 4 board field/status 변경은 이 REQ 범위가 아니며, issue #3/#4와 StagePilot 문서 추적을 구현 입력으로 삼는다.
|
|
||||||
|
|
||||||
## 9. Change Log
|
|
||||||
|
|
||||||
- 2026-07-11 14:30 KST: dcy-015 confirmed 범위로 REQ-022 Proposed 초안을 생성했다.
|
|
||||||
- 2026-07-11 14:30 KST: 사용자 승인 범위와 confirm-req 게이트 검토에 따라 Approved로 전환했다.
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# REQ-023 Monthly settlement dashboard shell, KPI, cashflow, and budget sections
|
||||||
|
|
||||||
|
- Status: Proposed
|
||||||
|
- Type: Interface
|
||||||
|
- Priority: High
|
||||||
|
- Owner: 렛저장인
|
||||||
|
- Source Discovery: `docs/discovery/dcy-015_20260711_monthly-settlement-page-requirements-wireframe.md`
|
||||||
|
- Depends On: REQ-022
|
||||||
|
- Created At (KST): 2026-07-11 20:56 KST
|
||||||
|
|
||||||
|
## 1. Intent
|
||||||
|
|
||||||
|
Add the visible Streamlit `월정산` page shell and implement the first user-facing sections that rely on the REQ-022 read model.
|
||||||
|
|
||||||
|
## 2. In Scope
|
||||||
|
|
||||||
|
- Add `월정산` to Streamlit routing/sidebar.
|
||||||
|
- Provide Header / 월 선택 with selected month, basis date, KST timestamp, and read-only status badge.
|
||||||
|
- Render 월간 핵심 KPI: actual income, actual expense, net cashflow, savings rate, budget overrun count, unresolved blocker count.
|
||||||
|
- Render 현금흐름 / 지출 구조 using existing category/person/cashflow groupings where available.
|
||||||
|
- Render 예산 대비 점검 with budget, actual, remaining, usage rate, and status.
|
||||||
|
- Provide user-friendly CTA/menu guidance to existing transaction/budget pages without creating new writes.
|
||||||
|
- Add AppTest coverage for page routing, headings, month selector, and key section rendering.
|
||||||
|
|
||||||
|
## 3. Out of Scope
|
||||||
|
|
||||||
|
- Detailed blocker/import/account/asset status sections.
|
||||||
|
- Evidence/next action section hardening.
|
||||||
|
- Monthly close persistence, MCP tool, or export.
|
||||||
|
|
||||||
|
## 4. Acceptance Criteria
|
||||||
|
|
||||||
|
- AC-1: Streamlit can navigate to `월정산`.
|
||||||
|
- AC-2: The page displays selected month and basis date.
|
||||||
|
- AC-3: KPI, cashflow/spending structure, and budget sections render on the synthetic fixture DB.
|
||||||
|
- AC-4: The UI calls the read-model/gateway seam rather than duplicating core formulas in `dashboard/app.py`.
|
||||||
|
- AC-5: AppTest verifies the core headings and representative KPI/budget content.
|
||||||
|
- AC-6: `python -m ruff check .` and the relevant dashboard tests pass.
|
||||||
|
|
||||||
|
## 5. Notes
|
||||||
|
|
||||||
|
This slice intentionally stops before operational blocker/import/asset sections to keep the first UI delivery small and verifiable.
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
# REQ-024 Monthly settlement operational blockers, import/account, and asset status sections
|
||||||
|
|
||||||
|
- Status: Proposed
|
||||||
|
- Type: Interface
|
||||||
|
- Priority: High
|
||||||
|
- Owner: 렛저장인
|
||||||
|
- Source Discovery: `docs/discovery/dcy-015_20260711_monthly-settlement-page-requirements-wireframe.md`
|
||||||
|
- Depends On: REQ-022, REQ-023
|
||||||
|
- Created At (KST): 2026-07-11 20:56 KST
|
||||||
|
|
||||||
|
## 1. Intent
|
||||||
|
|
||||||
|
Complete the operational checklist half of the 월정산 page: what must be reviewed before the household can treat the selected month as settlement-ready.
|
||||||
|
|
||||||
|
## 2. In Scope
|
||||||
|
|
||||||
|
- Render 정산 전 검토 Blocker section.
|
||||||
|
- Include unresolved counts/status for:
|
||||||
|
- uncategorized transactions
|
||||||
|
- review/cross-transfer pending items
|
||||||
|
- held/recheck items
|
||||||
|
- reconciliation/account attention indicators
|
||||||
|
- missing or stale account/asset balances
|
||||||
|
- Render 거래 반영 / import 상태 section:
|
||||||
|
- account name/type/institution
|
||||||
|
- `last_synced_at`
|
||||||
|
- `last_balance`
|
||||||
|
- user-friendly status badge
|
||||||
|
- recent import batch summary
|
||||||
|
- Render 자산 / 순자산 마감 상태 section:
|
||||||
|
- asset snapshot preview/closed state
|
||||||
|
- assets, liabilities, net worth
|
||||||
|
- warnings/excluded summary
|
||||||
|
- CTA to the existing `자산/마감` page when close action is needed
|
||||||
|
- Respect REQ-021 import provenance and sensitive-data policy.
|
||||||
|
|
||||||
|
## 3. Out of Scope
|
||||||
|
|
||||||
|
- Executing asset snapshot close from the monthly settlement page.
|
||||||
|
- Monthly settlement close persistence or transaction locks.
|
||||||
|
- Export, MCP tool, or finance-agent endpoint.
|
||||||
|
|
||||||
|
## 4. Acceptance Criteria
|
||||||
|
|
||||||
|
- AC-1: Blocker section renders with user-friendly labels, not only internal code names.
|
||||||
|
- AC-2: Import/account status does not expose raw local file paths or raw payloads.
|
||||||
|
- AC-3: Asset status reuses existing asset snapshot service definitions.
|
||||||
|
- AC-4: Each unresolved item type provides a clear existing-page CTA/menu hint.
|
||||||
|
- AC-5: AppTest or equivalent dashboard test covers representative blocker/import/asset rendering.
|
||||||
|
- AC-6: `python -m ruff check .` and relevant pytest/dashboard tests pass.
|
||||||
|
|
||||||
|
## 5. Notes
|
||||||
|
|
||||||
|
This REQ depends on the read model and page shell so it can focus only on operational completeness and sensitive-data boundaries.
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
# REQ-025 Monthly settlement evidence, next actions, documentation, and verification hardening
|
||||||
|
|
||||||
|
- Status: Proposed
|
||||||
|
- Type: Interface
|
||||||
|
- Priority: Medium
|
||||||
|
- Owner: 렛저장인
|
||||||
|
- Source Discovery: `docs/discovery/dcy-015_20260711_monthly-settlement-page-requirements-wireframe.md`
|
||||||
|
- Depends On: REQ-022, REQ-023, REQ-024
|
||||||
|
- Created At (KST): 2026-07-11 20:56 KST
|
||||||
|
|
||||||
|
## 1. Intent
|
||||||
|
|
||||||
|
Harden the 월정산 page as an operator-ready read-only checklist/report by adding evidence/next-action sections and completing docs/smoke verification.
|
||||||
|
|
||||||
|
## 2. In Scope
|
||||||
|
|
||||||
|
- Render 월정산 결과 / Evidence section:
|
||||||
|
- close-ready pass/fail summary
|
||||||
|
- major blockers
|
||||||
|
- snapshot/import/review source summary
|
||||||
|
- explicit note that 월정산 close persistence is not part of the 1차 scope
|
||||||
|
- Render 다음 액션 section:
|
||||||
|
- next-month budget adjustment candidates
|
||||||
|
- repeated uncategorized/review-rule candidates
|
||||||
|
- reconciliation/import/backup follow-up hints
|
||||||
|
- Update documentation:
|
||||||
|
- `docs/project-structure.md`
|
||||||
|
- `docs/runtime-flows.md`
|
||||||
|
- `docs/interface-contract.md` only if an internal/external contract actually changes
|
||||||
|
- Harden dashboard smoke/AppTest/browser evidence for the completed 월정산 page.
|
||||||
|
|
||||||
|
## 3. Out of Scope
|
||||||
|
|
||||||
|
- PDF/Excel/Markdown export.
|
||||||
|
- MCP/finance-agent monthly settlement summary tool.
|
||||||
|
- Monthly close persistence or new `monthly_settlements` table.
|
||||||
|
|
||||||
|
## 4. Acceptance Criteria
|
||||||
|
|
||||||
|
- AC-1: Evidence and next-action sections render with clear read-only wording.
|
||||||
|
- AC-2: Documentation reflects the read model, page flow, and deferred follow-up scope.
|
||||||
|
- AC-3: Dashboard AppTest/HTTP smoke or browser evidence covers the completed page structure.
|
||||||
|
- AC-4: The page remains read-only and introduces no settlement-close writes.
|
||||||
|
- AC-5: `python -m ruff check .` and `python -m pytest -q` pass.
|
||||||
|
|
||||||
|
## 5. Notes
|
||||||
|
|
||||||
|
This is the final hardening slice for the dcy-015 1차 monthly settlement dashboard scope. Export/MCP/close persistence remain separate future REQs.
|
||||||
+7
-4
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
## Next Requirement ID
|
## Next Requirement ID
|
||||||
|
|
||||||
- Current: `REQ-023`
|
- Current: `REQ-026`
|
||||||
- Rule: `Requirement Register`에 있는 가장 큰 REQ 번호보다 정확히 1 커야 한다.
|
- Rule: `Requirement Register`에 있는 가장 큰 REQ 번호보다 정확히 1 커야 한다.
|
||||||
|
|
||||||
## Requirement Register
|
## Requirement Register
|
||||||
@@ -61,7 +61,10 @@
|
|||||||
| REQ-019 | Docker network MCP deployment and operating DB migration | Deployment | Implemented | High | 렛저장인 | [req-019_docker-network-mcp-deployment.md](Deployment/req-019_docker-network-mcp-deployment.md) |
|
| REQ-019 | Docker network MCP deployment and operating DB migration | Deployment | Implemented | High | 렛저장인 | [req-019_docker-network-mcp-deployment.md](Deployment/req-019_docker-network-mcp-deployment.md) |
|
||||||
| REQ-020 | Review decision persistence and reconciliation workbench | Interface | Implemented | High | 렛저장인 | [req-020_review-decision-persistence-reconciliation-workbench.md](Interface/req-020_review-decision-persistence-reconciliation-workbench.md) |
|
| REQ-020 | Review decision persistence and reconciliation workbench | Interface | Implemented | High | 렛저장인 | [req-020_review-decision-persistence-reconciliation-workbench.md](Interface/req-020_review-decision-persistence-reconciliation-workbench.md) |
|
||||||
| REQ-021 | Import provenance and sensitive-data policy | Data | Implemented | High | 렛저장인 | [req-021_import-provenance-sensitive-data-policy.md](Data/req-021_import-provenance-sensitive-data-policy.md) |
|
| REQ-021 | Import provenance and sensitive-data policy | Data | Implemented | High | 렛저장인 | [req-021_import-provenance-sensitive-data-policy.md](Data/req-021_import-provenance-sensitive-data-policy.md) |
|
||||||
| REQ-022 | Monthly settlement read-only dashboard | Interface | Approved | High | 렛저장인 | [req-022_monthly-settlement-read-only-dashboard.md](Interface/req-022_monthly-settlement-read-only-dashboard.md) |
|
| REQ-022 | Monthly settlement read-model foundation | Interface | Proposed | High | 렛저장인 | [req-022_monthly-settlement-read-model-foundation.md](Interface/req-022_monthly-settlement-read-model-foundation.md) |
|
||||||
|
| REQ-023 | Monthly settlement dashboard shell, KPI, cashflow, and budget sections | Interface | Proposed | High | 렛저장인 | [req-023_monthly-settlement-dashboard-shell-kpi-cashflow-budget.md](Interface/req-023_monthly-settlement-dashboard-shell-kpi-cashflow-budget.md) |
|
||||||
|
| REQ-024 | Monthly settlement operational blockers, import/account, and asset status sections | Interface | Proposed | High | 렛저장인 | [req-024_monthly-settlement-operational-blockers-import-account-asset-status.md](Interface/req-024_monthly-settlement-operational-blockers-import-account-asset-status.md) |
|
||||||
|
| REQ-025 | Monthly settlement evidence, next actions, documentation, and verification hardening | Interface | Proposed | Medium | 렛저장인 | [req-025_monthly-settlement-evidence-next-actions-verification-hardening.md](Interface/req-025_monthly-settlement-evidence-next-actions-verification-hardening.md) |
|
||||||
|
|
||||||
## Recent Change Log Summary
|
## Recent Change Log Summary
|
||||||
|
|
||||||
@@ -104,5 +107,5 @@
|
|||||||
- 2026-07-08 11:26 KST: dcy-014 confirmed 범위를 `REQ-021` Proposed 상태로 생성하고 import provenance 및 민감자료 저장 정책 요구사항으로 등록했다.
|
- 2026-07-08 11:26 KST: dcy-014 confirmed 범위를 `REQ-021` Proposed 상태로 생성하고 import provenance 및 민감자료 저장 정책 요구사항으로 등록했다.
|
||||||
- 2026-07-08 11:31 KST: REQ-021을 승인 게이트 검토 후 Approved 상태로 전환했다.
|
- 2026-07-08 11:31 KST: REQ-021을 승인 게이트 검토 후 Approved 상태로 전환했다.
|
||||||
- 2026-07-09 18:46 KST: PR #2 squash merge(`d9182f28`) 및 GitHub Actions/local main verification 근거로 REQ-021을 Implemented 상태로 전환했다.
|
- 2026-07-09 18:46 KST: PR #2 squash merge(`d9182f28`) 및 GitHub Actions/local main verification 근거로 REQ-021을 Implemented 상태로 전환했다.
|
||||||
- 2026-07-11 14:30 KST: dcy-015 confirmed 범위로 REQ-022를 Proposed 상태로 생성하고 월정산 read-only dashboard 요구사항으로 등록했다.
|
- 2026-07-11 14:30 KST: dcy-015 confirmed 범위로 단일 umbrella REQ-022를 생성/승인했으나, delivery 중 구현 worker context-compaction stall이 발생해 범위가 과대함을 확인했다.
|
||||||
- 2026-07-11 14:30 KST: REQ-022를 승인 게이트 검토 후 Approved로 전환했다.
|
- 2026-07-11 20:56 KST: 사용자 지시에 따라 기존 umbrella REQ-022 파일을 삭제하고, dcy-015 범위를 REQ-022~REQ-025 네 개의 Proposed REQ로 재분해했다.
|
||||||
|
|||||||
Reference in New Issue
Block a user