feat: persist review workbench decisions (#1)
Merge dcy-012 / REQ-020 / BAT-016 implementation after green CI.
This commit is contained in:
@@ -11,8 +11,10 @@ from .shared import (
|
||||
normalize_snapshot_at,
|
||||
now_iso,
|
||||
ok,
|
||||
row_to_dict,
|
||||
sqlite3,
|
||||
)
|
||||
from .review_decision_service import _fetch_latest_decisions
|
||||
|
||||
|
||||
def _transaction_signed_amount(tx_type: str, amount: int) -> int:
|
||||
@@ -72,6 +74,13 @@ def get_balance_reconciliation_report(account_id: str = "", baseline_balance: in
|
||||
clauses.append(f"statement_status IN ({placeholders})")
|
||||
params.extend(sorted(RECONCILIATION_TARGET_STATUSES))
|
||||
accounts = conn.execute(f"SELECT * FROM accounts WHERE {' AND '.join(clauses)} ORDER BY name", params).fetchall()
|
||||
account_targets = [("reconciliation_account", account["id"]) for account in accounts]
|
||||
latest_decisions = _fetch_latest_decisions(conn, account_targets)
|
||||
session_rows = conn.execute("SELECT * FROM reconciliation_sessions ORDER BY basis_date DESC, updated_at DESC").fetchall()
|
||||
latest_sessions: dict[str, dict[str, Any]] = {}
|
||||
for row in session_rows:
|
||||
session = row_to_dict(row)
|
||||
latest_sessions.setdefault(session["account_id"], session)
|
||||
items: list[dict[str, Any]] = []
|
||||
for account in accounts:
|
||||
effective_baseline = baseline_balance_int if baseline_balance_int is not None else account["last_balance"]
|
||||
@@ -99,6 +108,9 @@ def get_balance_reconciliation_report(account_id: str = "", baseline_balance: in
|
||||
"difference_ratio": ratio,
|
||||
"status": status,
|
||||
"recommended_decisions": ["계좌이동", "실지출", "실수입", "투자이동", "분석제외", "확인필요"] if status == "REVIEW_NEEDED" else [],
|
||||
"reconciliation_session": latest_sessions.get(account["id"]),
|
||||
"review_status": latest_decisions.get(("reconciliation_account", account["id"]), {}).get("status", "pending"),
|
||||
"review_decision": latest_decisions.get(("reconciliation_account", account["id"])),
|
||||
"source_note": source_note,
|
||||
"memo": memo,
|
||||
**calc,
|
||||
|
||||
Reference in New Issue
Block a user