fix: harden valuation evidence selection
This commit is contained in:
@@ -98,7 +98,23 @@ def record_account_valuation_candidate(conn: sqlite3.Connection, account_id: str
|
||||
basis = normalize_date(basis_date)
|
||||
existing = conn.execute("SELECT * FROM account_valuations WHERE account_id=? AND idempotency_key=?", (account_id, idempotency_key)).fetchone()
|
||||
if existing:
|
||||
return ok(valuation=_valuation(existing), reused=True)
|
||||
incoming = {
|
||||
"basis_date": basis,
|
||||
"amount": int(amount),
|
||||
"currency": (currency or "KRW").upper(),
|
||||
"valuation_kind": "balance",
|
||||
"source_type": source_type,
|
||||
"source_ref": source_ref or "",
|
||||
"verification_status": "unverified",
|
||||
"memo": memo,
|
||||
}
|
||||
if all(existing[key] == value for key, value in incoming.items()):
|
||||
return ok(valuation=_valuation(existing), reused=True)
|
||||
return fail(
|
||||
"idempotency_conflict",
|
||||
"idempotency_key already has a different candidate payload",
|
||||
valuation=_valuation(existing),
|
||||
)
|
||||
valuation_id = new_id("valuation")
|
||||
conn.execute("""INSERT INTO account_valuations
|
||||
(id,account_id,basis_date,amount,currency,valuation_kind,source_type,source_ref,verification_status,recorded_at,memo,idempotency_key)
|
||||
|
||||
Reference in New Issue
Block a user