音效生成路径优化 #145

Merged
kdletters merged 73 commits from feat/sound_opt into master 2026-08-08 21:30:50 +08:00
Owner
No description provided.
lhk229 added 37 commits 2026-08-07 11:38:05 +08:00
融合画板音乐权威设计,固定BGM原样Prompt、预设、补全、简化、撤销和提交锁口径。
追加长期决策,明确SFX、字段名、External v1和LLM日志策略保持不变。
新增前端 Unicode code point 与有效字符计数规则
新增 Rust BGM 原样校验并覆盖生成和补全边界
新增 Prompt 助手 camelCase 内部 DTO 与契约测试
补齐跨语言 Unicode、200 字和 SFX 回归测试
补全T0一键简化两轮输入、结构化结果和互斥状态规则
新增TypeScript Unicode White_Space canonicalizer与生成、补全、简化状态
新增Rust零分配canonicalizer并让计数和校验返回规范化Prompt
补齐跨语言Unicode及200/201字符边界测试
新增登录态补全与简化内部BFF及共享请求约束
实现OpenAI Chat四字段严格响应解析与180到170两轮简化
隔离上游错误与未通过候选并补齐重试和协议测试
同步权威设计与项目决策记录
冻结简化输入上限、请求体边界与未完成响应规则

拒绝不完整模型响应并补齐2000字和413校验

补充助手路由埋点、回归测试与长期决策记录
增加补全与简化内部客户端及共享DTO
实现对话框级状态、取消、迟到响应保护和交换式撤销
接入画布生成工作流并将submitting设为排他锁
补齐同步读取、项目切换和字符边界回归测试
- Prompt 助手 scope 改为账号与项目联合绑定:hook 接收 currentUserId / projectId 两个原始值,内部生成稳定 scope key,调用方无法再传入按引用比较的对象。
- 删除 render 阶段的 scope ref 改写,scope 身份只在已提交的 React 生命周期中推进,被放弃的并发 render 不再污染迟到响应判断。
- scope 切换改用 useLayoutEffect 在 commit 阶段同步原子清理:中止旧请求、清空 active operation、reset 状态模型、清空错误与公开 dialog 状态、重建已知 dialog 集合。修复新 scope 已 commit 而 passive effect 未执行时,旧账号 / 旧项目候选被写入同 ID dialog 的竞态。
- 迟到响应判定为 stale 时先让状态模型完成 reject 再移除 active operation,不再残留 completing / simplifying 忙状态。
- Prompt 助手 client 增加 EDITOR_BACKGROUND_MUSIC_PROMPT_ASSIST_TIMEOUT_MS = 180_000 并透传 timeoutMs,仍不启用前端重试;超时按现有失败路径恢复 idle,保留 canonical Prompt,不产生撤销快照。
- 补充定向测试:账号切换中止与清理、scope 清理早于任何 passive effect 的相位回归、等值 scope props 不误判 stale、StrictMode 双渲染、浏览器超时恢复,以及两个助手路由的超时透传与无重试断言。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- 权威设计「单层撤销」增加撤销按钮可见性与可用性小节:可见条件为存在可撤销快照或本次 AI 操作的临时快照,启用条件为可见且面板未处于 completing / simplifying / submitting / generating 锁定状态,并补 10 行状态矩阵。
- 说明发起 AI 操作时可撤销快照被本次临时快照取代,「处理中没有可撤销快照」不等于「没有快照」,不得据此隐藏按钮;禁止为让处理期间按钮可见而保留旧快照,避免与 AI 失败不恢复旧快照冲突。
- 权威设计「AI 操作与方案 A 提交锁」限定「禁用撤销」指显示并禁用,可见性按单层撤销矩阵判定,不得隐藏。
- 权威设计验收增加撤销按钮逐行验收,要求处理期间按钮仍在可访问树中且为真实禁用态,不得用隐藏或视觉伪装代替禁用。
- decision-log 追加对应长期交互决策,标注不修改状态模型字段且不适用于 SFX。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- 新增 ImageCanvasBackgroundMusicPresetModel:三组 30 个固定预设(用途 12 / 氛围 3 / 场景 15)与追加纯函数;按 Unicode code point 读取末位字符,标点用 \p{Punctuation} 判定,非标点先补中文句号,不去重、不截断、不改内部空白。
- 新增独立 BGM composer:canonical preview 计数不改写输入框,AI 补全、一键简化、撤销与生成按动作矩阵启用,错误复用 PlatformStatusMessage,底部保留固定 Suno 胶囊与动态泥点价格。
- 撤销按钮按权威设计矩阵渲染:可见条件为存在可撤销快照或本次临时快照,启用条件为可见且面板未锁定;AI 处理与提交期间显示并禁用,不隐藏。
- 新增预设轨道组件:多份等宽队列 + ResizeObserver 实测宽度 + rAF 按帧步进取模归位实现无缝循环;左右 15% 加速、中间 70% 暂停、箭头 hover 加速与点击离散滚动,底部细线标记当前控制区。
- 轨道只保留一份可聚焦预设按钮,视觉克隆移出可访问树但点击映射到同一动作;收起、锁定、页面不可见、dialog 切换和卸载都取消 rAF。
- 桌面 hover 控制区按 (hover: hover) and (pointer: fine) 启用,能力丢失时清空当前控制区,避免没有 pointerleave 的设备永久停在暂停态;reduced-motion 初值与运行中变化都生效。
- 触摸抬手后等待滚动事件停止再恢复 rAF,不使用固定等待时长,且不把 rAF 自身写 scrollLeft 触发的 scroll 计入空闲判定。
- 加速档按真机实测定为 238 px/s,左右控制区与箭头共用,避免两者之间出现速度突变。
- 将原共享音频 composer 收窄为 SFX-only,BGM 路由到独立组件并按 dialog ID 设置 key;SFX 的 Vidu 胶囊、时长滑块、默认 Prompt 与价格行为不变。
- 补充 ImageCanvasBackgroundMusicPresetModel、独立 composer 与预设轨道的定向测试,并扩展现有 composer 的 SFX 回归与 BGM 路由断言。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
明确 BGM 正式提交在 queue 与 inline 模式下的结算时点
关闭 BGM 正式 POST 的 unsafe 自动重试并冻结非扩展边界
删除请求侧固定泥点价格并改为服务端动态价格口径
收紧归档与账号项目切换后的 scope-safe 写回规则
前端接入规范化提示词、同步排他锁及账号与项目分层回调门禁

关闭BGM正式POST自动重试并补充真实传输层单次请求回归

后端统一站内BGM规范载荷并保留External v1原始载荷幂等语义

补齐队列、直返、平台音频及生命周期边界测试

新增并更新T5独立实施记录
保留BGM独立composer与提示词优化链路

合入master最新编辑器和项目能力

解决决策日志与音频输入组件冲突
增加 TypeScript/Rust 共用 canonicalization fixture
补齐 BGM 跨层等值、SFX 和后端边界测试
将 BGM 补全与简化请求模型改为 gpt-5.6-luna,保留画布 Agent gpt-5.4-mini
同步权威设计、项目记忆和 T6 发布门禁记录
验证本地定向测试与真实 VectorEngine 补全/简化请求
合并:同步最新master
Project CI / Native shell tests (pull_request) Successful in 14m13s
Project CI / Frontend tests (pull_request) Failing after 2m22s
Project CI / Backend tests (pull_request) Successful in 4m6s
Project CI / Repository checks (pull_request) Failing after 43s
de98219a94
合并 origin/master 8f19964e3 到 BGM 优化分支

保留 BGM 记录、完美像素改动及双方前端测试

通过冲突相关前端定向测试(61项)
Merge branch 'master' of ssh://genarrative-station:2222/GenarrativeAI/Genarrative into codex/bgm-generation-opt-v1
Project CI / Repository checks (pull_request) Failing after 43s
Project CI / Frontend tests (pull_request) Failing after 2m17s
Project CI / Backend tests (pull_request) Successful in 4m13s
Project CI / Native shell tests (pull_request) Successful in 13m17s
2a0a4238d1
按 simple-import-sort 要求调整完美像素与 BGM 助手导入顺序

通过目标文件 ESLint 与 git diff --check
文档:恢复音频生成共享分流并停止跟踪本地方案
Project CI / Repository checks (pull_request) Failing after 11s
Project CI / Backend tests (pull_request) Failing after 11s
Project CI / Frontend tests (pull_request) Failing after 2m48s
Project CI / Native shell tests (pull_request) Successful in 14m43s
3a363c98ff
新增共享音频 Composer 重构方案并收口权威设计
更新实施记录、决策日志、踩坑记录与文档索引
停止跟踪 local-docs 中的 T5 实施方案并保留本地文件
合并:同步最新master
Project CI / Repository checks (pull_request) Failing after 44s
Project CI / Frontend tests (pull_request) Failing after 2m51s
Project CI / Backend tests (pull_request) Successful in 5m29s
Project CI / Native shell tests (pull_request) Successful in 13m32s
477eb1a003
合并 origin/master 最新提交 7b075df39
保留当前分支的 BGM 优化与共享音频面板方案

# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
#	docs/project-memory/shared-memory/pitfalls.md
#	server-rs/crates/api-server/src/editor_generation_queue.rs
#	src/components/image-editor/useImageCanvasGenerationSurface.tsx
#	src/services/image-editor/editorProjectClient.ts
BGM音频模块迁移回isSoundEffect
Project CI / Repository checks (pull_request) Successful in 1m26s
Project CI / Frontend tests (pull_request) Successful in 3m33s
Project CI / Backend tests (pull_request) Successful in 5m52s
Project CI / Native shell tests (pull_request) Successful in 15m1s
eba8f25995
文档:同步T6提交与视觉验证状态
Project CI / Frontend tests (pull_request) Successful in 3m14s
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 8s
Project CI / Native shell tests (pull_request) Successful in 14m18s
fe08a2643c
记录T6收口已提交并推送

补记共享音频Composer浏览器视觉验证结果
合并:同步最新master
Project CI / Repository checks (pull_request) Successful in 1m21s
Project CI / Frontend tests (pull_request) Failing after 2m15s
Project CI / Backend tests (pull_request) Successful in 4m2s
Project CI / Native shell tests (pull_request) Failing after 10m23s
5b4599f147
纳入远端master最新变更
测试:修复画布缓存断言竞态
Project CI / Backend tests (pull_request) Failing after 13s
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Frontend tests (pull_request) Successful in 2m50s
Project CI / Native shell tests (pull_request) Successful in 14m54s
ee474b8ec8
等待会话缓存完成revision更新后再校验内容
合并:同步最新master
Project CI / Repository checks (pull_request) Successful in 57s
Project CI / Frontend tests (pull_request) Successful in 3m51s
Project CI / Backend tests (pull_request) Successful in 4m2s
Project CI / Native shell tests (pull_request) Failing after 3m59s
9671944e0f
纳入远端master最新变更
修复背景音乐预设克隆焦点
Project CI / Repository checks (pull_request) Successful in 9m55s
Project CI / Backend tests (pull_request) Successful in 12m19s
Project CI / Frontend tests (pull_request) Successful in 15m31s
Project CI / Native shell tests (pull_request) Successful in 27m2s
a786fa7562
将中间队列设为唯一可访问按钮并移除视觉克隆的焦点能力
为键盘预设补充可见焦点样式
补充克隆点击、锁定及键盘导航回归测试
配置BGM助手中等推理强度
Project CI / Repository checks (pull_request) Failing after 7s
Project CI / Backend tests (pull_request) Failing after 8s
Project CI / Frontend tests (pull_request) Successful in 3m42s
Project CI / Native shell tests (pull_request) Successful in 14m59s
c3e8be719d
将BGM补全与简化请求统一设置reasoning_effort为medium
补充请求对象和HTTP载荷断言并同步权威设计
合并:同步最新master
Project CI / Repository checks (pull_request) Successful in 1m6s
Project CI / Backend tests (pull_request) Successful in 3m26s
Project CI / Frontend tests (pull_request) Successful in 3m18s
Project CI / Native shell tests (pull_request) Successful in 14m13s
59b92123b9
合入远端 master 的最新提交
优化BGM生成面板界面
Project CI / Frontend tests (pull_request) Successful in 3m7s
Project CI / Backend tests (pull_request) Successful in 3m51s
Project CI / Repository checks (pull_request) Successful in 1m27s
Project CI / Native shell tests (pull_request) Successful in 12m40s
b79f72391b
按设计稿重排 BGM composer 的控件布局,并统一输入框行为。

- 字数计数移到「预设」标题行右端,与预设展开控件同排
- AI补全 / 一键简化 / 撤销 移入底部行,与 Suno、生成同区域
- 助手按钮补图标并压回 2.25rem 高度与胶囊圆角;shape="pill" 与
  size="xs" 走的是 Tailwind 分层 utility,压不过未分层的
  .platform-button,因此显式写死
- 预设展开 / 收起改为裸 chevron 图标按钮,可访问名由 aria-label 承担
- 预设滚动箭头去边框,hover 才出淡底
- BGM footer 改 flex 并作用域隔离,共享的 5 列 grid 不受影响
- 生成按钮收到 2.25rem,样式、文案与泥点角标保持不变
- 面板 min-height 归零并移除多余显式行,消除收起预设时的空白
- 输入框改用 AutoGrowTextArea,与生图 / 生视频 / 角色 / 图标同源,
  53.6px 起自动增高至 128px 后内滚

交互逻辑未改动。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
完善SFX V2权威设计、LLM参数、二进制与时长安全边界
新增可共享的T0至T6任务拆解、测试矩阵和迁移发布门禁
同步项目决策日志与文档索引
合并 master 的 BGM 生成路径与角色动作媒体契约更新
保留并收敛 SFX V2 权威设计与共享实施计划
标记 T0 已通过并允许进入 T1
明确 SFX V2 实际时长响应对通用媒体口径的专项覆盖
统一前后端 SFX Prompt Unicode canonicalization、字符计数和 2048 边界
固化 52 个音效预设、追加规则及跨语言测试向量
演进共享音频请求响应、duration、Loop 和 V2 metadata 契约
增加 External model 输入矩阵纯函数并保持正式接线归属 T5
补齐前端提交、读取、深拷贝与请求边界回归测试
更新共享计划并标记 T1 完成且当前不可发布
新增登录态音效提示词一键优化 BFF 与严格 JSON 候选门禁
新增 Worker 内部英文化服务、Unicode Script 校验和业务重试边界
补齐 mock LLM、路由埋点、回归测试及 T2 共享实施记录
修复音频 compact 结果与 Agent reconcile 契约
统一正式 SFX 提交流程的 Unicode canonicalization
锁定队列 duration 与 Loop JSON 形态
收紧 Rust V2 metadata 构造和反序列化不变量
补齐共享边界、52 个预设 ID 和任意小数时长测试
合入共享 Prompt 边界、正式提交 canonicalization 与任意小数时长修复
合入严格 V2 metadata 构造和音频 compact 到 Agent reconcile 契约
确认 T1 修复与 T2 助手、翻译 service 依赖兼容并通过融合验证
新增 ElevenLabs 直接二进制适配、固定请求契约和单次 POST 边界。
实现 40 MiB 有界读取、MIME/MP3 校验和 600 秒纯 Rust 时长探测。
接入服务端环境配置、失败关闭 settings guard 与持久化来源解耦。
补齐 mock 回归测试、环境模板和 T3 tracked 文档记录。
等待 manifest 失效监听注册后再发送失效事件

避免 CI 中测试事件丢失导致超时
显式禁用 ElevenLabs 专用 HTTP 客户端重试。

增加真实 MP3 帧的 600 秒上下边界回归测试。
记录调试输出敏感配置遗留问题
Project CI / Native shell tests (pull_request) Successful in 13m18s
Project CI / Repository checks (pull_request) Failing after 10s
Project CI / Backend tests (pull_request) Failing after 10s
Project CI / Frontend tests (pull_request) Failing after 2m1s
b64c3c05ef
补充 AppConfig 与 AppState 调试输出的既有风险、审查归属和后续修复边界。
lhk229 added 2 commits 2026-08-07 11:54:18 +08:00
新增独立 SFX Prompt 助手状态机与请求隔离、单层撤销。

抽取通用音频预设跑马灯并接入 SFX 预设、计数和优化入口。

实现自动/手动时长、Loop、模型展示及同步提交参数冻结。

恢复项目布局状态,补齐回归测试并更新 T4 权威文档与共享决策。
合并:同步原分支音频边界修复
Project CI / Repository checks (pull_request) Failing after 14s
Project CI / Backend tests (pull_request) Failing after 13s
Project CI / Frontend tests (pull_request) Successful in 3m8s
Project CI / Native shell tests (pull_request) Successful in 12m16s
2281458ba6
同步 ElevenLabs 客户端单次请求约束。

同步真实 MP3 六百秒边界回归测试。

同步敏感配置调试输出遗留问题记录。
lhk229 added 3 commits 2026-08-07 12:53:04 +08:00
为 SFX 直连生成回包的钱包刷新补上账号门禁,与排队路径和 BGM 分支口径一致。

新增直连回包成功、失败两条切账号回归测试和一条同账号刷新对照测试。
锁定态给预设轨道加 --locked 修饰类,收紧为不可滚动容器并只放行纵向手势。

补齐 BGM 与 SFX 跑马灯锁定态的轨道滚动与相位保留断言。
音效时长浮层改用参数分组语义并补键盘策略
Project CI / Repository checks (pull_request) Failing after 8s
Project CI / Backend tests (pull_request) Failing after 9s
Project CI / Frontend tests (pull_request) Successful in 2m39s
Project CI / Native shell tests (pull_request) Successful in 12m15s
6506e95fa1
给浮层原语加 options 变体,含复选框和滑块的时长浮层退回 role=group。

浮层收起 hook 支持 Escape 关闭并把焦点还给触发按钮。

时长浮层打开后主动移焦到自动时长复选框,修正 portal 破坏的 Tab 可达性。

把一直未被 vitest 收录的浮层原语测试文件纳入 include 名单。
lhk229 added 1 commit 2026-08-07 13:17:57 +08:00
修正参数浮层 Escape 与全局快捷键叠加
Project CI / Frontend tests (pull_request) Successful in 2m45s
Project CI / Native shell tests (pull_request) Successful in 13m37s
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / Repository checks (pull_request) Failing after 12s
44ac7f1252
浮层处理 Escape 后截断冒泡,避免画布全局快捷键顺带关闭整个生成面板。

补齐 Escape 不外泄、外部点击不抢焦点两条回归测试。

预设轨道锁定测试改为同时校验 CSS 规则本体,堵住只断言类名的空转。
lhk229 added 1 commit 2026-08-07 14:20:55 +08:00
完成 SFX V2 T5 正式生成链路
Project CI / Repository checks (pull_request) Failing after 7s
Project CI / Backend tests (pull_request) Failing after 7s
Project CI / Frontend tests (pull_request) Successful in 2m52s
Project CI / Native shell tests (pull_request) Successful in 13m43s
392741215c
接通 Luna 英文化、ElevenLabs 单次生成、MP3 校验、OSS 与权威元数据写回
演进站内和 External v1 契约、幂等参数、详情重绘与 Agent 音效模型
新增 ElevenLabs 动态定价键及历史定价快照兼容
同步 OpenAPI、外部 Agent Skill、共享计划与决策记录
lhk229 added 3 commits 2026-08-07 15:40:21 +08:00
将 SFX Prompt 首尾规范化改为 ECMAScript String.trim 语义并同步 Rust 等值实现

更新共享边界 fixture、前后端与 Worker 回归测试

同步权威设计、实施计划、决策日志和 External OpenAPI 描述
同步 Chat completion token 预算字段能力与兼容策略。

保留 SFX V2 正式生成链路和最新 Prompt 规范化修复。
修正 SFX Chat completion 预算契约
Project CI / Repository checks (pull_request) Successful in 1m20s
Project CI / Frontend tests (pull_request) Successful in 3m49s
Project CI / Backend tests (pull_request) Successful in 4m24s
Project CI / Native shell tests (pull_request) Successful in 14m26s
122835839a
将优化与翻译的 VectorEngine Chat wire 锁定为 max_completion_tokens。

拒绝旧 max_tokens 与不适用于 Chat 的 max_output_tokens 字段。

统一权威设计、共享计划与决策记录中的 completion tokens 语义。
lhk229 added 3 commits 2026-08-07 16:31:23 +08:00
给 EditorSoundEffectGenerateRequest 补 deny_unknown_fields,与 OpenAPI 的 additionalProperties false 对齐。

新增 loopEnabled 等未知字段必须返回错误而非静默丢弃的契约测试。
把音效任务加入用户可见失败文案白名单,不再透出 ElevenLabs 端点与传输层诊断。

新增音效失败文案脱敏测试,原始诊断仍保留在任务记录、tracing 与审计事件中。
音效外部调用纳入 worker provider 预算
Project CI / Repository checks (pull_request) Successful in 58s
Project CI / Frontend tests (pull_request) Failing after 2m11s
Project CI / Backend tests (pull_request) Successful in 3m51s
Project CI / Native shell tests (pull_request) Failing after 11m35s
69f850ff82
ElevenLabs 设置新增 request_deadline,单次请求超时按剩余预算收窄,预算耗尽时不再发出请求。

音效翻译按同一预算逐轮判定,超期直接失败而不是继续占用终态写回时间。

音效生成把 request_context 上的 provider 截止时刻分别传给翻译与 ElevenLabs 调用。

新增预算耗尽时 provider 与 LLM 请求数均为 0 的回归测试及各自的对照用例。
lhk229 added 3 commits 2026-08-07 20:29:24 +08:00
抽出单一 SFX Worker 编排并覆盖计费、翻译、ElevenLabs、OSS 与写回
补齐稳定失败分类、退款和零副作用组合测试
修复画布 Agent 的自动时长、小数范围、Loop 与 Prompt 参数契约
同步测试证据、发布门禁和项目共享记忆
按设计稿重排音效 composer 的底部控件,并统一循环开关的选中态配色。

- 一键优化与撤销移入底部行,与时长、循环、ElevenLabs 和生成同处一排
- SFX footer 改 flex 并作用域隔离,共享的 5 列 grid 不受影响;模型 chip
  起分组作用,它与生成按钮靠右
- option-cluster 的 width: 100% 是给 grid 单元格写的,在 flex 行里会把基准
  宽度撑成整行再收缩,循环按钮因此被拉到 355px,改为按内容取宽
- footer 直接子 anchor 改 flex,消除块级盒与 inline-block 之间的基线空隙
- 时长按钮补时钟图标,新建音效默认改为自动时长
- 循环按钮补图标,Loop 改为「循环 开 / 关」,aria-label 同步
- 选中态由实心橙底配近白文字改为设计稿的淡橙底 + 橙字 + 橙描边;实底方案在
  通用 hover 用 background 简写换掉底色后会变成白底白字,hover 变体一并写死
- 删除 sound-effect-loop 选中态的重复规则,其声明与通用规则完全相同

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
音频信息的时长展示收敛到两位小数
Project CI / Repository checks (pull_request) Failing after 7s
Project CI / Backend tests (pull_request) Failing after 8s
Project CI / Frontend tests (pull_request) Successful in 3m17s
Project CI / Native shell tests (pull_request) Has been cancelled
87c0e167c4
模型返回的时长是全精度秒数,落库后信息面板会直出 8.306938775510204秒
这类无意义尾数。

- 新增 formatEditorGenerationInputFieldValue,只改写标题为「时长」或
  duration 的字段中的首个数字,四舍五入到两位小数
- 接入音频信息弹窗与导出的可见元数据两处用户可见出口
- 不补零,"自动"这类无数字取值与其他字段原样保留

只作用于展示:generationInputs 落库值不变,重绘默认时长与作品时长推断
仍按原精度解析,已有素材也一并生效。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lhk229 added 1 commit 2026-08-07 21:55:42 +08:00
合并 master 的编辑器原子提交改造
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
c4d7a76a0a
引入编辑器生成 durable receipt 与原子提交链路

将 SFX Worker 适配为原子写回并保留退款与失败分类

保持 External SFX 结果脱敏、实际时长和 Loop 契约
lhk229 added 1 commit 2026-08-07 21:59:22 +08:00
Merge branch 'master' into feat/sound_opt
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
840f219e18
lhk229 added 2 commits 2026-08-08 13:36:10 +08:00
更新权威设计为新建 SFX 面板默认开启自动时长

同步实施计划与共享决策记录,保留预置手动值 5s
合并 master 的付费生成预检与调试输出脱敏
Project CI / Repository checks (pull_request) Successful in 1m14s
Project CI / Frontend tests (pull_request) Successful in 2m52s
Project CI / Backend tests (pull_request) Successful in 3m54s
Project CI / Native shell tests (pull_request) Has been cancelled
38e195060b
合入 master 的编辑器付费生成目标预检与应用状态调试输出密钥泄漏两项修复。

SFX 直连与入队沿用 master 预检,源码顺序回归改为锁定本分支的 ElevenLabs worker 编排入口。

画布 Agent 音效参数恢复通用 null 缺省兼容,但保留 duration null 表示自动时长的 SFX V2 语义。

音效时长越界断言按 SFX V2 的 0.5-30 秒边界上移,重算契约测试期望。

哨兵测试补入 ElevenLabs base URL 与 API key,锁定其默认缺席于 AppConfig 调试输出。
lhk229 added 1 commit 2026-08-08 13:40:05 +08:00
修复 External SFX 轮询契约
Project CI / Repository checks (pull_request) Successful in 1m2s
Project CI / Frontend tests (pull_request) Successful in 2m55s
Project CI / Backend tests (pull_request) Successful in 3m51s
Project CI / Native shell tests (pull_request) Successful in 13m14s
8a42b23ea4
新增具名 SFX compact 结果联合与稳定引用约束

补强轮询 OpenAPI 以及音效 metadata 结果测试
lhk229 added 1 commit 2026-08-08 13:56:13 +08:00
更新调试输出泄漏遗留问题状态
Project CI / Repository checks (pull_request) Successful in 1m10s
Project CI / Frontend tests (pull_request) Successful in 2m52s
Project CI / Backend tests (pull_request) Successful in 3m54s
Project CI / Native shell tests (pull_request) Successful in 13m16s
8f4cce288c
主泄漏链已由 master 修复并随合并落地,文档改记 AppConfig、AppState 与 SpacetimeClientConfig 的允许清单 Debug 与五路哨兵覆盖。

补记本分支为哨兵测试加入 ElevenLabs base URL 与 API key。

第二档仍未脱敏的九个历史 provider 配置类型逐条列出位置与明文字段,并记录已生效的止血规约。
kdletters marked the pull request as ready for review 2026-08-08 15:05:01 +08:00
kdletters approved these changes 2026-08-08 15:11:58 +08:00
Dismissed
lhk229 added 1 commit 2026-08-08 15:42:33 +08:00
修复画布 Agent 音频回填丢失 provider
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
1664bc6bc8
原子提交与 worker 直接完成两条路径共用同一份结果紧凑化实现,删除重复副本。

紧凑化对 Agent 消费者保留音频必填 provider,历史上该豁免只加在 worker 副本里,原子化改造新写的副本没带上。

新增 Agent 音频紧凑结果仍可被 EditorAudioGenerateResponse 反序列化的契约测试,覆盖音效与背景音乐。
lhk229 dismissed kdletters's review 2026-08-08 15:42:33 +08:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

lhk229 added 1 commit 2026-08-08 15:54:32 +08:00
合并 master 的滑动条样式改造
Project CI / Frontend tests (pull_request) Successful in 3m39s
Project CI / Repository checks (pull_request) Successful in 1m24s
Project CI / Backend tests (pull_request) Successful in 4m10s
Project CI / Native shell tests (pull_request) Has been cancelled
bae124a054
音效面板跟随 master 从 form 提交改为按钮 onClick,保留 canonical soundEffectDialog 与 canGenerate 守卫。

音效锁定态断言改读 aria-readonly,适配 AutoGrowTextArea 改用 Lexical contentEditable。
kdletters added 1 commit 2026-08-08 16:11:20 +08:00
Merge branch 'master' into feat/sound_opt
Project CI / Backend tests (pull_request) Successful in 4m40s
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Successful in 47s
Project CI / Frontend tests (pull_request) Successful in 3m42s
e536882479
lhk229 added 2 commits 2026-08-08 16:54:44 +08:00
Merge remote-tracking branch 'origin/feat/sound_opt' into feat/sound_opt
Project CI / Repository checks (pull_request) Failing after 38s
Project CI / Frontend tests (pull_request) Successful in 2m48s
Project CI / Backend tests (pull_request) Successful in 3m57s
Project CI / Native shell tests (pull_request) Successful in 16m1s
299cfdcd5e
lhk229 added 1 commit 2026-08-08 16:57:57 +08:00
修正音效提交守卫的注释
Project CI / Repository checks (pull_request) Failing after 32s
Project CI / Frontend tests (pull_request) Successful in 3m56s
Project CI / Backend tests (pull_request) Successful in 4m35s
Project CI / Native shell tests (pull_request) Failing after 11m25s
0073fbd188
改正 soundEffectDialog 的描述:它只是类型收窄,不做 canonical 化。

说明 canGenerate 守卫与 disabled 同源,是防止未来移除 disabled 后漏发付费请求的冗余防线。
lhk229 added 1 commit 2026-08-08 17:23:12 +08:00
移除 External v1 完成结果联合的 discriminator
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
4024ea53ed
BGM 回 audioKind=background-music 无映射,图片、视频与历史结果没有
audioKind,fallback 分支又不可能把 audioKind 声明为必填,任何映射都覆盖
不全合法结果。oneOf 加 not 本已精确互斥,删掉 discriminator 不改变校验
语义,只恢复依赖它的客户端生成

契约测试反向锁定 discriminator 缺席,并锁定 fallback 只排除 SFX 一种
audioKind

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lhk229 added 1 commit 2026-08-08 17:41:50 +08:00
合并 master 的 AGC 实时清单测试竞态修复
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
a9575f0f04
lhk229 added 1 commit 2026-08-08 17:52:23 +08:00
修复 inline 泄露 provider问题
Project CI / Repository checks (pull_request) Failing after 10s
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
d58e5cbebd
lhk229 added 1 commit 2026-08-08 17:54:16 +08:00
合并 master 的 AGC 启动脚本导入顺序修复
Project CI / Repository checks (pull_request) Successful in 55s
Project CI / Frontend tests (pull_request) Successful in 3m27s
Project CI / Backend tests (pull_request) Successful in 4m27s
Project CI / Native shell tests (pull_request) Successful in 15m25s
6a6d1f85d6
lhk229 added 1 commit 2026-08-08 18:28:30 +08:00
修复 Agent 音频失败脱敏
Project CI / Repository checks (pull_request) Successful in 1m19s
Project CI / Frontend tests (pull_request) Successful in 2m59s
Project CI / Backend tests (pull_request) Successful in 3m57s
Project CI / Native shell tests (pull_request) Successful in 13m28s
0edefc67ec
复用外部生成任务的用户可见错误投影

按 Agent 工具名称映射音效任务并在回填前脱敏

补充音效和背景音乐失败回归测试
kdletters requested changes 2026-08-08 18:40:02 +08:00
kdletters left a comment
Member

请求修改。当前复审绑定 head 0edefc67ec85590e082d38876f3d31fb5e8f59d4、base 6cb13b3884e66460885d78bbc672b0f145e954a0。最新提交已经补齐 Agent 音频失败回填的用户可见错误投影,External 任务失败和 inline 5xx 的内部诊断也已做脱敏;merge-tree 与 git diff --check 通过。

但普通用户的 inline 音频成功响应仍把内部 provider 加回共享公开 DTO:SFX 返回 elevenlabs,BGM 透传生成 provider,前端响应类型也将 provider 设为必填。这与现役文档“音频完成响应不携带 provider”的边界直接冲突。请把普通 HTTP 成功 DTO 与 worker/Agent 内部回填 DTO 分离,或在普通用户响应边界统一剥离 provider,并补 SFX/BGM inline 成功回归测试;Agent 内部 compact 仍可保留回填所需字段。

写回前当前 required 状态:Project CI / Backend tests (pull_request)=success, Project CI / Frontend tests (pull_request)=success, Project CI / Native shell tests (pull_request)=pending, Project CI / Repository checks (pull_request)=success。
当前 head 仍没有有效批准;旧 review 182 绑定 8f4cce288c 且已 stale/dismissed。提交历史中也仍有英文 merge 标题和空正文提交,需要按仓库规范清理。

请求修改。当前复审绑定 head `0edefc67ec85590e082d38876f3d31fb5e8f59d4`、base `6cb13b3884e66460885d78bbc672b0f145e954a0`。最新提交已经补齐 Agent 音频失败回填的用户可见错误投影,External 任务失败和 inline 5xx 的内部诊断也已做脱敏;merge-tree 与 `git diff --check` 通过。 但普通用户的 inline 音频成功响应仍把内部 provider 加回共享公开 DTO:SFX 返回 `elevenlabs`,BGM 透传生成 provider,前端响应类型也将 `provider` 设为必填。这与现役文档“音频完成响应不携带 provider”的边界直接冲突。请把普通 HTTP 成功 DTO 与 worker/Agent 内部回填 DTO 分离,或在普通用户响应边界统一剥离 provider,并补 SFX/BGM inline 成功回归测试;Agent 内部 compact 仍可保留回填所需字段。 写回前当前 required 状态:Project CI / Backend tests (pull_request)=success, Project CI / Frontend tests (pull_request)=success, Project CI / Native shell tests (pull_request)=pending, Project CI / Repository checks (pull_request)=success。 当前 head 仍没有有效批准;旧 review 182 绑定 `8f4cce288c` 且已 stale/dismissed。提交历史中也仍有英文 merge 标题和空正文提交,需要按仓库规范清理。
@@ -605,10 +770,15 @@ pub struct EditorAudioGenerateResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub actual_prompt: Option<String>,
pub model: String,
pub provider: String,
Member

[P2] 不要把内部 provider 加回普通用户音频 DTO

这个共享响应会被 SFX/BGM inline handler 直接包进普通用户 HTTP 成功响应:当前 SFX 填入 elevenlabs,BGM 透传 generated.provider,前端 EditorAudioGenerationResult 也把 provider 设成必填。最新的失败脱敏只处理错误链,并未关闭成功响应泄露,且这里新增的测试反而锁定 provider=elevenlabs。这与现役权威文档“音频完成响应不携带 provider”冲突。请拆分普通公开 DTO 与 worker/Agent 内部回填 DTO,或在普通用户成功边界剥离该字段,并补 SFX/BGM inline 成功响应不含 provider 的回归测试。

**[P2] 不要把内部 provider 加回普通用户音频 DTO** 这个共享响应会被 SFX/BGM inline handler 直接包进普通用户 HTTP 成功响应:当前 SFX 填入 `elevenlabs`,BGM 透传 `generated.provider`,前端 `EditorAudioGenerationResult` 也把 `provider` 设成必填。最新的失败脱敏只处理错误链,并未关闭成功响应泄露,且这里新增的测试反而锁定 `provider=elevenlabs`。这与现役权威文档“音频完成响应不携带 provider”冲突。请拆分普通公开 DTO 与 worker/Agent 内部回填 DTO,或在普通用户成功边界剥离该字段,并补 SFX/BGM inline 成功响应不含 provider 的回归测试。
lhk229 marked this conversation as resolved
lhk229 added 1 commit 2026-08-08 20:28:32 +08:00
修复音频生成响应泄露 Provider
Project CI / Repository checks (pull_request) Successful in 1m6s
Project CI / Frontend tests (pull_request) Successful in 2m52s
Project CI / Backend tests (pull_request) Failing after 3m1s
Project CI / Native shell tests (pull_request) Failing after 9m54s
dea6576f89
收紧音频公开 DTO 与前端响应类型

统一清理 inline 和 Agent 队列结果中的 Provider

覆盖嵌套快照脱敏与历史 Agent 回填兼容
lhk229 added 1 commit 2026-08-08 20:41:17 +08:00
补齐音频响应脱敏回归测试
Project CI / Repository checks (pull_request) Successful in 1m9s
Project CI / Frontend tests (pull_request) Successful in 2m50s
Project CI / Backend tests (pull_request) Successful in 3m52s
Project CI / Native shell tests (pull_request) Successful in 13m15s
2d82ac55e4
更新 Agent 音频结果紧凑化断言

同步画板音乐成功响应契约文档
lhk229 added 1 commit 2026-08-08 20:59:08 +08:00
调整BGM提示词助手Token预算
Project CI / Repository checks (pull_request) Successful in 1m6s
Project CI / Frontend tests (pull_request) Successful in 2m50s
Project CI / Backend tests (pull_request) Successful in 3m49s
Project CI / Native shell tests (pull_request) Successful in 13m17s
5736ad62b4
AI补全使用2048 completion tokens

AI简化两轮均使用8192 completion tokens

同步设计文档并补充请求预算断言
kdletters merged commit a2fc6054e3 into master 2026-08-08 21:30:50 +08:00
kdletters deleted branch feat/sound_opt 2026-08-08 21:30:50 +08:00
Sign in to join this conversation.