Files

297 lines
7.1 KiB
Markdown
Raw Permalink Normal View History

# 布局升级复杂度评估与实施指南
## 📊 复杂度评估总结
**总体复杂度:⭐⭐⭐☆☆(中等)**
### 为什么是中等复杂度?
**有利因素**
- 你已经有了基础的 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;
}
```
**风险**:极低,只改样式,不影响功能
---
### 阶段 2Expander 重构(中等风险,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:
# 导入导出代码
```
**示例 2Tab3 中的分析结果**
**当前代码**(多个 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("⚙️ 全局配置")
# 分组 1LLM 配置
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 测试,不要一次性改完
- 保留原代码注释,方便对比
---
## 🎯 预期效果
实施完成后,你的工具将:
- ✨ 视觉更现代,更像产品级应用
- 🎯 功能组织更清晰,减少滚动疲劳
- 📱 用户体验更好,操作更直观
- 🎨 保持专业感,同时更美观
**复杂度总结**:中等,但可以分阶段实施,风险可控!