fix: 编辑模板添加片段移除时长输入 #1694

Merged
auto-approve-bot merged 2 commits from fix/voice-duration-filter-and-warning-removal into develop 2026-09-04 16:46:53 +08:00
Owner

后端已改为生成时自动对齐配音时长,前端添加片段弹窗不再需要手动设置时长。

变更

  • AddClipPicker: 移除时长输入框及 minDuration/maxDuration props
  • useAddPicker: 改用 DEFAULT_ADD_DURATION 常量
  • useTimelineMenus: 移除 addDuration/setAddDuration 透传
  • TimelinePanel: 移除 addDuration/onDurationChange props
后端已改为生成时自动对齐配音时长,前端添加片段弹窗不再需要手动设置时长。 ## 变更 - AddClipPicker: 移除时长输入框及 minDuration/maxDuration props - useAddPicker: 改用 DEFAULT_ADD_DURATION 常量 - useTimelineMenus: 移除 addDuration/setAddDuration 透传 - TimelinePanel: 移除 addDuration/onDurationChange props
xiaoxia added 2 commits 2026-09-04 16:39:50 +08:00
fix: 配音时长过滤 + 移除时长警告 UI
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m23s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m58s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m4s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m6s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m11s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m9s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m34s
AI Code Review / AI Code Review (pull_request) Successful in 5m21s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 7m14s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 3s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m14s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 11s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 38s
a10d8b7ae0
- Step5VoiceSelect: 自动过滤时长差异>±10%的配音,AI音色始终保留
- Step5VoiceSelect: 移除'配音时长不足'弹窗及相关状态
- Step5VoiceSelect: 移除'⚠ 时长不足'警告标签
- Step5VoiceSelect: 选中配音直接生效,不再弹窗确认
- Step1TemplateSelect: 模板卡片移除estimated_duration显示
- 过滤后如有被隐藏的素材,底部提示用户
fix: 编辑模板添加片段移除时长输入
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m22s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m1s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m2s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m8s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m4s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m12s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m27s
AI Code Review / AI Code Review (pull_request) Successful in 4m5s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m20s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 2s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m48s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 7s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 29s
a615814c87
- AddClipPicker: 移除时长输入框及 minDuration/maxDuration props
- useAddPicker: 改用 DEFAULT_ADD_DURATION 常量,移除 addDuration 状态
- useTimelineMenus: 移除 addDuration/setAddDuration 透传
- TimelinePanel: 移除 addDuration/onDurationChange props

后端已改为生成时自动对齐配音时长,前端不再需要手动设置片段时长

🚀 预览环境已部署

项目 详情
PR号 #1694
预览链接 https://pr-1694.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1694 | | 预览链接 | [https://pr-1694.preview.xiaoxiajianji.com](https://pr-1694.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-09-04 16:42:03 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-09-04 16:42:03 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

代码审查结果 - PR #1694

⚠️ 问题(1个需要修改)

  1. apps/web/src/pages/generate/components/Step5VoiceSelect.tsx 第60行totalVideoDurationundefined 时的逻辑判断错误。
    • 原因totalVideoDuration 是可选参数(number | undefined)。当未传入该参数时,undefined <= 0 的结果为 false,代码会继续执行后续的过滤逻辑。
    • 后果:在计算 ratio 时会发生 duration / undefined,结果为 NaNNaN 不满足 >= 0.9 && <= 1.1 的条件,导致所有非 AI 音色的配音都被错误过滤掉,用户列表为空且无提示。
    • 修改建议:将判断条件修改为 if (!totalVideoDuration || totalVideoDuration <= 0),确保在未传入时长或时长无效时不过滤数据。

💡 建议(2个可选)

  1. apps/web/src/pages/generate/components/Step5VoiceSelect.tsx 第63行:过滤逻辑对无效时长的处理可能存在歧义。
    • 内容:代码中 if (duration <= 0) return true 会保留时长为 0 或无效的配音,但会过滤掉时长差异较大的有效配音(如视频 60s,配音 30s)。建议明确业务意图:如果是为了允许用户选择未知时长的文件,则保留当前逻辑;如果是为了严格匹配,则应将无效时长一并过滤。
  2. apps/web/src/pages/generate/components/Step5VoiceSelect.tsx 第66行:硬编码的过滤阈值可能过于严格。
    • 内容:目前设置的 ±10%(0.9 - 1.1)阈值较窄,可能导致用户想要使用的配音(如略短于视频但可接受静音结尾的配音)无法出现在列表中。建议考虑将阈值放宽(如 ±20% 或 30%)或将其提取为常量/配置项,以便后续调整。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-09-04 08:43:56 | 模型:

## 代码审查结果 - PR #1694 ### ⚠️ 问题(1个需要修改) 1. **apps/web/src/pages/generate/components/Step5VoiceSelect.tsx 第60行**:`totalVideoDuration` 为 `undefined` 时的逻辑判断错误。 - **原因**:`totalVideoDuration` 是可选参数(`number | undefined`)。当未传入该参数时,`undefined <= 0` 的结果为 `false`,代码会继续执行后续的过滤逻辑。 - **后果**:在计算 `ratio` 时会发生 `duration / undefined`,结果为 `NaN`。`NaN` 不满足 `>= 0.9 && <= 1.1` 的条件,导致所有非 AI 音色的配音都被错误过滤掉,用户列表为空且无提示。 - **修改建议**:将判断条件修改为 `if (!totalVideoDuration || totalVideoDuration <= 0)`,确保在未传入时长或时长无效时不过滤数据。 ### 💡 建议(2个可选) 1. **apps/web/src/pages/generate/components/Step5VoiceSelect.tsx 第63行**:过滤逻辑对无效时长的处理可能存在歧义。 - **内容**:代码中 `if (duration <= 0) return true` 会保留时长为 0 或无效的配音,但会过滤掉时长差异较大的有效配音(如视频 60s,配音 30s)。建议明确业务意图:如果是为了允许用户选择未知时长的文件,则保留当前逻辑;如果是为了严格匹配,则应将无效时长一并过滤。 2. **apps/web/src/pages/generate/components/Step5VoiceSelect.tsx 第66行**:硬编码的过滤阈值可能过于严格。 - **内容**:目前设置的 ±10%(0.9 - 1.1)阈值较窄,可能导致用户想要使用的配音(如略短于视频但可接受静音结尾的配音)无法出现在列表中。建议考虑将阈值放宽(如 ±20% 或 30%)或将其提取为常量/配置项,以便后续调整。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-09-04 08:43:56 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot merged commit f1bd2d6f1d into develop 2026-09-04 16:46:53 +08:00
auto-approve-bot deleted branch fix/voice-duration-filter-and-warning-removal 2026-09-04 16:46:53 +08:00

🗑️ 预览环境已清理

PR #1694 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #1694 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.