4.1 KiB
4.1 KiB
业务逻辑体检报告
本报告梳理当前端到端业务链路,并标注出影响可维护性与扩展性的关键风险点,供后续重构排期参考。
端到端链路速览
- 数据采集与健康巡检:命令行入口
scripts/run_ingestion_job.py通过编排层app/ingest/tushare.py,调用app/ingest/api_client.py与app/ingest/coverage.py完成 TuShare 拉数、数据补齐与指标巡检。 - 数据接入与覆盖治理:
DataBroker(app/utils/data_access.py) 负责字段解析、缓存、派生指标,自动补数由可注入的coverage_runner承担;批量快照能力由FeatureSnapshotService(app/utils/feature_snapshots.py) 暴露给上层。 - 因子与特征加工:
compute_factors系列 (app/features/factors.py) 借助批量快照与分批校验,输出持久化特征供代理与回测消费。 - 多智能体决策:
DecisionWorkflow(app/agents/game.py) 将议程控制、部门投票、风险审查、执行总结拆分为可维护的阶段,驱动规则代理与部门 LLM 协同。 - 回测与调参与强化学习:
BacktestEngine.load_market_data(app/backtest/engine.py) 使用批量快照聚合特征,DecisionEnv(app/backtest/decision_env.py) 暴露 RL 行为接口。 - 可视化与运营面板:Streamlit 入口
app/ui/streamlit_app.py:14-120触发数据库初始化、自动补数与多页可视化,消费上述链路的产物。
主要发现
1. 数据采集模块拆分完成但仍需扩展
- 采集 orchestrator 已收敛在
app/ingest/tushare.py,API 调用与覆盖校验分别由app/ingest/api_client.py、app/ingest/coverage.py承担,后续可考虑将因子计算改为显式队列任务。 run_ingestion通过post_tasks钩子触发默认因子回填,方便引入异步或多阶段处理策略。
2. 数据访问层职责下沉但仍偏厚重
DataBroker引入可注入的coverage_runner与批量缓存接口,不过派生指标、行业分析仍集中在同一类,可进一步拆分至子组件。- 自动补数与覆盖统计改为显式依赖
app/ingest/coverage.py,消除了懒加载带来的环状依赖风险。
3. 因子流水线新增批量快照
FeatureSnapshotService批量预取最新字段,compute_factors改为按批拼装特征并共用缓存,减少了重复 SQL。- 校验与进度汇报依旧集中在
_compute_batch_factors,后续可继续剥离统计与写库逻辑以优化测试粒度。
4. 多智能体决策流程模块化
DecisionWorkflow将部门投票、风险审查、执行总结拆分为独立方法,便于插桩和单元测试。- 部门代理仍直接访问
DataBroker,后续可对接FeatureSnapshotService或数据域策略,统一数据获取边界。
5. 回测链路复用批量特征
BacktestEngine.load_market_data与因子流水线共用快照服务,避免重复的最新值查询。- 强化学习环境仍按日重新构造
BacktestEngine,可在后续迭代中缓存快照或拆分环境状态以进一步加速。
优先级建议
-
完善采集流水线的任务编排(高优先级)
现已拆分 API/覆盖/编排层,建议继续将因子计算与其它后置动作放入独立任务队列,便于并发执行与重试。 -
解耦 DataBroker 的派生职责(中高优先级)
将行业、情绪、派生指标等逻辑抽出为独立服务,保留 DataBroker 专注于字段解析与缓存;同步补充更细粒度的单元测试。 -
推广特征快照到部门代理(中优先级)
目前因子与回测已复用FeatureSnapshotService,建议在 LLM 部门工具调用中也接入统一快照,降低重复 SQL。 -
补齐 DecisionWorkflow 测试与监控(中优先级)
为DecisionWorkflow各阶段编写单元/集成测试,并将风险评审与信念修正暴露在监控面板中,便于审计。 -
建立性能与回归基线(低优先级)
构造包含快照缓存的基准数据集,度量因子计算和回测的时延,对后续优化提供数据支持。
以上建议可依次推进,亦可按业务优先级穿插执行。