shimai
2026-04-03 6bb08c2297be1b6415c8bc02e6917eba6ee355e5
openspec/changes/implement-mediation-state-control/design.md
New file
@@ -0,0 +1,143 @@
# Design Document: AI调解状态控制功能
## 架构概述
本功能将在现有的调解看板界面中添加状态控制能力,允许用户暂停或恢复AI自动调解流程。设计遵循现有系统的组件结构和交互模式。
## 组件设计
### 1. 状态控制按钮组件
**位置**:位于FloatingControlPanel组件中,人工接管按钮左侧
**显示逻辑**:
```
const stateNum = Number(state);
if (stateNum === 1) {
  // 显示"终止"按钮,红色渐变样式
  buttonText = "终止";
  buttonClass = "state-control-btn--terminate";
} else if (stateNum === 5) {
  // 显示"恢复"按钮,绿色渐变样式
  buttonText = "恢复";
  buttonClass = "state-control-btn--resume";
} else {
  // 不显示按钮
  showButton = false;
}
```
### 2. 状态显示规则
**状态文本显示**:
- state=1: "调解进行中-阶段X:节点名称"
- state=5: "AI调解暂停中"
- 其他状态: 使用translateMediationState翻译
**状态圆点颜色**:
- state=5: 红色 (#e63946)
- 其他状态: 默认绿色 (var(--success-color))
### 2. 确认对话框设计
**触发条件**:用户点击状态控制按钮
**内容结构**:
- 标题:根据操作类型显示"确认终止调解"或"确认恢复调解"
- 描述文本:说明操作的影响
- 输入框:可选的备注信息
- 操作按钮:确认/取消
### 3. 状态管理集成
**数据来源**:从CaseDataContext获取案件状态
**更新机制**:API调用成功后重新加载案件数据
### 4. 外呼气泡联动关闭
**触发条件**:终止操作API调用成功后
**实现机制**:
1. FloatingControlPanel触发自定义事件`mediation-terminated`
2. OutboundCallWidget监听该事件
3. 事件处理:
   - 设置isVisible=false关闭气泡
   - 设置isMinimized=true最小化
   - 清空localStorage外呼任务数据
   - 清空组件状态中的通话列表
## API集成设计
### 请求流程
```
1. 用户点击按钮
2. 显示确认对话框
3. 用户确认操作
4. 调用ProcessAPIService.updateMediationState
5. 处理API响应
6. 成功:刷新页面数据
7. 失败:显示错误提示
```
### 错误处理策略
- 网络错误:显示通用网络错误提示
- 业务错误:显示具体的错误信息
- 状态冲突:提示当前状态不允许该操作
## UI/UX设计
### 视觉设计
**终止按钮**(红色渐变主题):
- 背景:linear-gradient(135deg, #e63946 0%, #c1121f 100%)
- 阴影:0 2px 8px rgba(230, 57, 70, 0.3)
- 文字颜色:白色
- 悬停效果:背景变为linear-gradient(135deg, #f04a57 0%, #d41926 100%)
- 悬停阴影:0 4px 16px rgba(230, 57, 70, 0.4)
**恢复按钮**(绿色渐变主题):
- 背景:linear-gradient(135deg, #52c41a 0%, #389e0d 100%)
- 阴影:0 2px 8px rgba(82, 196, 26, 0.3)
- 文字颜色:白色
- 悬停效果:背景变为linear-gradient(135deg, #5fd42b 0%, #42b417 100%)
- 悬停阴影:0 4px 16px rgba(82, 196, 26, 0.4)
**样式类名规范**:
- 基础类:`.state-control-btn`
- 终止变体:`.state-control-btn--terminate`
- 恢复变体:`.state-control-btn--resume`
- 与人工接管按钮样式(`.floating-control-btn`)完全隔离
### 交互设计
**加载状态**:
- 按钮显示loading状态
- 禁用其他相关操作
- 显示操作进度提示
**反馈机制**:
- 操作成功:显示成功消息,自动刷新数据
- 操作失败:显示错误消息,保持当前界面状态
## 技术实现考虑
### 性能优化
- 状态检查在组件渲染时进行,避免不必要的重渲染
- API调用使用现有的请求拦截器和错误处理机制
- 页面刷新采用增量更新而非全页面重载
### 安全考虑
- 操作前进行身份验证检查
- 记录操作日志用于审计
- 防止重复提交同一操作
### 可维护性
- 遵循现有的组件命名和结构规范
- 复用现有的样式和交互组件
- 保持与人工接管功能的一致性
## 测试策略
### 单元测试
- 按钮显示逻辑的边界条件测试
- API调用成功/失败场景测试
- 状态转换的正确性验证
### 集成测试
- 完整的用户操作流程测试
- 与现有功能的兼容性测试
- 异常场景的恢复能力测试
### 用户验收测试
- 实际调解场景下的功能验证
- 易用性和直观性评估
- 性能影响评估