fix(ledger): split dividend response schema and harden decimal tests

Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-09-09 13:21:24 +00:00
committed by GitHub
co-authored by genichin
parent d3601d32dc
commit e261a41b7f
4 changed files with 120 additions and 37 deletions
+53 -7
View File
@@ -219,12 +219,33 @@ class ManualLedgerRequest(BaseModel):
class ManualLedgerResponse(BaseModel):
ledger_entry_id: int
portfolio_id: str
action: str
amount: float | Decimal | None = None
action: Literal["INVEST", "BUFFER_OUT", "BUFFER_IN", "WITHDRAW", "PROFIT", "BUY", "SELL", "REVERSAL"]
amount: float | None = None
quantity: float = 0.0
price: float = 0.0
fee: float = 0.0
tax: float | Decimal = 0.0
tax: float = 0.0
executed_at: datetime | None = None
note: str = ""
recorded_at: datetime | None = None
cash_balance_after: float = 0.0
asset_quantity_after: float = 0.0
profit_buffer_after: float = 0.0
total_value_after: float = 0.0
source: str = "manual"
target_ledger_entry_id: int | None = None
confirmation_evidence: str | None = None
class DividendManualLedgerResponse(BaseModel):
ledger_entry_id: int
portfolio_id: str
action: Literal["DIVIDEND"]
amount: str
quantity: float = 0.0
price: float = 0.0
fee: float = 0.0
tax: str = "0"
executed_at: datetime | None = None
note: str = ""
recorded_at: datetime | None = None
@@ -238,7 +259,7 @@ class ManualLedgerResponse(BaseModel):
class ManualLedgerHistoryResponse(BaseModel):
items: list[ManualLedgerResponse]
items: list[ManualLedgerResponse | DividendManualLedgerResponse]
total: int
@@ -254,10 +275,35 @@ class LedgerHistoryItem(BaseModel):
order_id: str | None = None
execution_id: str | None = None
quantity: float | None = None
amount: float | Decimal | None = None
amount: float | None = None
price: float | None = None
fee_amount: float | None = None
tax_amount: float | Decimal | None = None
tax_amount: float | None = None
note: str | None = None
cash_balance_after: float | None = None
asset_quantity_after: float | None = None
profit_buffer_after: float | None = None
total_value_after: float | None = None
target_ledger_entry_id: int | None = None
confirmation_evidence: str | None = None
class DividendLedgerHistoryItem(BaseModel):
"""Source-neutral, owner-visible ledger fact for GET /ledger."""
ledger_entry_id: int
portfolio_id: str
source: str
action: Literal["DIVIDEND"]
recorded_at: datetime
executed_at: datetime | None = None
order_id: str | None = None
execution_id: str | None = None
quantity: float | None = None
amount: str
price: float | None = None
fee_amount: float | None = None
tax_amount: str | None = None
note: str | None = None
cash_balance_after: float | None = None
asset_quantity_after: float | None = None
@@ -268,7 +314,7 @@ class LedgerHistoryItem(BaseModel):
class LedgerHistoryResponse(BaseModel):
items: list[LedgerHistoryItem]
items: list[LedgerHistoryItem | DividendLedgerHistoryItem]
next_cursor: str | None = None