# Design: 首页布局升级优化 ## Context 当前首页(index.html)需要按照最新原型进行全面升级,涉及多个新组件的添加和现有组件的修改。本次升级主要目标是提升调解员工作效率,通过可视化展示关键信息。 **原型参考**: `document/原型/index.html` 和用户提供的原型图片 ## Goals / Non-Goals ### Goals - 1:1还原原型图视觉效果 - 新增蓝色顶部Header,统一系统导航风格 - 提供预警消息实时提示,提升调解员响应速度 - 可视化展示申请双方信息和协商沟通进度 - 增强调解成功率数据展示,提供同比分析 ### Non-Goals - 不修改现有API调用机制,复用CaseDataContext - 不修改底部悬浮控制面板 - "查看详细策略建议"功能暂不实现跳转 ## Decisions ### 1. 组件架构 **Decision**: 新增独立组件,不侵入现有组件逻辑 ``` components/ ├── common/ │ ├── AppHeader.jsx # 顶部Header(新增) │ └── WarningAlert.jsx # 预警提示(新增) └── dashboard/ ├── PartyInfoCard.jsx # 申请双方信息(新增) ├── NegotiationProgress.jsx # 协商沟通(新增) ├── AISuggestionCard.jsx # AI调解建议(新增) └── TabContainer.jsx # 修改MediationDataBoard ``` **Rationale**: 保持单一职责,便于维护和测试 ### 2. 数据流设计 **Decision**: 复用现有CaseDataContext,新增两个API调用 ``` CaseDataContext ├── caseData (现有) │ ├── mediation.success_rate │ ├── mediation.yoy_success_rate │ ├── mediation.yoy_before_hours │ └── mediation.mediation_count ├── processNodes (现有) └── 新增API调用: ├── getWarningNotifyList(mediationId) └── getPersonList(caseId) ``` **Rationale**: - 预警消息和当事人列表数据独立于timeline,需单独API获取 - 成功率同比数据从现有timeline字段获取,无需新API ### 3. Header数据来源 **Decision**: 调解员信息从URL参数获取,使用getMergedParams工具 ```javascript // 从URL参数获取 const params = getMergedParams(); const mediatorInfo = { trueName: params.trueName || '调解员', unit: params.unit || '', roleName: params.roleName || '', avatar: params.avatar || DEFAULT_AVATAR }; ``` **Rationale**: 调解员信息由外部系统传入,保持与现有参数获取机制一致 ### 4. 预警消息展示策略 **Decision**: - 单条消息: 直接在消息条展示完整内容 - 多条消息: 展示第一条 + "还有N条预警" + "查看更多"按钮 - 点击"查看更多": 弹出Modal展示全部预警列表 ### 5. 协商沟通进度计算 **Decision**: ```javascript const currentRound = timeline.mediation?.mediation_count || 0; const nodeCount = processNodes.length; // 总次数计算 let totalRounds = nodeCount; if (currentRound > nodeCount && !isLastNode) { totalRounds = currentRound + 1; } // 渲染点线块 const dots = Array(totalRounds).fill(false).map((_, i) => i < currentRound); ``` ## Layout Structure ``` ┌────────────────────────────────────────────────────────┐ │ AppHeader (蓝色背景) │ │ [矛盾纠纷应用] [🔔2] [👤李X萌 XX区..]│ ├────────────────────────────────────────────────────────┤ │ TopSection (现有案件信息头部) │ ├────────────────────────────────────────────────────────┤ │ MediationProgress (调解进度条) │ ├────────────────────────────────────────────────────────┤ │ WarningAlert (浅黄色预警提示) │ │ ⚠️ 预警:申请人张三情绪激动... [还有2条] [查看更多]│ ├────────────────────────────────────────────────────────┤ │ TabContainer │ │ ┌─────────────────────────────────────────────────────┤ │ │ MediationDataBoard (调解分析Tab) │ │ │ ┌──────────────────────┬─────────────────────────┐ │ │ │ │ 诉求差距分析 │ 申请双方 │ │ │ │ │ ┌────────────────┐ │ [👤申请人] VS [🏢被申请人]│ │ │ │ │ │ 主要分歧点... │ │ │ │ │ │ │ └────────────────┘ │ 预计调解成功率 │ │ │ │ │ │ 68% ↑+8% 较3小时前 │ │ │ │ │ AI调解建议 │ │ │ │ │ │ ┌────────────────┐ │ 协商沟通 │ │ │ │ │ │ 建议调解员... │ │ 第6轮 │ │ │ │ │ │ [查看详细策略] │ │ ●━●━●━●━●━○ │ │ │ │ │ └────────────────┘ │ │ │ │ │ └──────────────────────┴─────────────────────────┘ │ │ └─────────────────────────────────────────────────────┤ └────────────────────────────────────────────────────────┘ ``` ## Risks / Trade-offs ### Risk 1: API响应延迟 - **风险**: 预警消息和当事人列表API可能响应慢 - **缓解**: 组件内部loading状态,不阻塞整体页面渲染 ### Risk 2: URL参数缺失 - **风险**: 调解员信息URL参数可能为空 - **缓解**: 提供默认值和默认头像 ### Risk 3: 布局兼容性 - **风险**: 新增Header可能影响现有页面滚动 - **缓解**: Header使用fixed定位,调整body padding-top ## Migration Plan 1. 先创建API服务和新组件(不影响现有功能) 2. 在App.js中添加AppHeader(影响最小) 3. 在MediationProgress下方添加WarningAlert 4. 修改MediationDataBoard布局,集成新组件 5. 调整CSS样式,验证视觉效果 ## Open Questions - [已解答] AI调解建议内容来源? → 先使用Mock数据 - [已解答] "查看详细策略建议"跳转? → 暂不跳转,提示"功能升级中"