Add ProofLine criteria documentation and Strategy Catalog v1 implementation

- Add acceptance criteria documentation (AC-0013 through AC-0023)
- Add Line-0003 discovery documentation
- Implement Strategy Catalog v1 with new database migration
- Update portfolio API endpoints and schemas
- Refactor strategy and portfolio services
- Add strategy management CLI commands
- Update domain models with strategy catalog support
- Add comprehensive tests for v1 strategies
- Update design documentation (data model, interfaces, runtime flows)
This commit is contained in:
2026-08-15 11:18:31 +09:00
parent 5fc389dea8
commit 6e02d92282
48 changed files with 2114 additions and 393 deletions
+4
View File
@@ -49,6 +49,7 @@ def _make_portfolio(
active_strategy_id: str | None = None,
strategy_name: str | None = None,
strategy_params: dict | None = None,
strategy_revision: int | None = None,
markets: list[str] | None = None,
) -> Portfolio:
return Portfolio(
@@ -69,6 +70,7 @@ def _make_portfolio(
active_strategy_id=active_strategy_id,
strategy_name=strategy_name,
strategy_params=strategy_params if strategy_params is not None else {},
strategy_revision=strategy_revision,
markets=markets if markets is not None else [],
)
@@ -375,6 +377,7 @@ def test_req055_ac1_bound_portfolio_returns_strategy_fields() -> None:
active_strategy_id=_STRATEGY_ID,
strategy_name="tvr_v1",
strategy_params={"target_weight": 0.5, "rebalance_band_pct": 0.05},
strategy_revision=7,
markets=["KRX"],
)
repo = _FakeListRepo(portfolios=[p])
@@ -387,6 +390,7 @@ def test_req055_ac1_bound_portfolio_returns_strategy_fields() -> None:
assert item["active_strategy_id"] == _STRATEGY_ID
assert item["strategy_name"] == "tvr_v1"
assert item["strategy_params"] == {"target_weight": 0.5, "rebalance_band_pct": 0.05}
assert item["strategy_revision"] == 7
def test_req055_ac2_unbound_portfolio_returns_null_strategy() -> None: