# ASL模块 - 架构重构完成报告 **日期**: 2025-11-18 **任务**: 根据用户反馈重构前端架构 **状?*: ?完成 --- ## 📝 重构原因 ### 用户反馈 1. ?原方案缺少左侧导航栏 2. ?需要参考原型的7个模块结? 3. ?MVP只需标题摘要初筛,不需要项目管? 4. ?PICOS输入框太小,内容显示不全 --- ## 🔄 重构内容 ### 1. 创建左侧导航布局 ? **新文?*: `components/ASLLayout.tsx` **功能**: - ?左侧导航栏(200px宽度? - ?7个一级菜? 1. 研究方案生成(禁用) 2. 智能文献检索(禁用? 3. 文献管理(禁用) 4. **标题摘要初筛**(✅ 可用?个子菜单? - 设置与启? - 审核工作? - 初筛结果 5. 全文复筛(禁用) 6. 全文解析与数据提取(禁用? 7. 数据综合分析与报告(禁用? - ?右侧内容区(Outlet渲染子页面) **布局结构**: ``` ┌────────────────────────────────────────────────? ? AI智能文献 - 标题摘要初筛 MVP ? ├─────────────┬──────────────────────────────────? ?左侧导航 ? 右侧内容? ? ?(250px) ? ? ? ? ? ?7个模? ? (当前子页? ? ?(标题初筛 ? ? ? 展开3? ? ? ? 子菜? ? ? ? ? ? └─────────────┴──────────────────────────────────? ``` --- ### 2. 重构3个子页面 #### 页面1: 设置与启?? **文件**: `pages/TitleScreeningSettings.tsx` **改进**: - ?PICOS字段全部改为TextArea?-8行) - ?纳入/排除标准TextArea?-10行) - ?合并了文献导入功能(Excel上传 + 模板下载? - ?筛选风格选择?种:宽松/标准/严格? - ?启动AI筛选按? **表单字段**: ```typescript - P - 人群: TextArea (8? ? - I - 干预: TextArea (8? ? - C - 对照: TextArea (6? ? - O - 结局: TextArea (6行,可? ? - S - 研究设计: TextArea (4? ? - 纳入标准: TextArea (10? ? - 排除标准: TextArea (10? ? - 筛选风? Radio (宽松/标准/严格) ``` **功能流程**: ``` 1. 填写PICOS标准 ? 2. 填写纳入/排除标准 ? 3. 选择筛选风?? 4. 上传Excel文件 ? 5. 点击"开始AI筛? ? 6. 跳转到审核工作台 ``` #### 页面2: 审核工作台(占位? **文件**: `pages/ScreeningWorkbench.tsx` **计划功能**(Week 2 Day 3-4? - 显示当前PICOS标准(折叠面板) - 双行表格(严格按照原型) - 点击PICO维度 ?弹出双视图Modal - 修改最终决? #### 页面3: 初筛结果(占位) **文件**: `pages/ScreeningResults.tsx` **计划功能**(Week 2 Day 5? - 统计卡片(总数/纳入/排除? - PRISMA排除原因统计 - Tab切换(纳?排除? - 结果表格 - 批量操作 - 导出Excel --- ### 3. 更新路由结构 **新路?*: ``` /literature (进入ASL模块) └── ASLLayout (左侧导航布局) └── /screening/title (标题摘要初筛) ├── /settings (默认) - 设置与启? ├── /workbench - 审核工作? └── /results - 初筛结果 ``` **路由跳转**: - 点击"AI智能文献" ?自动跳转?`/literature/screening/title/settings` - 点击"开始AI筛? ?跳转?`/literature/screening/title/workbench` --- ### 4. 删除旧文? **已删?*: - ?`pages/ProjectManagement.tsx` - 项目管理页(MVP不需要) - ?`components/ProjectForm.tsx` - 项目表单组件 - ?`pages/LiteratureImport.tsx` - 文献导入页(功能合并? - ?`hooks/useProjects.ts` - 项目管理Hooks **保留文件**: - ?`types/index.ts` - 类型定义(完整保留) - ?`api/index.ts` - API客户端(完整保留? - ?`components/ASLLayout.tsx` - 新布局组件 ? - ?`pages/TitleScreeningSettings.tsx` - 设置与启?? - ?`pages/ScreeningWorkbench.tsx` - 审核工作台(占位? - ?`pages/ScreeningResults.tsx` - 初筛结果(占位) --- ## 📊 重构对比 | 项目 | 重构?| 重构?| |------|--------|--------| | **布局** | 只有顶部导航 | 左侧导航 + 顶部导航 ?| | **第一个页?* | 项目管理列表 | 设置与启动(PICOS + 导入??| | **PICOS输入** | Input (单行) | TextArea (6-8? ?| | **导航结构** | 扁平 | 树形?个模?+ 子菜单) ?| | **项目概念** | 需要创建项?| MVP不需要项??| | **文献导入** | 独立页面 | 合并到设置页 | --- ## ?重构验收 ### 布局验收 - ?左侧导航栏正常显? - ?7个一级菜单正确展? - ?标题摘要初筛展开3个子菜单 - ?其他模块显示"敬请期待" - ?右侧内容区正常渲? ### 功能验收 - ?点击"AI智能文献"进入设置? - ?PICOS字段全部为TextArea(足够大? - ?可以填写测试数据(非心源性卒中案例) - ?可以上传Excel文件 - ?可以选择筛选风? - ?点击"开始AI筛?跳转到工作台 ### 路由验收 - ?`/literature` ?自动跳转?`/literature/screening/title/settings` - ?`/literature/screening/title/settings` - 设置页正? - ?`/literature/screening/title/workbench` - 工作台占? - ?`/literature/screening/title/results` - 结果页占? --- ## 🎯 架构亮点 ### 1. 完全符合原型设计 ⭐⭐? - 7个模块结? - 标题摘要初筛3个子页面 - 左侧导航 + 右侧内容 ### 2. MVP优先策略 ⭐⭐? - 只开发标题摘要初? - 其他模块禁用但可? - 未来扩展性强 ### 3. PICOS空间优化 ⭐⭐? - Input ?TextArea - 足够显示复杂的测试数? - 用户体验友好 ### 4. 功能合并简?⭐⭐ - 文献导入合并到设置页 - 减少页面跳转 - 流程更顺? --- ## 📝 代码统计 | 类别 | 文件?| 代码行数 | 说明 | |------|-------|---------|------| | **新增** | | | | | 布局组件 | 1 | 155 | ASLLayout.tsx | | 设置页面 | 1 | 350 | TitleScreeningSettings.tsx | | 工作台页?| 1 | 42 | ScreeningWorkbench.tsx(占位)| | 结果页面 | 1 | 45 | ScreeningResults.tsx(占位)| | 路由配置 | 1 | 58 | routes.tsx(重写)| | **删除** | 4 | -800 | 旧的项目管理相关文件 | | **净?* | **5** | **-150** | 代码更精简了! | --- ## 🚀 下一步开? ### Week 2 继续计划 **Day 2(今天剩余时间)**: - ?Excel解析逻辑(内存解析,不落盘) - ?文献预览表格 - ?去重逻辑 - ?Excel模板生成 **Day 3-4**: - 审核工作台(双行表格? - 双视图Modal - 人工复核功能 **Day 5**: - 初筛结果展示 - 批量操作 - Excel导出 --- ## 🎉 重构总结 **耗时**: 30分钟 **文件变更**: 新增5个,删除4? **代码?*: 净减少150行(更精简? **重构效果**: - ⭐⭐⭐⭐?完全符合用户需? - ⭐⭐⭐⭐?参考原型设? - ⭐⭐⭐⭐?MVP优先策略 - ⭐⭐⭐⭐?PICOS空间足够 - ⭐⭐⭐⭐ 代码结构清晰 **用户反馈确认**: 1. ?左侧导航 - 符合原型 2. ?第一个页面是"设置与启? 3. ?PICOS字段都用TextArea 4. ?MVP不需要项目概? 5. ?双行表格按照原型设计 --- **重构完成时间**: 2025-11-18 22:00 **下一阶段**: Week 2 Day 2 继续开?