# 布局升级复杂度评估与实施指南 ## 📊 复杂度评估总结 **总体复杂度:⭐⭐⭐☆☆(中等)** ### 为什么是中等复杂度? ✅ **有利因素**: - 你已经有了基础的 CSS 样式系统 - 已经使用了 `st.tabs` 作为主导航 - 已经部分使用了 `st.container(border=True)` 卡片式设计 - 侧边栏已经有 form 结构 - 代码结构相对清晰 ⚠️ **需要注意**: - 文件较大(5864行),需要系统化改动 - 有 37 个 `st.expander` 需要评估是否改为 tabs/container - 需要保持功能逻辑不变,只改布局 --- ## 🎯 推荐方案:方案2 + 方案4 混合 ### 核心改动点 1. **CSS 增强**(30分钟) - 增强卡片样式 - 优化侧边栏视觉层次 - 统一间距和阴影 2. **Expander → Container/Tabs 转换**(2-3小时) - 将功能相关的多个 expander 合并为 tabs - 将单个 expander 改为 container(border=True) - 保持次要信息用 expander 3. **侧边栏优化**(30分钟) - 添加分组容器 - 优化视觉层次 --- ## 📋 详细实施步骤 ### 阶段 1:CSS 增强(低风险,30分钟) **改动范围**:只修改 CSS 部分(第 36-170 行) **具体改动**: ```css /* 1. 增强卡片样式 */ div[data-testid="stVerticalBlockBorderWrapper"] { border-radius: var(--radius); box-shadow: var(--shadow); padding: 1.5rem !important; /* 新增:内边距 */ background: #FFFFFF !important; /* 新增:白色背景 */ margin-bottom: 1rem !important; /* 新增:卡片间距 */ } /* 2. 优化侧边栏分组 */ section[data-testid="stSidebar"] .stForm { background: #FFFFFF; border-radius: 8px; padding: 1rem; margin-bottom: 1rem; border: 1px solid var(--border); } /* 3. Expander 样式优化(保留但美化) */ .streamlit-expanderHeader { font-weight: 500; color: var(--text); } .streamlit-expanderContent { padding-top: 0.75rem; } /* 4. 增强分隔线 */ hr { border: none; border-top: 1px solid var(--border); margin: 1.5rem 0; } ``` **风险**:极低,只改样式,不影响功能 --- ### 阶段 2:Expander 重构(中等风险,2-3小时) #### 2.1 识别需要改动的 Expander **改为 Tabs 的情况**(功能相关的多个选项): - ✅ Tab1 中的"组合模式选择" + "词库管理" → 可以合并为一个 tabs - ✅ Tab1 中的"智能关键词挖掘"已经有 tabs(保持) - ✅ Tab3 中的多个分析 expander → 可以合并为 tabs **改为 Container 的情况**(主要功能区域): - ✅ Tab1 中的"组合模式选择"区域 → 已经是 container,保持 - ✅ Tab2 中的主要输入区域 → 确保用 container - ✅ Tab3 中的优化结果展示 → 用 container **保留 Expander 的情况**(次要/详细信息): - ✅ "查看技巧说明" → 保持 expander - ✅ "详细评分与改进建议" → 保持 expander - ✅ "预览最后一篇" → 保持 expander #### 2.2 具体改动示例 **示例 1:Tab1 中的词库管理区域** **当前代码**(第 797 行): ```python with st.expander("词库管理", expanded=False): # 词库编辑和导入导出 ``` **改为**: ```python with st.container(border=True): st.markdown("### 📚 词库管理") wordbank_tab1, wordbank_tab2 = st.tabs(["编辑词库", "导入/导出"]) with wordbank_tab1: # 词库编辑代码 with wordbank_tab2: # 导入导出代码 ``` **示例 2:Tab3 中的分析结果** **当前代码**(多个 expander): ```python with st.expander("📈 事实密度分析", expanded=False): # 分析内容 with st.expander("🏗️ 结构化块分析", expanded=False): # 分析内容 ``` **改为**: ```python analysis_tabs = st.tabs(["📈 事实密度", "🏗️ 结构化块", "📝 强化详情"]) with analysis_tabs[0]: with st.container(border=True): # 事实密度分析内容 with analysis_tabs[1]: with st.container(border=True): # 结构化块分析内容 ``` --- ### 阶段 3:侧边栏优化(低风险,30分钟) **当前结构**(第 563-697 行): ```python with st.sidebar: st.header("全局配置") with st.form("global_config_form"): # 所有配置项 ``` **优化后**: ```python with st.sidebar: st.header("⚙️ 全局配置") # 分组 1:LLM 配置 with st.container(border=True): st.markdown("#### 🤖 LLM 配置") with st.form("llm_config_form"): # LLM 相关配置 # 分组 2:品牌信息 with st.container(border=True): st.markdown("#### 🏢 品牌信息") with st.form("brand_config_form"): # 品牌相关配置 # 分组 3:其他设置 with st.container(border=True): st.markdown("#### ⚙️ 其他设置") # 其他配置 ``` --- ## ⏱️ 时间估算 | 阶段 | 任务 | 时间 | 风险 | | ------ | ----------- | --------- | ----- | | 阶段 1 | CSS 增强 | 30分钟 | ⭐ 极低 | | 阶段 2 | Expander 重构 | 2-3小时 | ⭐⭐ 中等 | | 阶段 3 | 侧边栏优化 | 30分钟 | ⭐ 极低 | | **总计** | | **3-4小时** | | --- ## 🎨 改动前后对比 ### 改动前 - 大量 expander 折叠,需要点击展开 - 视觉层次不够清晰 - 卡片样式不统一 ### 改动后 - 主要功能用 tabs,一目了然 - 次要信息用 expander,保持简洁 - 卡片样式统一,视觉更现代 - 侧边栏分组清晰 --- ## ⚠️ 注意事项 1. **逐步实施**:先改 CSS,测试没问题再改布局 2. **保持功能**:只改布局,不改逻辑 3. **测试每个 Tab**:改完一个 tab 就测试一次 4. **保留 Expander**:不是所有 expander 都要改,次要信息保持 expander 更合适 --- ## 🚀 快速开始 ### 最小改动方案(1小时) 如果时间紧张,可以先做这些: 1. **只增强 CSS**(30分钟) - 添加卡片内边距和背景 - 优化侧边栏样式 2. **改 3-5 个关键 Expander**(30分钟) - Tab1 的词库管理 - Tab3 的分析结果区域 - 其他明显需要改的 这样就能看到明显改善,后续再逐步完善。 --- ## 📝 检查清单 实施完成后检查: - 所有主要功能区域都用 container(border=True) 或 tabs - 次要信息保持用 expander - 侧边栏有清晰的分组 - 卡片样式统一(圆角、阴影、内边距) - 所有功能正常工作 - 响应式布局正常(不同屏幕尺寸) --- ## 💡 建议 **推荐实施顺序**: 1. ✅ 先做阶段 1(CSS),立即看到效果 2. ✅ 再做阶段 3(侧边栏),改动小风险低 3. ✅ 最后做阶段 2(Expander),需要仔细测试 **如果遇到问题**: - 先回退到上一个稳定版本 - 逐个 tab 测试,不要一次性改完 - 保留原代码注释,方便对比 --- ## 🎯 预期效果 实施完成后,你的工具将: - ✨ 视觉更现代,更像产品级应用 - 🎯 功能组织更清晰,减少滚动疲劳 - 📱 用户体验更好,操作更直观 - 🎨 保持专业感,同时更美观 **复杂度总结**:中等,但可以分阶段实施,风险可控!