From 4fa1f2ddeeb6c789b07a59df965d6ce6709b34cb Mon Sep 17 00:00:00 2001 From: cfdaily Date: Fri, 15 May 2026 23:25:35 +0800 Subject: [PATCH] auto-sync: 2026-05-15 23:25:35 --- .../topic7-interaction-dashboard-proposal.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/design/topic7-interaction-dashboard-proposal.md b/docs/design/topic7-interaction-dashboard-proposal.md index e1d2ce0..ee0b66c 100644 --- a/docs/design/topic7-interaction-dashboard-proposal.md +++ b/docs/design/topic7-interaction-dashboard-proposal.md @@ -391,10 +391,26 @@ Dashboard 后端 API 直接读取黑板数据库: | `/api/comments/{task_id}` | GET/POST | 评论线程读写 | | `/ws/events` | WebSocket | 实时事件推送(M3) | +**并发与权限保护**: + +1. **来源标识**:action 端点必须带 `source` 字段(`dashboard` / `daemon` / `cli`),Daemon 处理时检查来源合法性 + ```json + POST /api/tasks/T-006/action + { "action": "approve", "source": "dashboard", "reason": "方案可行" } + ``` + +2. **乐观锁**:action 请求必须带 `expected_version` 字段,Daemon 校验当前 version 是否匹配,不匹配则拒绝(409 Conflict) + ```json + { "action": "approve", "source": "dashboard", "expected_version": 3 } + ``` + → Dashboard 前端在读取任务详情时获取 version,提交时带回,防止 Dashboard 和 Daemon 并发冲突。 + +3. **用户身份**:Dashboard 评论的 `author` 统一为 `"user"`,与 Agent 的 `"pangtong-fujunshi"` / `"zhangfei-dev"` 等区分 + **关键设计**: - 所有数据来自黑板数据库(单一数据源) - Dashboard 不维护独立状态,是黑板数据的只读视图 + 操作入口 -- 操作端点(approve/reject)直接调用 Daemon API +- 操作端点(approve/reject)通过来源标识 + 乐观锁安全地调用 Daemon API ---