基线:鉴权会话+工作组+工作台三区修复+编排工作区+产品设计文档

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
2026-07-27 20:43:35 +08:00
co-authored by Claude Fable 5
parent 61fe181678
commit ac85ecf2ea
119 changed files with 16634 additions and 1246 deletions
@@ -11,6 +11,7 @@
- 错误:`BareCallError` `ReplyRejectedError` `HumanCallBudgetExceededError`
- 端口类型:`CardStore` `MessageOutbox` `MemoryRecorder` `HumanEventPublisher` `Clock` `IdGenerator`
- 用例工厂:`createHumanToolService(deps): HumanToolService`
(读侧两支:`openWorkOrders` 只给在途,`allWorkOrders` 含已办结 —— 工作成果要回看定稿报告)
- 纯函数:`checkWorkOrder` `checkChatCard` `checkWorkOrderReply` `checkChatCardReply`
`arrivalOf` `producesCompletion` `allCriteriaGreen`
- adapter:`createCardStore`;Drizzle 表:`workOrderTable` `chatCardTable`
@@ -115,6 +115,8 @@ export type HumanToolService = {
rejectAndReask(cardId: string, reason: string): Promise<IssuedChatCard>;
openWorkOrders(taskId: TaskId): Promise<WorkOrder[]>;
/** 全部工单(含已办结)—— 工作成果要回看定稿的报告,只给 open 就永远是空的 */
allWorkOrders(taskId: TaskId): Promise<WorkOrder[]>;
chatCards(taskId: TaskId): Promise<ChatCard[]>;
/** org 停用前置检查要问的「待答卡」 */
openCardsOf(staffId: StaffId): Promise<Array<{ cardId: string; title: string }>>;
@@ -243,6 +243,10 @@ export function createHumanToolService(deps: HumanToolServiceDeps): HumanToolSer
return deps.cards.listWorkOrders(taskId, true);
},
async allWorkOrders(taskId) {
return deps.cards.listWorkOrders(taskId, false);
},
async chatCards(taskId) {
return deps.cards.listChatCards(taskId);
},