fix: label deleted reference frames correctly

This commit is contained in:
2026-05-19 13:57:44 +08:00
parent e6d957fcab
commit 68ab3dab96
2 changed files with 14 additions and 2 deletions

View File

@@ -7404,7 +7404,7 @@ def delete_frame(job_id: str, idx: int) -> Job:
except OSError: pass
new_frames = [f for f in job.frames if f.index != idx]
update(job, frames=new_frames, message=f"删除分镜 {idx + 1}")
update(job, frames=new_frames, message=f"删除参考帧 {idx + 1}")
return job

View File

@@ -975,7 +975,7 @@ ProductRefStateItem {
<tr><td>原始音频文件</td><td><code>GET /jobs/{id}/audio.wav</code></td><td><code>sourceAudioUrl</code></td><td>返回拆轨得到的 wav当前主界面不再渲染底部吸附音频条右侧复刻工作表会读取该文件生成参考图式横向响度波形并和原视频、逐句时间轴联动波形标题栏显示当前播放秒数、总时长和鼠标指针停点秒数。</td></tr>
<tr><td>改写配音文件</td><td><code>GET /jobs/{id}/audio-script.mp3</code></td><td><code>apiAssetUrl(job.audio_script.voice_url)</code></td><td>后续新配音阶段保留的 TTS 产物;服务端固定走 <code>VOICE_PROVIDER=azure_openai</code>,通过 <code>AZURE_OPENAI_BASE_URL</code> 的 OpenAI 协议生成 mp3并按 <code>AZURE_TTS_PATHS</code> 依次尝试 <code>/audio/speech</code><code>/v1/audio/speech</code> 等路径。当前第一步不默认生成该文件。</td></tr>
<tr><td>手动加帧</td><td><code>POST /jobs/{id}/frames?t=</code></td><td><code>addManualFrame</code></td><td>按视频时间戳抽一帧index 递增但 frames 按 timestamp 排序。当前主界面会把原版视频播放器的播放秒数传给 <code>AudioIntakePanel</code> 标题栏右侧的“当前点抽帧”。</td></tr>
<tr><td>删除关键</td><td><code>DELETE /jobs/{id}/frames/{idx}</code></td><td><code>deleteFrame</code></td><td>删除单张关键帧并清掉对应选择态;当前主界面每张缩略图右下角提供删除入口,方便手动抽错后直接修正。</td></tr>
<tr><td>删除参考</td><td><code>DELETE /jobs/{id}/frames/{idx}</code></td><td><code>deleteFrame</code></td><td>删除单张抽帧参考帧并清掉对应选择态;当前主界面每张缩略图右下角提供删除入口,方便手动抽错后直接修正。接口返回状态消息必须称为“参考帧/关键帧”,不能写成“分镜”,避免和逐句 storyboard 行混淆。</td></tr>
<tr><td>Vision 识别</td><td><code>POST /frames/{idx}/describe</code></td><td><code>describeFrame</code></td><td>写入 frame.description后续可从 objects 加候选元素。</td></tr>
<tr><td>清洗水印</td><td><code>POST /frames/{idx}/cleanup</code></td><td><code>cleanupFrame</code></td><td>支持全图和区域清洗,生成 cleaned 待应用版本;前端批量清洗会顺序调用该接口,不自动覆盖原图。单帧清洗状态按 frame.index 隔离,清洗某一张不会禁用其他关键帧的清洗按钮。</td></tr>
<tr><td>应用清洗版</td><td><code>POST /frames/{idx}/cleanup/apply</code></td><td><code>applyCleanedFrame</code></td><td>把 cleaned 待应用版本覆盖到原关键帧,并保留首次原图备份;前端“一键替换待应用”会顺序调用该接口应用所有已有清洗版。</td></tr>
@@ -1108,6 +1108,18 @@ ProductRefStateItem {
<h2>变更记录</h2>
<p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p>
<div class="changelog">
<article class="change">
<header>
<h3>2026-05-19 · 删除抽帧状态文案改为参考帧</h3>
<span class="tag blue">API</span>
<span class="tag cyan">Source Video</span>
</header>
<div class="body">
<p><strong>问题:</strong>用户在参考帧池删除自动抽出来的帧时,后端 <code>DELETE /jobs/{job_id}/frames/{idx}</code> 返回的 job message 写成“删除分镜”,让人误以为删掉了逐句分镜。</p>
<p><strong>改动:</strong><code>delete_frame</code> 的状态消息改为“已删除参考帧 N”。前端按钮本来就是“删除关键帧”删除逻辑仍只移除 <code>job.frames</code> 里的抽帧参考帧和对应文件。</p>
<p><strong>影响:</strong>删除抽帧不会被误报成删除分镜;分镜行和参考帧池在用户提示和文档里继续保持清晰边界。</p>
</div>
</article>
<article class="change">
<header>
<h3>2026-05-19 · 视频候选文案改为生成 4 个视频</h3>