fix corporate action replay and trade filtering

This commit is contained in:
2026-09-13 14:17:32 +09:00
parent cb19c35d23
commit 925c6b4fa4
3 changed files with 20 additions and 2 deletions
+16 -1
View File
@@ -1637,6 +1637,21 @@ class PostgresPortfolioRepository:
row = cur.fetchone()
if row is None:
raise ValueError("portfolio not found")
cur.execute("SELECT corporate_action_id, portfolio_id, asset_id, action_type, effective_date, actor_user_id, evidence_ref, idempotency_key, payload_hash, quantity_before, quantity_after, average_price_before, average_price_after, total_cost_basis, cash_balance, profit_buffer, ledger_entry_id, recorded_at FROM portfolio_corporate_actions WHERE portfolio_id=%s AND idempotency_key=%s", (portfolio_id, idempotency_key))
prior = cur.fetchone()
if prior:
if prior[8] != payload_hash:
raise ValueError("IDEMPOTENCY_KEY_REUSE")
(action.corporate_action_id, action.portfolio_id, action.asset_id, action.action_type,
action.effective_date, action.actor_user_id, action.evidence_ref,
action.idempotency_key, action.payload_hash, action.quantity_before,
action.quantity_after, action.average_price_before, action.average_price_after,
action.total_cost_basis, action.cash_balance, action.profit_buffer,
ledger_id, action.recorded_at) = prior
action.corporate_action_id = str(action.corporate_action_id)
action.ledger_entry_id = int(ledger_id)
action.idempotent_replay = True
return action
if row[4] != "enabled":
raise ValueError("CORPORATE_ACTION_PORTFOLIO_DISABLED")
if row[3] != action.asset_id:
@@ -1720,7 +1735,7 @@ class PostgresPortfolioRepository:
boundaries (start of day / start of next day).
"""
self.ensure_schema()
clauses = ["portfolio_id = %s"]
clauses = ["portfolio_id = %s", "side IN ('buy','sell')"]
params: list[object] = [portfolio_id]
if date is not None: