架构与实现
卓安Claw 谈案录音上传 V1 实现说明
日期:2026-11-13
状态:P0-1 录音上传/原件存证/线索与案件关联/案件时间线已落地;ASR 转写与 AI 质检未接
关联:docs/requirements/卓安Claw-谈案录音与AI质检-V1方案草案-v0.1.md、docs/research/卓安Claw-录音质检-GitHub调研-2026-11-13.md
0. 一句话
先把“人工上传录音、原件不可变、线索时间线可查”跑通;FunASR 转写和五维质检作为下一步接入,不在同一批代码里硬塞。
1. 已实现
1.1 数据表
zhuoan_comm_record:沟通记录- 线索/客户
intake_id(客户按 client 兜底) - 案件
case_id、客户client_id - 沟通类型:电话/面谈/微信语音/线上会议
- 沟通时间、参与人、上传人、上传人 ID
- 同意确认
consent_confirmed - 原件
blob_id、状态、备注 zhuoan_comm_transcript:转写占位(当前待转写)zhuoan_comm_analysis:质检占位(当前无记录)
1.2 原件层
- 复用
zhuoan_doc_blob的 SHA-256 内容寻址存储。 - 音频流式写入、大小上限 1.5GB、原件不可变。
- 录音不混入
document案件材料台账;属于内部沟通数据。
1.3 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/zhuoan/communications?lead_id=&status= |
录音列表 + 状态汇总 |
| GET | /api/zhuoan/communications/<id> |
录音详情(含转写/分析占位) |
| POST | /api/zhuoan/communications/upload |
multipart 上传;lead_id/comm_type/consent_confirmed/file 必填 |
权限:
- 查看:
case:view或customer:view。 - 上传:
case:edit或customer:view。 - 非管理者 V1 只看自己上传的录音(线索负责人模型未落地前的保守策略)。
- 上传写审计
zhuoan_comm_uploaded。
1.4 UI
侧栏「客户与线索 → 谈案录音」:
- 指标:全部/待转写/已转写/已分析。
- 筛选:全部/待转写/已转写/已分析。
- 列表:沟通类型、线索/客户、沟通时间、上传人、参与人、备注、状态。
- 上传弹窗:线索/客户、类型、时间、参与人、录音文件、备注、录音同意勾选。
- 未勾选同意不能上传。
1.5 线索/客户/案件关联
- 上传时可选择“关联案件(可选)”;选择后校验客户与案件一致。
- 线索阶段上传的录音
case_id为空;线索转案件时按intake_id自动补绑case_id/client_id/linked_at。 - 转案补绑写
linked_to_case事件,不复制录音。 - 案件详情新增「沟通录音」卡:显示本案录音、用途、时间、上传人、状态;可上传并默认带当前案件/客户。
- 新增
purpose(谈案沟通/客户服务/办案沟通/证据性录音)、archive_status、stage_key字段。 zhuoan_comm_event记录上传、关联等事件,作为后续证据链基础。
1.6 验证
- 生成 2 秒 WAV,Playwright 1920×1080 管理者上传成功:
- 12 个线索/客户选项;
- 上传后列表出现 1 条“电话/待转写”;
- 0 console error;
- 截图
C:\tmp\zhuoan-recordings.png。 - API/DB 验证:
zhuoan_comm_record写入、consent_confirmed=1、blob SHA-256/64,044 bytes、转写占位待转写。 - 案件关联:在
ZA-2026-0323案件内上传,case_id/client_id/purpose/archive_status正确;案件「沟通录音」卡即时出现;linked_to_case事件写入。 - 晚绑定:线索下录音通过
link_recordings_to_case补绑案件,case_id/client_id/linked_at与事件正确;测试数据已清理。 - 测试录音、blob、审计已清理。
2. 未实现
- ASR 转写:FunASR(VAD + Paraformer/SenseVoice + 标点 + CAM++)尚未安装/接入。
- 音频时长自动识别、播放器、转写分段、时间点跳转。
- 五维质检、rubric、人工复核队列。
- 主管团队视图;当前非管理者只看自己上传。
- 录音删除/保留期/下载导出权限。
- 与线索详情页内嵌时间线(当前是独立模块)。
3. 为什么先停在这里
- 当前演示机 Python 环境没有
torch/funasr;安装 FunASR + 模型是独立环境变更,需确认安装窗口与机器(CPU/GPU)。 - 先把上传与存证跑通,后续 ASR worker 可以独立替换,不返工对象和页面。
- 11/27 前不建议把完整转写/质检塞进演示主线;最多用一段短录音做“上传→待转写”能力展示。
4. 下一步
- 安装 FunASR CPU 管线并做 3 段中文录音基准(电话/面谈/会议)。
- 增加
zhuoan_comm_job或复用现有 worker 做异步转写。 - 录音详情页:播放器 + 转写分段 + 人工说话人映射。
- 五维质检 + 证据回链 + 主管复核队列。
- 权限升级:主管看团队、承办看案件团队、管理者看全所。