From 6bb08c2297be1b6415c8bc02e6917eba6ee355e5 Mon Sep 17 00:00:00 2001 From: shimai <shimai@example.com> Date: Fri, 03 Apr 2026 10:42:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/test/tony.cheng/260312' into test/shimai.huang/260309 --- openspec/changes/add-call-record-viewer/tasks.md | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 0 deletions(-) diff --git a/openspec/changes/add-call-record-viewer/tasks.md b/openspec/changes/add-call-record-viewer/tasks.md new file mode 100644 index 0000000..7f50128 --- /dev/null +++ b/openspec/changes/add-call-record-viewer/tasks.md @@ -0,0 +1,107 @@ +# Tasks for add-call-record-viewer + +## Task List + +### Phase 1: 组件开发 +- [x] 1.1 创建通话记录弹窗组件 `CallRecordModal.jsx` + - 定义组件props接口(visible, onClose, record等) + - 创建弹窗基本结构 + - 添加加载状态和错误状态处理 + +- [x] 1.2 实现录音播放器组件 `AudioPlayer.jsx` + - 使用HTML5 audio标签 + - 添加播放/暂停控制 + - 显示播放进度和时长 + - 处理音频加载错误 + +- [x] 1.3 实现对话记录列表组件 `ConversationList.jsx` + - 解析conversations JSON字符串 + - 实现左右布局(AI左侧,当事人右侧) + - 添加时间戳格式化显示 + - 区分不同说话人的样式 + +### Phase 2: API集成 +- [x] 2.1 确认getConversationLog API参数 + - 检查API service中的参数定义 + - 确认params字段名称(caseId/personId/jobId) + +- [x] 2.2 实现API调用逻辑 + - 从URL参数或localStorage获取caseId + - 从调解记录获取person_id和job_id + - 调用getConversationLog API + - 处理API返回数据(取最后一条记录) + +- [x] 2.3 实现数据转换函数 + - 将conversations JSON字符串转为对象数组 + - 过滤无效对话记录(script为null) + - 格式化时间戳显示 + +### Phase 3: UI集成 +- [x] 3.1 在调解记录卡片中添加通话记录按钮 + - 在角色名称后添加胶囊按钮 + - 按钮样式:电话图标 + "通话记录"文字 + - 添加hover效果 + +- [x] 3.2 实现按钮点击逻辑 + - 点击按钮打开弹窗 + - 传递必要的参数(record数据) + - 禁用重复点击 + +- [x] 3.3 实现外呼状态展示 + - 已接通状态:显示完整通话记录 + - 未接通状态:显示提示信息 + - 添加状态判断逻辑 + +### Phase 4: 样式完善 +- [x] 4.1 添加通话记录弹窗样式 + - 设置弹窗尺寸(宽度600px,最大高度80vh) + - 录音播放器样式 + - 对话记录列表样式 + - 滚动条样式优化 + +- [x] 4.2 添加对话气泡样式 + - AI调解员气泡(左侧蓝色) + - 当事人气泡(右侧绿色) + - 头像样式 + - 时间戳样式 + +- [x] 4.3 添加响应式适配 + - 小屏幕下弹窗宽度自适应 + - 对话内容过长时的省略处理 + +### Phase 5: 测试与优化 +- [x] 5.1 功能测试 + - 测试已接通状态的通话记录展示 + - 测试未接通状态的提示信息 + - 测试录音播放功能 + - 测试对话记录滚动 + +- [x] 5.2 边界情况测试 + - API调用失败的错误提示 + - 录音文件加载失败的处理 + - 空对话记录的处理 + - 对话内容过长的情况 + +- [x] 5.3 性能优化 + - 弹窗内容按需渲染 + - 避免不必要的重渲染 + - 优化长列表滚动性能 + +### Phase 6: 文档更新 +- [x] 6.1 更新相关OpenSpec文档 + - 确保design.md和proposal.md与实现一致 + - 更新项目功能树 + +## Dependencies +- Task 2.1 依赖 Task 1.1(需要先有组件结构) +- Task 3.1-3.3 依赖 Task 2.2(需要API调用逻辑) +- Task 4.1-4.3 依赖 Task 1.2-1.3(需要有组件才能添加样式) +- Task 5.1-5.3 依赖所有前置任务 + +## Validation Criteria +每个任务完成后需要满足: +- 代码通过ESLint检查 +- 功能在本地开发环境中正常工作 +- 不引入新的编译警告或错误 +- 符合现有的代码风格和架构模式 +- UI样式与系统整体风格一致 -- Gitblit v1.8.0