- 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 通过
22 lines
723 B
Python
22 lines
723 B
Python
"""API 路由聚合。
|
|
|
|
业务路由面向业务对象(AGENT.md §17):/api/stocks /api/factors
|
|
/api/factor-tests /api/backtests /api/experiments(Phase4) /api/jobs(Phase4) /api/agent(Phase5)
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from app.api import agent, experiments, factors, health, jobs, research, selections, stocks
|
|
|
|
api_router = APIRouter()
|
|
api_router.include_router(health.router)
|
|
api_router.include_router(stocks.router)
|
|
api_router.include_router(factors.router)
|
|
api_router.include_router(research.router)
|
|
api_router.include_router(selections.router)
|
|
api_router.include_router(jobs.router)
|
|
api_router.include_router(experiments.router)
|
|
api_router.include_router(agent.router)
|