Skip to content

转录预算对零/偏小时长无下限守卫:duration=0 会算出 120 秒预算,确定性掐断本来能成功的任务 #190

Description

@zj1123581321

结论

capswriter_client.py 的 _transcription_deadline(:254-260 附近)对 media_duration 只拒绝负数(media_duration < 0),0 与偏小时长被接受,预算公式给出 0*4+120 = 120 秒。直播录制容器(FLV/TS 流式封装)的头部 duration 为 0 或明显偏小是常见现象——届时一个在 SDK 自动预算下本可成功的任务,会被确定性提前掐断,且只有一行 WARNING,无用户可见差异。紧邻本仓 P1 红线「静默出错」。

证据

  • _transcription_deadline 判据:media_duration is None or not isfinite or media_duration < 0 → fallback;0 直通。
  • _finite_time_or_none(:424)对 0 也返回 0 而非 None,不构成兜底。
  • 对照:SDK _auto_budget docstring 明确写「时长为 0 或短音频时仍不低于 120 秒」——SDK 是刻意保底,本仓显式路径反而把 0 当真。

修法(一行 + 一条测试)

media_duration < 0 改 media_duration <= 0(或加合理下限如 1 秒),退化输入按 unknown 走 fallback=sdk_auto,与修复前行为一致。补一条 duration=0 → 返回 None 的单测。

边界

Activity

  1. added
    优先级:P2质量债、待拍板的产品决策、可选优化
    落点:本仓修复代码在本仓 git 跟踪路径内
    on Oct 6, 2026
  2. zj1123581321 commented on Oct 6, 2026

    @zj1123581321
    CollaboratorAuthor

    修复已合并:PR #192(squash 98de829)。 对 按 unknown 处理退回 SDK 自动预算,红验控制确认改坏时预算被压成 120 秒的用例会变红。CI gate 全绿(run 37458385902)。注意:本次改动尚未部署到生产(当前生产为 f6c93a1),随下次部署上线。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    优先级:P2质量债、待拍板的产品决策、可选优化落点:本仓修复代码在本仓 git 跟踪路径内

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions