根据项目记忆中的分层架构设计规范和同花顺功能模块组织规范,我们已经完成了多步骤选股系统的模块化重构。本次重构将原来庞大的单一文件拆分为多个独立的模块,提高了系统的可维护性和扩展性。
- 模块分离:将同花顺技术分析和传统选股流程完全分离
- 分层架构:遵循工作流控制、业务服务、数据结构分离的原则
- 功能隔离:采用Tab页面确保同花顺功能与其他模块功能互不影响
- 代码可维护性:大幅减少代码重复,提高可读性
| 方面 | 重构前 | 重构后 |
|---|---|---|
| 代码行数 | ~4100行单文件 | 多个文件,每个<500行 |
| 功能耦合 | 高耦合,难以维护 | 低耦合,模块独立 |
| 扩展难度 | 困难 | 简单 |
| 测试便利性 | 复杂 | 模块化测试 |
| 团队协作 | 冲突频繁 | 并行开发 |
src/ui/pages/
├── main_app.py # 原始文件(保留向后兼容)
├── main_app_refactored.py # 新的主入口文件
├── workflow_page.py # 多步骤选股流程页面
├── ths_analysis_page.py # 同花顺技术分析页面
├── decision_support.py # 决策支持页面(共享)
└── __init__.py # 更新的模块导入
- 职责:统一入口和导航管理
- 特点:使用Tab页面隔离不同功能模块
- 符合规范:同花顺功能模块组织规范
- 职责:四步式传统量化选股流程
- 步骤:热点板块挖掘 → 强势个股筛选 → 多维度精细选股 → 人工盯盘决策
- 特点:基于经典技术分析和基本面分析
- 职责:基于同花顺数据的专业技术分析
- 步骤:板块技术分析 → 热点板块筛选 → 多时间框架分析 → 综合分析报告
- 特点:专业数据源,高级技术指标
# 直接运行重构版本
python run_main_app_refactored.py
# 或使用streamlit
streamlit run run_main_app_refactored.py# 使用新的重构版本
from src.ui.pages import create_main_app_page_refactored
app = create_main_app_page_refactored()
app.render()
# 或直接运行
from src.ui.pages import run_main_app_refactored
run_main_app_refactored()# 原有代码仍然可以工作(向后兼容)
from src.ui.pages import create_main_app_page, run_main_app
app = create_main_app_page() # 现在会自动使用重构版本
app.render()重构版本已经可以立即使用,提供了基本的页面框架和导航。
原有的会话状态和缓存数据会自动兼容,无需手动迁移。
阶段1:基础框架(已完成)
- ✅ 主入口页面重构
- ✅ Tab页面分离
- ✅ 基础导航和状态管理
阶段2:核心功能迁移(进行中)
- 🔄 多步骤选股流程功能迁移
- 🔄 同花顺技术分析功能迁移
- 🔄 共享组件优化
阶段3:高级功能(计划中)
- ⏳ 高级缓存管理
- ⏳ 性能优化
- ⏳ 用户个性化设置
# 在 workflow_page.py 中
def _render_step5_new_feature(self):
"""渲染步骤5:新功能"""
st.markdown("## 🆕 步骤5:新功能")
# 功能实现# 在 ths_analysis_page.py 中
def _render_new_analysis_mode(self):
"""渲染新分析模式"""
st.markdown("## 📊 新分析模式")
# 分析实现对于两个模块都需要的功能,应该放在共享组件中:
# 在 src/ui/components/ 中创建新组件
class SharedAnalysisComponent:
def render_common_analysis(self):
# 共享分析功能
pass- 单一职责原则:每个模块只负责一个具体功能
- 开闭原则:对扩展开放,对修改关闭
- 分层架构:清晰的工作流控制、业务服务、数据结构分离
- 模块隔离:同花顺功能与传统功能完全隔离
- 会话级缓存:用户会话期间的临时数据
- 步骤间缓存:遵循多步骤选股缓存传递规范
- 跨模块缓存:共享的基础数据(如股票列表)
# 传统选股流程状态
st.session_state.current_step # 当前步骤
st.session_state.hot_sectors_result # 热点板块结果
st.session_state.strong_stocks_result # 强势个股结果
# 同花顺技术分析状态
st.session_state.ths_current_step # 同花顺当前步骤
st.session_state.ths_sector_analysis_result # 板块分析结果
st.session_state.ths_analysis_results # 技术分析结果Q1: 启动时提示模块导入失败
# 确保项目路径正确
export PYTHONPATH="${PYTHONPATH}:/path/to/project"Q2: 页面显示不完整
- 检查是否有缺失的依赖
- 确认网络连接正常
- 查看控制台错误日志
Q3: 数据不显示
- 检查TuShare配置
- 验证API Token有效性
- 查看日志中的具体错误信息
- 启用详细日志
import logging
logging.basicConfig(level=logging.DEBUG)- 使用调试模式
# 在页面中添加调试信息
if st.checkbox("显示调试信息"):
st.json(st.session_state.__dict__)- 模块按需加载:只加载当前使用的模块
- 智能缓存:合理的缓存策略减少重复计算
- 异步处理:非阻塞的数据获取
# 使用内置的性能监控
from src.utils.performance import log_performance
@log_performance()
def your_function():
# 函数实现
pass- 完成所有核心功能的迁移
- 优化用户界面体验
- 增加更多调试和监控功能
- 实现高级缓存管理
- 添加用户个性化设置
- 支持更多数据源集成
- 实现完全的微服务架构
- 支持插件式功能扩展
- 引入AI驱动的智能分析
如果在使用过程中遇到问题或有改进建议,请:
- 查看本文档的故障排除部分
- 检查系统日志获取详细错误信息
- 提供具体的错误描述和复现步骤
- ✅ 完成模块化重构
- ✅ 实现Tab页面分离
- ✅ 添加向后兼容性支持
- ✅ 创建独立的启动脚本
注意:本重构完全遵循项目记忆中的架构规范和组织规范,确保了系统的长期可维护性和扩展性。