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
@@ -11,7 +11,7 @@ from fastapi.testclient import TestClient
from app.core.auth import AuthContext, Permission
from app.core.config import Settings, get_settings
from app.domain.models import AuthToken, BrokerCredential, Portfolio, TokenPrincipal, User, LedgerTrade
from app.domain.models import AuthToken, BrokerCredential, Portfolio, TokenPrincipal, User, LedgerEntry
from app.main import create_app
@@ -356,7 +356,7 @@ def _trade_payload(**overrides) -> dict:
return base
def _make_ledger_trade(**kwargs) -> LedgerTrade:
def _make_ledger_trade(**kwargs) -> LedgerEntry:
defaults = dict(
ledger_entry_id=1,
portfolio_id="005930",
@@ -371,7 +371,7 @@ def _make_ledger_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_ledger_principal() -> TokenPrincipal:
@@ -381,7 +381,7 @@ def _make_ledger_principal() -> TokenPrincipal:
)
def _make_mock_repo_for_ledger(monkeypatch, trade: LedgerTrade, created: bool, found: bool = True) -> MagicMock:
def _make_mock_repo_for_ledger(monkeypatch, trade: LedgerEntry, created: bool, found: bool = True) -> MagicMock:
settings = _make_app_db(monkeypatch)
mock_repo = MagicMock()
mock_repo.get_token_principal.return_value = _make_ledger_principal()