Skip to content

Latest commit

 

History

History
268 lines (199 loc) · 7.27 KB

File metadata and controls

268 lines (199 loc) · 7.27 KB

多步骤选股系统模块化重构指南

📖 概述

根据项目记忆中的分层架构设计规范和同花顺功能模块组织规范,我们已经完成了多步骤选股系统的模块化重构。本次重构将原来庞大的单一文件拆分为多个独立的模块,提高了系统的可维护性和扩展性。

🎯 重构目标

✅ 已完成的改进

  1. 模块分离:将同花顺技术分析和传统选股流程完全分离
  2. 分层架构:遵循工作流控制、业务服务、数据结构分离的原则
  3. 功能隔离:采用Tab页面确保同花顺功能与其他模块功能互不影响
  4. 代码可维护性:大幅减少代码重复,提高可读性

📊 重构前后对比

方面 重构前 重构后
代码行数 ~4100行单文件 多个文件,每个<500行
功能耦合 高耦合,难以维护 低耦合,模块独立
扩展难度 困难 简单
测试便利性 复杂 模块化测试
团队协作 冲突频繁 并行开发

🏗️ 新架构结构

📁 文件组织

src/ui/pages/
├── main_app.py                    # 原始文件(保留向后兼容)
├── main_app_refactored.py         # 新的主入口文件
├── workflow_page.py               # 多步骤选股流程页面
├── ths_analysis_page.py           # 同花顺技术分析页面
├── decision_support.py            # 决策支持页面(共享)
└── __init__.py                    # 更新的模块导入

🔧 核心模块说明

1. MainAppPageRefactored - 主入口

  • 职责:统一入口和导航管理
  • 特点:使用Tab页面隔离不同功能模块
  • 符合规范:同花顺功能模块组织规范

2. MultiStepWorkflowPage - 传统选股流程

  • 职责:四步式传统量化选股流程
  • 步骤:热点板块挖掘 → 强势个股筛选 → 多维度精细选股 → 人工盯盘决策
  • 特点:基于经典技术分析和基本面分析

3. THSTechnicalAnalysisPage - 同花顺技术分析

  • 职责:基于同花顺数据的专业技术分析
  • 步骤:板块技术分析 → 热点板块筛选 → 多时间框架分析 → 综合分析报告
  • 特点:专业数据源,高级技术指标

🚀 使用方法

方法一:使用重构版本(推荐)

# 直接运行重构版本
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

🔍 技术细节

遵循的设计原则

  1. 单一职责原则:每个模块只负责一个具体功能
  2. 开闭原则:对扩展开放,对修改关闭
  3. 分层架构:清晰的工作流控制、业务服务、数据结构分离
  4. 模块隔离:同花顺功能与传统功能完全隔离

缓存策略

  • 会话级缓存:用户会话期间的临时数据
  • 步骤间缓存:遵循多步骤选股缓存传递规范
  • 跨模块缓存:共享的基础数据(如股票列表)

状态管理

# 传统选股流程状态
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有效性
  • 查看日志中的具体错误信息

调试技巧

  1. 启用详细日志
import logging
logging.basicConfig(level=logging.DEBUG)
  1. 使用调试模式
# 在页面中添加调试信息
if st.checkbox("显示调试信息"):
    st.json(st.session_state.__dict__)

📈 性能优化

已实现的优化

  1. 模块按需加载:只加载当前使用的模块
  2. 智能缓存:合理的缓存策略减少重复计算
  3. 异步处理:非阻塞的数据获取

性能监控

# 使用内置的性能监控
from src.utils.performance import log_performance

@log_performance()
def your_function():
    # 函数实现
    pass

🔮 未来规划

短期计划(1-2周)

  • 完成所有核心功能的迁移
  • 优化用户界面体验
  • 增加更多调试和监控功能

中期计划(1-2月)

  • 实现高级缓存管理
  • 添加用户个性化设置
  • 支持更多数据源集成

长期计划(3-6月)

  • 实现完全的微服务架构
  • 支持插件式功能扩展
  • 引入AI驱动的智能分析

📞 支持与反馈

如果在使用过程中遇到问题或有改进建议,请:

  1. 查看本文档的故障排除部分
  2. 检查系统日志获取详细错误信息
  3. 提供具体的错误描述和复现步骤

📝 更新日志

v1.0 (2025-10-10)

  • ✅ 完成模块化重构
  • ✅ 实现Tab页面分离
  • ✅ 添加向后兼容性支持
  • ✅ 创建独立的启动脚本

注意:本重构完全遵循项目记忆中的架构规范和组织规范,确保了系统的长期可维护性和扩展性。