Files
Agent-System/.doc/ops/short-term/2026-09-21-taskrun-status-card.md
T
WeiCHEN e3290ebd68 docs(ops): reconcile W1-D status drift against schema 61 facts
Align sysadmin readiness reasons, FEATURE-MATRIX schema claims, CURRENT FAV wording, pseudo-done task statuses, G1/G2 exception counts, and residual gap-matrix schema notes with measured 2026-09-22 evidence without flipping production_ready.
2026-09-22 21:24:02 +08:00

3.7 KiB
Raw Blame History

title, status, created, updated, owner, branch, worktree, mutex
title status created updated owner branch worktree mutex
任务执行状态卡片与刷新持久化 done 2026-09-21 2026-09-21 Cursor feature/taskrun-status-card-2026-09-21 .worktrees/feature-taskrun-status-card-2026-09-21 chat+web+taskrun

任务执行状态卡片与刷新持久化

目标

对话启动的任务以竖向时间线卡片展示(标题 + 状态徽章 + 耗时 + 步骤状态 + 当前阶段),刷新后卡片形态不退化、不消失。

范围

  • feat(web):TaskRunCard 组件;MessageBubble 接入;phaseEventMapper / useTaskRunAttempts 接线
  • feat(taskrun,ctxmgr):finalize 折叠 phase 快照写入 metadata.task_phase_snapshot
  • feat(web):历史消息读快照;messageNeedsPhaseReplay 扩面兜底存量数据
  • 真实环境验收 + 测试报告

非目标

  • 不改 PLAN_CONFIRM 计划确认卡视觉
  • 不晋升 test/main;不改 production_ready
  • 不动项目 143

步骤

  1. feat(web): TaskRunCard + 类型扩展
  2. feat(web): MessageBubble / mapper / attempts 接线
  3. feat(taskrun,ctxmgr): phase 快照持久化
  4. feat(web): 刷新恢复(快照 + replay 扩面)
  5. 单测 + 真实环境验收 + 合回 dev

W1-D:验收已勾且有合入证据 → 只补勾步骤,不降级。

验收标准

  • 运行中任务:卡片显示竖向时间线 + 当前阶段文案
  • 完成后刷新:卡片形态保留(有 title/steps/duration),不退化成纯文本
  • 中断/失败刷新:卡片仍在,可继续/重开
  • 存量无 snapshot 的消息:replay 扩面能重建步骤
  • go vet / go test -short 相关包 / web npm test && npm run build 通过

追加修复:收口后 label 冻结为进度中文案(2026-09-21 二轮)

真实环境验收抓到新缺陷:步骤 status 已收口为 completed,但 label 永久冻结为 "正在…(NN%)"进度中叙述(证据消息 id=4424:advisor_briefing 步骤显示 "贴身业务参谋正在提炼关键决策摘要与风险雷达...(98%)"),卡片读起来"任务已完成但下方还在跑"。

根因:后端 applyPhasePayload / BuildPhaseSnapshot 与前端 applyPhaseEvent 收口分支 只翻转 status、不改写 label。修复三层(同一任务批次提交):

  • fix(taskrun): NormalizeSettledStep 收口归一化(短标签 + "已完成",保留"(第 x/y 步)"结构后缀;failed 有意保留原文案;幂等,导出供回填复用)
  • fix(web): phaseEventMapper.settleStep 运行时对称归一化;TaskRunCard 渲染层 displayStepLabel 兜底清洗历史脏数据
  • chore(ops): scripts/backfill_task_phase_snapshot_labels.go 历史数据一次性回填(dev 实测 4424/4508 两条修复;二次 dry-run = 0,幂等)
  • 测试:Go 包测试 + web npm test(472+33)+ tsc --noEmit 通过;TaskRunCard.test.ts 新增 #4424 复现用例

证据:.doc/test-reports/assets/2026-09-21-taskrun-status-card-persistence/backfill-{before,after,run}.txt

收口:代码+文档已 --ff-only 合入 dev(4b303247 修复+回填证据,ab45cad4 验收报告); dev 容器已 rebuild 并经真实 PI 验收(消息 4548 免回填直落归一化 label)。 cleanup_pending:worktree 仍被本会话 Cursor worker 进程占用(§5 门禁拒绝 remove), 待会话结束后由协调者普通 git worktree remove + git branch -d 清理; 一次性验收会话已撤销。

相关链接

  • Plan: ~/.cursor/plans/任务执行状态卡片与刷新持久化_8e5dc856.plan.md
  • Test report: .doc/test-reports/2026-09-21-taskrun-status-card-persistence-test-report.md

证据 / 备注

用户选定:竖向时间线卡;只做任务执行状态卡(不含 PLAN_CONFIRM)。