feat: stabilize category rule operations

approve dcy-001 and add REQ/BAT evidence

pass selected DB path through Streamlit rule actions

expose delete_category_rule MCP tool

add category rule deletion regression
This commit is contained in:
Jarca
2026-06-27 00:02:06 +09:00
parent 97115f6acf
commit 0f881b245f
12 changed files with 459 additions and 5 deletions
@@ -0,0 +1,37 @@
# BAT-001 Implementation
## Status
- Status: implemented-qc-passed
- Last Updated (KST): 2026-06-26 23:41
## Changed Files
- `jarca_ledger_mcp/server.py`
- `delete_category_rule(rule_id: str)` MCP tool을 additive 등록했다.
- `dashboard/app.py`
- 분류 규칙 page의 `seed_default_category_rules`, `preview_categorization`, `apply_categorization_rules` 호출이 page-level `db_path`를 전달하도록 수정했다.
- `tests/test_category_rule_filters.py`
- category rule 삭제 성공, 삭제 후 list 제외, missing ID `not_found` regression을 추가했다.
- StagePilot 문서
- `docs/srs/Interface/req-001_category-rule-ops.md`
- `docs/srs/index.md`
- `docs/batches/bat-001_20260626_category-rule-ops/*`
- `docs/batches/index.md`
- `docs/discovery/dcy-001_20260626_streamlit-ux-e2e-categorization-refund-workflows.md`
## Execution Log
- 2026-06-26 23:31 KST: batch-lite 계획 수립.
- 2026-06-26 23:33 KST: MCP delete tool, Streamlit db_path 전달, deletion regression test 구현.
- 2026-06-26 23:36 KST: service/pytest/MCP/Streamlit AppTest smoke 검증 완료.
- 2026-06-26 23:41 KST: 검수관 QC gate `PASS_WITH_NOTES` 확인, blocker 없음.
## Validation During Implementation
- `python -m py_compile jarca_ledger_mcp/*.py dashboard/app.py`: pass.
- `pytest tests/test_category_rule_filters.py`: 3 passed.
- `pytest tests/test_cross_account_transfer_matching.py`: 3 passed.
- `pytest`: 17 passed, 4 skipped.
- `hermes mcp test jarca-ledger`: connected, 41 tools discovered, `delete_category_rule` discovered.
- Streamlit smoke: port 8502 synthetic fixture DB `/tmp/jarca-ledger-bat-001-smoke.sqlite3`; browser tool unavailable because local Chromium snap is not installed, so `streamlit.testing.v1.AppTest` was used. 분류 규칙 page rendered without exceptions; title/subheader/buttons/rule item were visible; preview/apply buttons ran without errors; default 운영 DB mtime unchanged.
## Remaining Risks
- Browser screenshot evidence was not captured because `/usr/bin/chromium-browser` requires the unavailable chromium snap. AppTest + HTTP 200 smoke was used as substitute evidence.
- Import/rollback and cancel/refund workflows remain outside BAT-001 and should be handled by later REQ/BAT.