Files
ChouJuGEO/docs/guides/LAYOUT_UPGRADE_GUIDE.md
T
刘国栋 8f7f082c3d feat: 重构项目结构并添加平台同步基础架构
- 重构项目目录结构,将功能模块移至 modules/ 目录
- 创建平台同步基础架构,包括发布器基类和 GitHub 发布器
- 新增 UI 状态管理模块 (modules/ui/state.py) 统一管理会话状态
- 更新依赖配置,添加平台同步所需依赖 (httpx, pyperclip)
- 整理文档结构,将所有文档分类移至 docs/ 目录
- 添加 .cursorrules 文件定义项目开发规范
- 清理根目录重复文件,保持项目结构整洁
2026-01-30 10:21:29 +08:00

7.0 KiB
Raw Blame 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 行)

具体改动

/* 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 具体改动示例

示例 1Tab1 中的词库管理区域

当前代码(第 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:
        # 导入导出代码

示例 2Tab3 中的分析结果

当前代码(多个 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("⚙️ 全局配置")
    
    # 分组 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. 只增强 CSS30分钟)

    • 添加卡片内边距和背景
    • 优化侧边栏样式
  2. 改 3-5 个关键 Expander30分钟)

    • Tab1 的词库管理
    • Tab3 的分析结果区域
    • 其他明显需要改的

这样就能看到明显改善,后续再逐步完善。


📝 检查清单

实施完成后检查:

  • 所有主要功能区域都用 container(border=True) 或 tabs
  • 次要信息保持用 expander
  • 侧边栏有清晰的分组
  • 卡片样式统一(圆角、阴影、内边距)
  • 所有功能正常工作
  • 响应式布局正常(不同屏幕尺寸)

💡 建议

推荐实施顺序

  1. 先做阶段 1CSS),立即看到效果
  2. 再做阶段 3(侧边栏),改动小风险低
  3. 最后做阶段 2(Expander),需要仔细测试

如果遇到问题

  • 先回退到上一个稳定版本
  • 逐个 tab 测试,不要一次性改完
  • 保留原代码注释,方便对比

🎯 预期效果

实施完成后,你的工具将:

  • 视觉更现代,更像产品级应用
  • 🎯 功能组织更清晰,减少滚动疲劳
  • 📱 用户体验更好,操作更直观
  • 🎨 保持专业感,同时更美观

复杂度总结:中等,但可以分阶段实施,风险可控!