fb309299bf
Made-with: Cursor
7.1 KiB
7.1 KiB
布局升级复杂度评估与实施指南
📊 复杂度评估总结
总体复杂度:⭐⭐⭐☆☆(中等)
为什么是中等复杂度?
✅ 有利因素:
- 你已经有了基础的 CSS 样式系统
- 已经使用了
st.tabs作为主导航 - 已经部分使用了
st.container(border=True)卡片式设计 - 侧边栏已经有 form 结构
- 代码结构相对清晰
⚠️ 需要注意:
- 文件较大(5864行),需要系统化改动
- 有 37 个
st.expander需要评估是否改为 tabs/container - 需要保持功能逻辑不变,只改布局
🎯 推荐方案:方案2 + 方案4 混合
核心改动点
- CSS 增强(30分钟)
- 增强卡片样式
- 优化侧边栏视觉层次
- 统一间距和阴影
- Expander → Container/Tabs 转换(2-3小时)
- 将功能相关的多个 expander 合并为 tabs
- 将单个 expander 改为 container(border=True)
- 保持次要信息用 expander
- 侧边栏优化(30分钟)
- 添加分组容器
- 优化视觉层次
📋 详细实施步骤
阶段 1:CSS 增强(低风险,30分钟)
改动范围:只修改 CSS 部分(第 36-170 行)
具体改动:
/* 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 行):
with st.expander("词库管理", expanded=False):
# 词库编辑和导入导出
改为:
with st.container(border=True):
st.markdown("### 📚 词库管理")
wordbank_tab1, wordbank_tab2 = st.tabs(["编辑词库", "导入/导出"])
with wordbank_tab1:
# 词库编辑代码
with wordbank_tab2:
# 导入导出代码
示例 2:Tab3 中的分析结果
当前代码(多个 expander):
with st.expander("📈 事实密度分析", expanded=False):
# 分析内容
with st.expander("🏗️ 结构化块分析", expanded=False):
# 分析内容
改为:
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 行):
with st.sidebar:
st.header("全局配置")
with st.form("global_config_form"):
# 所有配置项
优化后:
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,保持简洁
- 卡片样式统一,视觉更现代
- 侧边栏分组清晰
⚠️ 注意事项
- 逐步实施:先改 CSS,测试没问题再改布局
- 保持功能:只改布局,不改逻辑
- 测试每个 Tab:改完一个 tab 就测试一次
- 保留 Expander:不是所有 expander 都要改,次要信息保持 expander 更合适
🚀 快速开始
最小改动方案(1小时)
如果时间紧张,可以先做这些:
- 只增强 CSS(30分钟)
- 添加卡片内边距和背景
- 优化侧边栏样式
- 改 3-5 个关键 Expander(30分钟)
- Tab1 的词库管理
- Tab3 的分析结果区域
- 其他明显需要改的
这样就能看到明显改善,后续再逐步完善。
📝 检查清单
实施完成后检查:
- 所有主要功能区域都用 container(border=True) 或 tabs
- 次要信息保持用 expander
- 侧边栏有清晰的分组
- 卡片样式统一(圆角、阴影、内边距)
- 所有功能正常工作
- 响应式布局正常(不同屏幕尺寸)
💡 建议
推荐实施顺序:
- ✅ 先做阶段 1(CSS),立即看到效果
- ✅ 再做阶段 3(侧边栏),改动小风险低
- ✅ 最后做阶段 2(Expander),需要仔细测试
如果遇到问题:
- 先回退到上一个稳定版本
- 逐个 tab 测试,不要一次性改完
- 保留原代码注释,方便对比
🎯 预期效果
实施完成后,你的工具将:
- ✨ 视觉更现代,更像产品级应用
- 🎯 功能组织更清晰,减少滚动疲劳
- 📱 用户体验更好,操作更直观
- 🎨 保持专业感,同时更美观
复杂度总结:中等,但可以分阶段实施,风险可控!