llm-quant/docs/architecture/business_logic_healthcheck.md

51 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 业务逻辑体检报告
本报告梳理当前端到端业务链路,并标注出影响可维护性与扩展性的关键风险点,供后续重构排期参考。
## 端到端链路速览
- **数据采集与健康巡检**:命令行入口 `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`,可在后续迭代中缓存快照或拆分环境状态以进一步加速。
## 优先级建议
1. **完善采集流水线的任务编排**(高优先级)
现已拆分 API/覆盖/编排层,建议继续将因子计算与其它后置动作放入独立任务队列,便于并发执行与重试。
2. **解耦 DataBroker 的派生职责**(中高优先级)
将行业、情绪、派生指标等逻辑抽出为独立服务,保留 DataBroker 专注于字段解析与缓存;同步补充更细粒度的单元测试。
3. **推广特征快照到部门代理**(中优先级)
目前因子与回测已复用 `FeatureSnapshotService`,建议在 LLM 部门工具调用中也接入统一快照,降低重复 SQL。
4. **补齐 DecisionWorkflow 测试与监控**(中优先级)
`DecisionWorkflow` 各阶段编写单元/集成测试,并将风险评审与信念修正暴露在监控面板中,便于审计。
5. **建立性能与回归基线**(低优先级)
构造包含快照缓存的基准数据集,度量因子计算和回测的时延,对后续优化提供数据支持。
以上建议可依次推进,亦可按业务优先级穿插执行。