feat: consolidate ledger trade writes into portfolio_ledger

- add ledger consolidation migration and remove ledger_trades usage
- return portfolio state after v1 ledger trade writes
- deprecate legacy buy/sell endpoints with deprecation headers
- add BAT-016, DCY-006, and REQ-036~038 documentation
- update repository models and tests for unified ledger entries
This commit is contained in:
2026-06-05 20:55:24 +09:00
parent 2470c0a00c
commit 44f2102d26
23 changed files with 1254 additions and 115 deletions
+4 -4
View File
@@ -9,7 +9,7 @@ from unittest.mock import MagicMock, patch
from fastapi.testclient import TestClient
from app.core.config import Settings, get_settings
from app.domain.models import LedgerTrade, Portfolio, TokenPrincipal
from app.domain.models import LedgerEntry, Portfolio, TokenPrincipal
from app.main import create_app
_ENC_KEY = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
@@ -55,7 +55,7 @@ def _make_portfolio(
)
def _make_trade(**kwargs) -> LedgerTrade:
def _make_trade(**kwargs) -> LedgerEntry:
defaults = dict(
ledger_entry_id=1,
portfolio_id=_PORTFOLIO_ID,
@@ -70,14 +70,14 @@ def _make_trade(**kwargs) -> LedgerTrade:
recorded_at=datetime(2026, 5, 1, 1, 0, 0, tzinfo=timezone.utc),
)
defaults.update(kwargs)
return LedgerTrade(**defaults)
return LedgerEntry(**defaults)
def _make_service_repo(
*,
daemon_id: str | None = _DAEMON_ID,
portfolio: Portfolio | None = None,
trade: LedgerTrade | None = None,
trade: LedgerEntry | None = None,
created: bool = True,
) -> MagicMock:
repo = MagicMock()