Skip to content

修复空转录成功缓存及撤权后的摘要请求 - #263

Merged
zj1123581321 merged 7 commits into
mainfrom
feat/vta-261017-empty-probe
Oct 17, 2026
Merged

zj1123581321 merged 7 commits into
mainfrom
feat/vta-261017-empty-probe

Conversation

@zj1123581321

@zj1123581321 zj1123581321 commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #243

This PR prevents empty transcripts from being treated as successful cache entries or handed to downstream consumers.

  • FunASR results with no usable formatted text raise the existing EmptyTranscriptError before cache or handoff.
  • CapsWriter output that is successfully read as empty or whitespace-only is rejected.
  • YouTube API subtitles fail when parsed text and text rebuilt from preserved segments are both empty.
  • After a successful share-revocation DELETE, a pending hover timer for that still-rendered row checks that its view token remains present before requesting a summary. Timers for other rows remain active.

Valid numeric FunASR text, numeric subtitles preserved in structured segments, existing valid cache rows, and the revoked-token 404 contract remain covered.

Accepted P2: if opening or reading an already-written CapsWriter .txt file raises an I/O error, the existing reader logs a warning and may continue with an empty value. This PR covers empty or whitespace-only producer output and successfully-read bodies, not that separate read-I/O failure path. Already-issued summary requests are not aborted. A detached row that retains data-vt after an unrelated list redraw can still send its existing pending request; this existing behavior is unchanged.

Validation:

  • uv run pytest -q tests/integration/test_issue243_empty_transcript.py — 10 passed.
  • uv run pytest -q tests/unit/test_capswriter_contract.py — 24 passed.
  • Cross-row Chromium regression: the old global timer cleanup expected 1 summary GET for active row B but received 0; the repaired test passes with B's unique 200 response and tooltip while revoked row A receives no request.
  • Full-chain Chromium regression after owner revoke — 1 passed. Removing only the row-token guard makes the post-DELETE assertion red (Expected 0 summary GETs / Received 1); the guard was restored byte-for-byte.
  • uv run pytest -q tests/integration/test_local_upload_lifecycle.py::test_public_read_summary_exports_and_owner_history_close_without_content_bypass — 1 passed.

Agent-Executor: codex-lead
Agent-Session: 01a1480f-4908-7eb2-8738-ca17d4f23775
@zj1123581321 zj1123581321 self-assigned this Oct 17, 2026
@github-actions

github-actions Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Required Gate v2 — 状态面板

当前状态:pass · 可合并

当前裁决:code_pass / primary_pass

PR 累计主审轮(影子):3/5 · collecting

Gate 历史(v1;来源为持久化 gate_terminal 制品)

Run Attempt Head 状态 PR 累计主审轮(影子) 收件人动作
39003390059 1 250e8e9 skipped — 无需动作(主审未跑,绿≠过审)
39005559770 1 5eab9f1 fail — 要修代码
39005579872 1 5eab9f1 pass — 可合并
39006414418 1 c29326f fail — 要修代码
39007647198 1 2b99891 pass 3/5 · collecting 可合并

历史行按 run_id + run_attempt 去重并只增不删;删除本评论后可由 gate_terminal 制品重建。

Agent-Executor: codex-lead
Agent-Session: 01a1480f-4908-7eb2-8738-ca17d4f23775
@zj1123581321
zj1123581321 marked this pull request as ready for review October 17, 2026 05:15
Agent-Executor: codex-lead
Agent-Session: 01a1480f-4908-7eb2-8738-ca17d4f23775
@zj1123581321 zj1123581321 changed the title 修复空转录进入成功缓存 修复空转录成功缓存及撤权后的摘要请求 Oct 17, 2026
Agent-Executor: codex-lead
Agent-Session: 01a1480f-4908-7eb2-8738-ca17d4f23775
Agent-Executor: codex-lead
Agent-Session: 01a1480f-4908-7eb2-8738-ca17d4f23775
Agent-Executor: codex-lead
Agent-Session: 01a1480f-4908-7eb2-8738-ca17d4f23775
@zj1123581321
zj1123581321 merged commit c2fa382 into main Oct 17, 2026
13 checks passed
@zj1123581321
zj1123581321 deleted the feat/vta-261017-empty-probe branch October 17, 2026 05:57
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.

导出链路对「无有效内容」任务伪装成 success + 200 空正文(recorder 场景实测)

1 participant