# 选股板块菜单重构说明

## 变更日期
2025-10-24

## 变更概述
将 app.py 中的侧边栏菜单从扁平结构重构为**层级结构**，创建"选股板块"分类，并将主力选股功能归入其中。

## 变更动机
- 配合 OpenSpec 中新建的选股板块架构
- 提升菜单的组织性和可扩展性
- 为未来的选股策略（技术面、基本面、量化）预留入口
- 优化用户体验，功能分类更清晰

## 新菜单结构

### 之前（扁平结构）
```
📖 历史记录
📊 实时监测
🎯 主力选股
🎯 智策板块
🎯 智瞰龙虎
📊 持仓分析
🏠 返回首页
⚙️ 环境配置
```

### 现在（层级结构）
```
🏠 单股分析
───────────────
🎯 选股板块 ▼
  ├─ 💰 主力选股
  ├─ 📊 技术面选股（即将推出）
  ├─ 📈 基本面选股（即将推出）
  └─ 🧮 量化选股（即将推出）

📊 策略分析 ▼
  ├─ 🎯 智策板块
  └─ 🐉 智瞰龙虎

💼 投资管理 ▼
  ├─ 📊 持仓分析
  └─ 📡 实时监测
───────────────
📖 历史记录
⚙️ 环境配置
```

## 功能分类说明

### 1. 🏠 单股分析（首页）
- **功能**：对单只股票进行深度AI分析
- **位置**：顶部独立按钮
- **用途**：系统的主要功能入口

### 2. 🎯 选股板块（可展开）
- **功能**：根据不同策略筛选优质股票
- **已实现**：
  - 💰 主力选股：基于主力资金流向的选股策略
- **即将推出**：
  - 📊 技术面选股：基于技术指标和形态分析
  - 📈 基本面选股：基于财务数据和基本面分析
  - 🧮 量化选股：基于量化模型和多因子分析

### 3. 📊 策略分析（可展开）
- **功能**：AI驱动的板块和龙虎榜策略
- **包含**：
  - 🎯 智策板块：板块轮动和行业策略
  - 🐉 智瞰龙虎：龙虎榜深度分析

### 4. 💼 投资管理（可展开）
- **功能**：持仓跟踪与实时监测
- **包含**：
  - 📊 持仓分析：投资组合分析与定时跟踪
  - 📡 实时监测：价格监控与预警提醒

### 5. 📖 历史记录
- **功能**：查看历史分析记录
- **位置**：独立按钮

### 6. ⚙️ 环境配置
- **功能**：系统设置与API配置
- **位置**：独立按钮

## 技术实现

### 使用的 Streamlit 组件
- `st.button()` - 功能按钮
- `st.expander()` - 可展开的分类容器
- `st.markdown()` - 分类说明和未来功能提示

### 代码结构
```python
# 单股分析（首页）
if st.button("🏠 单股分析", ...):
    # 清除所有功能页面标志

# 选股板块
with st.expander("🎯 选股板块", expanded=False):
    if st.button("💰 主力选股", ...):
        st.session_state.show_main_force = True
    # 未来功能提示
    st.markdown("📊 技术面选股 `即将推出`")

# 策略分析
with st.expander("📊 策略分析", expanded=False):
    if st.button("🎯 智策板块", ...):
        ...
    if st.button("🐉 智瞰龙虎", ...):
        ...

# 投资管理
with st.expander("💼 投资管理", expanded=False):
    if st.button("📊 持仓分析", ...):
        ...
    if st.button("📡 实时监测", ...):
        ...
```

## 用户体验优化

### 改进点
1. ✅ **清晰的功能分组**：相关功能归类在一起
2. ✅ **层级化导航**：减少视觉混乱，重点突出
3. ✅ **可展开设计**：节省侧边栏空间
4. ✅ **未来功能预览**：让用户了解系统的发展方向
5. ✅ **图标和提示**：每个按钮都有 emoji 和 help 提示

### 交互特点
- **Expander 默认折叠**：减少初始的视觉复杂度
- **独立的顶级功能**：单股分析作为主功能保持独立
- **灰色文字提示**：未来功能用灰色标记，清晰标明"即将推出"
- **按钮宽度统一**：`width='stretch'` 确保视觉一致性

## 扩展性设计

### 添加新选股策略
当未来实现技术面选股时，只需：

```python
with st.expander("🎯 选股板块", expanded=False):
    # 主力选股（已有）
    if st.button("💰 主力选股", ...):
        st.session_state.show_main_force = True
    
    # 技术面选股（新增）
    if st.button("📊 技术面选股", ...):
        st.session_state.show_technical_selection = True
    
    # 移除"即将推出"标记
    # st.markdown("📊 技术面选股 `即将推出`")
```

### 添加新功能分类
如需添加新的一级分类（如"AI助手"）：

```python
with st.expander("🤖 AI助手", expanded=False):
    st.markdown("**智能问答与投资建议**")
    if st.button("💬 智能问答", ...):
        ...
```

## 注意事项

### Session State 管理
- 每个功能按钮点击时，需要清除其他功能的状态标志
- 使用 `for key in [...]:` 批量清理，避免遗漏

### 按钮 Key 值
- 确保每个按钮的 `key` 参数唯一
- 命名规范：`nav_[功能名]`

### 帮助文本更新
已同步更新帮助信息中的功能说明，反映新的菜单结构。

## 后续工作

### 短期（1-2周）
- [ ] 收集用户反馈，优化菜单交互
- [ ] 根据使用频率调整 expander 默认展开状态
- [ ] 完善各功能的 help 提示文字

### 中期（1-2个月）
- [ ] 实现技术面选股功能
- [ ] 实现基本面选股功能
- [ ] 将"即将推出"改为实际功能入口

### 长期（3-6个月）
- [ ] 实现量化选股功能
- [ ] 根据选股板块总规范，完善所有选股策略
- [ ] 考虑添加选股结果对比功能

## 兼容性说明

### 向后兼容
- ✅ 所有原有功能保持不变
- ✅ Session state 机制保持一致
- ✅ 功能页面调用逻辑未改变

### 数据库兼容
- ✅ 无数据库结构变更
- ✅ 历史数据完全兼容

## 相关文档

- OpenSpec 选股板块规范：`openspec/specs/stock-selection/spec.md`
- OpenSpec 变更提案：`openspec/changes/add-stock-selection-category/proposal.md`
- 主力选股使用指南：`docs/主力选股使用指南.md`
- 主力选股快速开始：`docs/主力选股快速开始.md`

## 总结

此次菜单重构成功将主力选股归入"选股板块"分类，为系统建立了清晰的功能架构。新的层级菜单不仅提升了用户体验，还为未来功能扩展预留了灵活的空间。

---

**更新日期**: 2025-10-24  
**文档版本**: 1.0  
**相关变更**: OpenSpec 选股板块架构建立

