Files
Cyrene_v2/internal/db/migrations/0020_chat_message_voice.down.sql
AskaEth ede00d9928 feat(voice): 语音消息落库 + 转码接入(切片 0020)
- 迁移 0020_chat_message_voice:按 design/24 §10 与契约 §7.2 已登记的 voice 形状建列/索引
- 语音回合进编排并落库;voice 引用与统计如实回填(转码/转写没成功就如实标未成功,不假装)
- 复用既有 internal/capability/transcode:非 wav(微信 AMR 等)先转码再送 ASR;失败可分类且不丢消息

⚠️ 部分完成(如实登记):生产端到端未成立(本片只到落库与转码接入),且**未经验真机**。
2026-10-06 09:04:06 +08:00

13 lines
827 B
SQL

-- 0020_chat_message_voice down: 回滚「语音事实」列。
--
-- voice 只被 chat_messages 自己引用(无索引、无视图、无约束牵涉),因此直接删列即可。
-- 回滚后的状态是「服务端不再记得这条消息来自一条语音」:列里的来源事实与音频副本引用
-- 随列一起丢弃。
--
-- ⚠️ 音频副本本体(<DataDir>/uploads/documents 里的文件与 `documents` 元数据行)**不在
-- 本迁移的范围内**:删掉这一列等于一次性放掉这些副本的最后一份引用,它们的 ref_count
-- 不会再被消息写路径增减,此后只能由既有 GC(保留期 + ref_count = 0)收走。这是**有意**
-- 的取舍:迁移绝不代替 GC 去删用户数据(同 0015 的 down 口径)。
ALTER TABLE chat_messages DROP COLUMN voice;