feat(selection): M6.3 选股结果落库 + /api/selections(快照 + 逐候选行)
- domain/repositories/selection.py + SelectionMeta:选股 Repository Protocol
- models/selection.py + migration a6c91d4e7f20:selection_snapshot(查询/统计快照)+
selection_result(逐候选:rank/score/factor_values/filter_status/reason JSON)
- repositories/selection_impl.py:save/get/list_recent(读回重建 SelectionResult)
- api/selections.py:POST /api/selections(同步执行+落库,返回 selection_id+result)、
GET /{id}、GET 列表(as_of/method 过滤);deps 装配 SelectionService/Repo
- config._build_mysql_url:仅编码破坏 URL 结构的字符(修 Alembic configparser 遇 %21 崩)
- 迁移已在 MySQL 应用(alembic head a6c91d4e7f20);tests/test_selections_api.py 4 例
提交→读回一致/404/列表过滤/condition;全量 pytest 通过
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date
|
||||
from datetime import date, datetime
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator, model_validator
|
||||
|
||||
@@ -124,3 +124,13 @@ class SelectionResult(BaseModel):
|
||||
|
||||
|
||||
SelectionQuery.model_rebuild()
|
||||
|
||||
class SelectionMeta(BaseModel):
|
||||
"""选股运行元数据(列表/历史查询用,不含候选明细)。"""
|
||||
|
||||
id: str
|
||||
as_of: date
|
||||
method: str
|
||||
universe_size: int = 0
|
||||
selected: int = 0
|
||||
created_at: datetime | None = None
|
||||
|
||||
Reference in New Issue
Block a user