云小调系统通过AI调解员自动拨打当事人电话进行初步沟通,调解员需要在实时看板中了解通话详情以便进行后续人工调解。当前系统缺少通话记录的详细展示功能。
OutboundBotAPIService.getConversationLog API决策:使用Ant Design Modal作为弹窗容器,自定义内部组件
理由:
- Modal组件与系统其他弹窗风格一致
- 内部需要高度自定义的聊天界面样式
- 便于后续扩展其他功能
组件层级: MediationBoard └── BoardItem (调解记录卡片) └── CallRecordButton (通话记录按钮) └── CallRecordModal (通话记录弹窗) ├── AudioPlayer (录音播放器) └── ConversationList (对话记录列表) └── ConversationItem (单条对话)
决策:按需加载,点击按钮时调用API
理由:
- 避免列表加载时请求数量过多
- 减少不必要的API调用
- 提升页面初始加载速度
API调用流程: 用户点击按钮 → 获取caseId(URL参数 > localStorage) → 获取person_id和job_id(调解记录数据) → 调用getConversationLog API → 处理返回数据(取最后一条) → 渲染弹窗内容
决策:根据callStatus字段区分展示内容
状态分类:
| 状态类型 | callStatus值 | 展示内容 |
|---------|-------------|---------|
| 已接通 | 1, 20-31 | 录音播放器 + 对话记录 |
| 未接通 | 0, 2-19, 32 | 提示"未接通,无通话记录" |
决策:采用类似微信聊天的左右布局
设计规范:
- AI调解员消息:
- 位置:左侧
- 头像:机器人图标
- 背景:浅蓝色(#e3f2fd)
- 名称显示:"AI调解员"
时间戳格式:YYYY-MM-DD HH:mm
决策:使用HTML5原生audio标签
理由:
- 原生支持.wav格式
- 无需额外依赖
- 浏览器兼容性好
样式设计:
- 位置:弹窗顶部固定
- 背景:浅灰色(#f5f5f5)
- 高度:50px
- 宽度:100%
┌─────────────────────────────────────────────────────────────┐
│ AI调解员与申请人(刘树杰)的通话 任务ID: xxx │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 🔊 录音播放器 [▶播放] ━━━━━━━●─────── 03:45/10:20 │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────┐ 你好,刘树杰先生吗?我是白云区... │
│ │ AI │ 2026-03-12 16:30 │
│ └──────┘ │
│ │
│ 呃,你刚才前面说你是谁? ┌──────┐ │
│ 2026-03-12 16:33 │ 刘 │ │
│ └──────┘ │
│ │
│ ┌──────┐ 哦,不好意思,我是白云区人和镇... │
│ │ AI │ 2026-03-12 16:33 │
│ └──────┘ │
│ │
└─────────────────────────────────────────────────────────────┘