116 lines
3.6 KiB
YAML
116 lines
3.6 KiB
YAML
# 填好的最小示例(虚构的 notes-web 项目)。可用 scripts/validate_tasks.py 校验通过。
|
||
version: 1
|
||
updatedAt: "2026-07-06T09:40:00+08:00"
|
||
source: "Coordinator (PM) Agent"
|
||
kitVersion: "0.3.0"
|
||
project:
|
||
name: "notes-web"
|
||
repoPath: "/home/dev/notes-web"
|
||
baseUrl: "http://localhost:5173"
|
||
devWorktree: "/home/dev/notes-web-wt/fix-preview"
|
||
|
||
summary:
|
||
verified: ["BUG-002"]
|
||
open: []
|
||
failedRetest: []
|
||
leftovers: ["BUG-003"]
|
||
|
||
tasks:
|
||
- id: "BUG-002"
|
||
type: "bug"
|
||
title: "预览变更点击后不显示 diff 行"
|
||
priority: "P0"
|
||
status: "verified"
|
||
assignee: "developer"
|
||
component: "web/app/fix/page.tsx"
|
||
specRefs:
|
||
- "docs/spec/fix-preview.md#preview"
|
||
testRefs:
|
||
- "tests/browser/cases/01-preview.md"
|
||
description: >
|
||
用户在 /fix 页点击“预览变更”后,确认区不渲染 API 返回的 diff。
|
||
stepsToReproduce:
|
||
- "打开 /fix?fileId=1"
|
||
- "搜索并选择候选项"
|
||
- "点击“预览变更”"
|
||
expected: >
|
||
确认区出现 title、修改前值、修改后值、coverChanged 提示四行。
|
||
actual: >
|
||
API 返回 code=0,但页面确认区为空。
|
||
evidence:
|
||
browser: "确认区 DOM 为空,无 diff 行"
|
||
api: "POST /api/fix/preview -> code=0, 含 diff 字段"
|
||
logs: "无报错"
|
||
verification:
|
||
commands:
|
||
- "npm run build"
|
||
- "curl -s -X POST localhost:5173/api/fix/preview -d @fixtures/preview.json"
|
||
browser:
|
||
page: "/fix?fileId=1"
|
||
checks:
|
||
- "预览后出现 4 行 diff:title/before/after/coverChanged"
|
||
dispatch:
|
||
taskId: "orca-task-88"
|
||
dispatchId: "orca-disp-91"
|
||
worker: "dev-worker-1"
|
||
rounds:
|
||
- round: 1
|
||
result: failed
|
||
evidence: "只渲染了 title,缺少 before/after/coverChanged"
|
||
- round: 2
|
||
result: passed
|
||
evidence: "复测 4 行 diff 全部出现,取消不触发写入"
|
||
resolution:
|
||
fixedBy: "dev-worker-1"
|
||
verifiedBy: "test-worker-1"
|
||
verifiedAt: "2026-07-06T09:38:00+08:00"
|
||
leftoverReason: null
|
||
|
||
- id: "BUG-003"
|
||
type: "bug"
|
||
title: "并发保存偶发覆盖他人修改"
|
||
priority: "P1"
|
||
status: "leftover"
|
||
assignee: "developer"
|
||
component: "server/store/notes.go"
|
||
specRefs:
|
||
- "docs/spec/concurrency.md"
|
||
testRefs: []
|
||
description: >
|
||
两个会话同时保存同一条 note 时,后写覆盖先写,无冲突提示。
|
||
stepsToReproduce:
|
||
- "会话 A、B 同时打开 note 42"
|
||
- "A 保存,B 保存"
|
||
expected: >
|
||
B 保存时应检测到版本变化并提示冲突,而非静默覆盖。
|
||
actual: >
|
||
B 直接覆盖 A 的修改,无提示。
|
||
evidence:
|
||
api: "两次 PUT /api/notes/42 均返回 200,无版本校验"
|
||
verification:
|
||
commands:
|
||
- "go test ./server/store/..."
|
||
browser:
|
||
page: "/notes/42"
|
||
checks:
|
||
- "并发保存时后写方收到冲突提示"
|
||
dispatch:
|
||
taskId: "orca-task-90"
|
||
dispatchId: "orca-disp-95"
|
||
worker: "dev-worker-1"
|
||
rounds:
|
||
- round: 1
|
||
result: failed
|
||
evidence: "加了版本号但未在写入路径校验"
|
||
- round: 2
|
||
result: failed
|
||
evidence: "校验只覆盖 API,未覆盖批量导入路径"
|
||
- round: 3
|
||
result: failed
|
||
evidence: "乐观锁与前端重试逻辑冲突,需重新设计"
|
||
resolution:
|
||
fixedBy: null
|
||
verifiedBy: null
|
||
verifiedAt: null
|
||
leftoverReason: "failed after 3 supervised developer rounds; 需重新设计并发模型"
|