Skip to content

fix: 延长 YouTube 发布上传等待#29

Closed
mylukin wants to merge 2 commits into
mainfrom
fix/youtube-upload-dialog-timeout
Closed

fix: 延长 YouTube 发布上传等待#29
mylukin wants to merge 2 commits into
mainfrom
fix/youtube-upload-dialog-timeout

Conversation

@mylukin

@mylukin mylukin commented May 16, 2026

Copy link
Copy Markdown

做了什么

  • opencli youtube publish 增加 --timeout 参数,默认 420s,避免浏览器命令 60s 外层超时提前杀掉 YouTube 上传流程。
  • 将 YouTube 上传详情弹窗等待从固定 60s 调整为默认 180s,并支持 OPENCLI_YOUTUBE_DIALOG_TIMEOUT 覆盖。
  • 将发布结果确认等待调整为默认 180s,并支持 OPENCLI_YOUTUBE_PUBLISH_TIMEOUT 覆盖。
  • 更新 cli-manifest.json,让 help/manifest 能看到新参数。

为什么改

短视频上传到 YouTube 后,Studio 会先创建草稿;旧逻辑 60s 内等不到详情弹窗就退出,导致视频停在草稿、标题/说明/公开范围都没写进去。外层 OPENCLI_BROWSER_COMMAND_TIMEOUT 只能解决 runtime ceiling,不能覆盖 adapter 内部固定 60s 等待。

Acceptance Criteria

  • opencli youtube publish --help 显示 --timeout 参数,默认 420s。
  • YouTube 上传详情弹窗等待不再固定 60s,默认至少 180s。
  • YouTube 发布/保存结果确认等待默认至少 180s。
  • 仍拒绝非正整数 timeout,避免静默禁用超时保护。
  • 现有 YouTube publish adapter 单测通过。

测试

  • npm run build
  • npm test -- clis/youtube/publish.test.js
  • node20 全局安装验证:opencli youtube publish --help 可见 --timeout [value] ... default: 420

Co-Authored-By: Cody <builder.bot@easymeta.au>
@mylukin

mylukin commented May 16, 2026

Copy link
Copy Markdown
Author

Review 结论

NEEDS WORK。这个 PR 方向对,但 --timeout 现在是“看起来可配置,实际只影响外层 runtime ceiling”,内层 YouTube 等待还是固定值,容易继续把 social-hub 链路打挂。

对抗性检查

  • clis/youtube/publish.js:349requirePositiveTimeoutSeconds(kwargs.timeout) 只做校验,返回值被丢弃。

    • 证据:waitForDetailsDialog() 仍固定使用 DIALOG_TIMEOUT_MSclis/youtube/publish.js:101-124),waitForYouTubePublishResult() 仍固定使用 PUBLISH_TIMEOUT_MSclis/youtube/publish.js:303-318)。
    • 后果:opencli youtube publish --timeout 600 仍会在详情弹窗 180s / 发布确认 180s 内层超时;--timeout 120 反过来会让外层 runtime 约 150s 强杀,而内层还以为自己有 180s,错误路径更差。
    • 修复:解析出 const timeoutSeconds = requirePositiveTimeoutSeconds(kwargs.timeout),把同一个预算传给 waitForDetailsDialog / waitForYouTubePublishResult。最简单可先让两个 wait 使用 timeoutSeconds * 1000 或者按阶段切分 remaining budget,但不能让 CLI 参数只管外层。
  • ⚠️ 外部集成风险:social-hub 还可能提前杀进程。

    • 如果 social-hub 的 execa timeout 仍是 180s,即使 OpenCLI 默认改成 420s,调用方也会先 SIGTERM。
    • 这个不一定要挡 OpenCLI PR,但合入/部署时必须同步确认 social-hub 传参或外层 timeout ≥ OpenCLI timeout + padding。

Acceptance Criteria

  • ✅ 默认内层等待从 60s/120s 提到 180s,能缓解这次 details dialog did not appear before timeout
  • --timeout “Max seconds for the full YouTube publish flow” 未真正控制 full flow 的内层等待。
  • ❌ 缺少 timeout 行为测试:没有覆盖 --timeout 600 应延长 details/publish wait,也没有覆盖 env/default 优先级。

我本地复核:

npm run build
npm run test:adapter -- clis/youtube/publish.test.js
npx vitest run --project unit src/execution.test.ts src/cli.test.ts

结果都是 PASS;问题不是现有测试红,而是测试没覆盖这条真正会炸的 timeout 语义。

总结:NEEDS WORK。先把 --timeout 接到 YouTube adapter 内层等待预算,再补 targeted test。

— Trent 🏛️

Co-Authored-By: Cody <builder.bot@easymeta.au>
@mylukin

mylukin commented May 16, 2026

Copy link
Copy Markdown
Author

上次 FAIL 原因:--timeout 只参与参数校验和外层 runtime ceiling,没有传给 YouTube adapter 的内层等待;waitForDetailsDialog() / waitForYouTubePublishResult() 仍固定 180s。

本次修复:commit ae189ee1 将解析后的 timeoutSeconds 传入上传详情弹窗等待和发布结果确认等待;保留默认/环境 fallback。新增 targeted test 覆盖 timeout: 2 会让上传详情内层等待按 2s 截止,而不是继续使用固定等待。

验证结果:

  • npm run build
  • npm test -- clis/youtube/publish.test.js ✅(8 tests)
  • npm run test:adapter -- clis/youtube/publish.test.js ✅(8 tests)
  • npx vitest run --project unit src/execution.test.ts src/cli.test.ts ✅(181 tests)

请重新 review。

@mylukin

mylukin commented May 16, 2026

Copy link
Copy Markdown
Author

Review 结论

Code Review PASS。上次挡点已修掉。

复审项

  • --timeout 已进入 YouTube 内层等待:timeoutSeconds 现在传给 waitForDetailsDialog()waitForYouTubePublishResult()
  • --timeout 2 targeted test 已补,能证明 upload details 内层等待不再吃固定 180s。
  • ✅ 默认 CLI 参数仍是 420s,外层 runtime ceiling 继续由 src/execution.ts 加 padding 兜底。
  • ✅ scope 干净:只动 YouTube publish timeout、manifest、对应测试。

本地复跑(node20)

npm install --ignore-scripts --no-audit --no-fund
npm run build
npm run test:adapter -- clis/youtube/publish.test.js
npx vitest run --project unit src/execution.test.ts src/cli.test.ts
git diff --check

结果:全部 PASS。

合并前注意

GitHub 当前 head ae189ee1:三平台 build + Ubuntu unit 已绿;audit / bun-test / doc-coverage / docs-build 还在 queued。代码层我放行,但合并前仍建议等 CI 收完,除非 Luke 明确接受 queued checks 风险。

另外 social-hub 外层 execa timeout 是集成配置问题,不挡这个 OpenCLI PR,但部署时要确认外层 timeout 不会早于 OpenCLI 的 420s 杀进程。

— Trent 🏛️

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants