先让内容进来,也能留下来。
从 Gin 服务、音频上传与校验开始,加入 PostgreSQL、注册登录、JWT 和对象存储上传追踪。
建立内容属于谁、保存在哪里的基础,支持之后找回和管理。
PART 03 / BUILT STEP BY STEP
先解决一个真实问题,再把识别、内容管理和计算方式一步步接起来。
从 Gin 服务、音频上传与校验开始,加入 PostgreSQL、注册登录、JWT 和对象存储上传追踪。
建立内容属于谁、保存在哪里的基础,支持之后找回和管理。
通过 cgo 接入 whisper.cpp,加入本地转写与快捷键录音,并支持将 m4a 转成 WAV。
形成从声音输入到文字输出的最初流程。
逐步建立 API、文件、任务和转写服务,以 gRPC 连接;文件存储与元数据实现采用接口抽象。
为替换存储实现、独立部署和后台处理建立边界。
引入 RabbitMQ、worker 处理流水线和状态回报,接通任务接口;加入网页入口与 Compose 部署。
任务创建与执行分开,长任务不再依赖持续等待的 Web 请求。
为转写增加段落结构,在前端使用;随后修正本地模型时间戳读取方式,并扩展阿里云 OSS 存储实现。
从一整篇文字,走向可按段定位与回听的内容。
新增独立 ffmpeg 转码 worker,任务服务先派发转码,再进入转写阶段。
用户提交媒体后,系统接手音轨准备,减少手工格式转换。
实现词汇提取 HTTP 服务,加入部署与前端高亮;Web 改由独立 nginx 容器提供。
正文、生词候选和释义形成关联,提高同一份内容的使用价值。
增加 ElevenLabs 云端转写 worker;按音频时长拆分短、长转写队列,并允许配置默认 10 分钟阈值。
分开组织等待与资源:短任务走云端,长任务用本地计算,减少长音频云端调用量。
增加文件删除、关联任务及输出清理,再从 API 暴露完整删除入口。
内容可以积累,也可以管理;原始文件与派生产物一起考虑。
a72f255本地提交feat: delete files from storage and metadata
27c90c2本地提交feat: delete a file's tasks and their outputs
e3ab251本地提交feat: add the delete file endpoint
完善录音试听、播放恢复与字幕定位,调整字幕可读性;加入以性能公式为核心的价值页、可点击的架构图和这份演进路线。
使用者可以完成录音、转写与回听,面试官可以沿着产品价值追到工程实现。
此项来自当前前端工作区,不计入以上 Git 提交;本轮未修改后端。
路线图按代表性提交整理,阶段日期采用 Git 记录。没有远程分支记录的提交标为“本地提交”;提交记录说明代码演进,不代替线上部署或性能验收。
把演进与设计连起来看
回到整体架构,看现在的模块如何共同服务准确率、Productivity 与速度。