我先不加词汇服务。把现在这条链讲清楚,才能知道下一步应该改哪里。
要解决什么
页面已经能提交和阅读任务,但界面上显示“已完成”,并不能解释文件去了哪里、谁推进了下一步。这篇只记录本地代码事实,不把未来设计算进去。
有哪些看法,我怎么选
可以按目录一个个读,也可以从一个请求追下去。我选后者:用同一个用户、一段短音频,记下每次产生的 ID。
现在实际怎样运行
浏览器申请上传地址 → 直传对象存储 → 确认文件完成
→ API 创建任务 → 任务服务投递 transcode
→ 转码 Worker 上传 WAV 并上报
→ 任务服务切换阶段,投递 transcribe
→ 转写 Worker 上传 JSON 并上报 → 任务完成
关键入口都在 Vox 仓库内:
| 位置 | 现在做的事 |
|---|---|
01_apiService/internal/handler/ | JWT 用户请求、文件和任务 HTTP 接口 |
02_fileService/internal/service/service.go | 文件记录、所有权检查、签名地址、上传完成校验 |
03_taskService/internal/service/task.go | 创建任务、转码完成后推进转写 |
03_taskService/internal/distributor/rabbitmq.go | 按 routing key 投递两个处理队列 |
06_transcodeService/internal/normalizer/ffmpeg.go | 提取音频并转换为 16kHz 单声道 WAV |
04_transcriberService/internal/transcriber/whisper.go | 加载模型、识别文本和段落时间戳 |
web/app.js | 录音或上传、任务列表、播放器与字幕跟随 |
任务表已经保存 stage、language,但查询任务的 protobuf 没有返回这两个字段。前端看不到它们,是接口契约缺了一段。词汇服务目前只打印一句占位文字;没有看到总结服务实现。
还要记住三个缺口:任务入库和发消息分两步;Worker 处理报错后仍会 Ack;任务只有一个会随阶段变化的输出文件 ID。这些分别留到 03—05 篇解决。
k8s/ 有 Worker 和 KEDA 配置,只能说明写了部署方案,不能证明线上扩缩容已经验证。转写 Dockerfile 也不能作为 CUDA 或 Metal 已启用的证据。
我会怎样验证
先用浏览器网络面板记录 file_id、task_id,再查看同一任务的服务日志和文件列表。确认输入、转码产物、转写 JSON 能对应上,JSON 包含 text 和带毫秒时间戳的 segments。
前端的浏览器回归使用模拟 API;它能验证交互,不能替代这次真实链路检查。验收记录要另外注明真实使用的存储、模型和 Worker。
这一轮做到能回答“哪段代码推进了下一步、失败在哪儿能看见”,就够了。