Archived
harness 与工作台同日修:数据工单确认即入库 · 叫了人不再自动推进(两道结构闸)· 审核卡 = 终局验收卡结构 · 验收清单人点达标 · 迟到守卫不丢放行裁决 · 画面跟着这一拍发出去的卡走 · 成果详情只翻页 · 占位居中 · 进度条
human-tool / ledger / loop-engine / release / task / interaction 六模块与 app 层(desk 路由、engines、consumers、 data-order-landing、case-stamp、reset-runs、seed-activities、容器与 server 装配),web 的 desk-task (ViewRegion / chat-bubbles / review-face)与 app.css、ui-kit 图标;契约 card / manifest; 迁移 0034_task_seq 与迁移日志;api-report 快照;CLAUDE.md 快照、debt、活动开发规范、HTML 报告规范同步。 逐条口径见 CLAUDE.md 快照(2026-08-27 下午至晚)。另一会话做的,一直留在工作树没入库;与同批另两条提交互相依赖。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0167qWjeyBwvfdGovd7FWbCu
This commit is contained in:
@@ -307,6 +307,8 @@ export const workDoneSchema = z.object({
|
||||
by: staffIdSchema,
|
||||
result: workOrderResultSchema,
|
||||
values: z.record(z.string(), z.string()).optional(),
|
||||
/** 人工验收清单里被点成「达标」的那几条(留痕:谁核了什么) */
|
||||
checked: z.array(z.string()).optional(),
|
||||
});
|
||||
export type WorkDone = z.infer<typeof workDoneSchema>;
|
||||
|
||||
@@ -429,6 +431,14 @@ export const acceptanceWorkOrderSchema = z.object({
|
||||
mode: z.literal('acceptance'),
|
||||
deliverable: deliverableIdSchema,
|
||||
criteria: z.array(acceptanceCriterionCheckSchema),
|
||||
/**
|
||||
* **人工验收清单**(2026-08-27 用户定:「验收卡的条目不是系统判断的条目,是人要对这个验收工单的内容
|
||||
* 进行审核需要的步骤」)—— 人核这份工单要走的步骤,一条一句可核对的动作,**每份验收工单固定**
|
||||
* (剧本 `acceptanceChecklist` 声明,引擎发卡时带上)。卡上一条一枚「达标 / 不达标」开关,
|
||||
* 全部点成达标才能按「确认通过」;服务端同样把关(`checked` ⊇ `checklist`)。
|
||||
* 系统判的判据(`criteria`)仍在 —— 它们把提交门,不再摆在卡上让人签。
|
||||
*/
|
||||
checklist: z.array(z.string()).optional(),
|
||||
actions: z.array(actionIntentViewSchema).optional(),
|
||||
/** 报告可修订:字段随成果 schema 渲染,AI 拟值已填 */
|
||||
fields: z.array(formFieldSchema).default([]),
|
||||
@@ -527,6 +537,8 @@ export const decisionCardSchema = z.object({
|
||||
* (工单 · 验收 / 通过 · 驳回),机制仍是决策卡。由剧本 `cardVariant` 声明、引擎决定,不靠模型抄。
|
||||
*/
|
||||
variant: z.enum(['review']).optional(),
|
||||
/** 人工验收清单(与 `acceptanceWorkOrderSchema.checklist` 同一件事)—— 审核卡穿验收工单的衣服,清单也一样带 */
|
||||
checklist: z.array(z.string()).optional(),
|
||||
ask: z.string(),
|
||||
basis: basisSchema,
|
||||
recommend: z.string().optional(),
|
||||
@@ -547,6 +559,8 @@ export const decisionCardSchema = z.object({
|
||||
at: z.iso.datetime(),
|
||||
by: staffIdSchema,
|
||||
note: z.string().optional(),
|
||||
/** 人工验收清单里被点成「达标」的那几条 */
|
||||
checked: z.array(z.string()).optional(),
|
||||
})
|
||||
.optional(),
|
||||
/**
|
||||
@@ -759,6 +773,8 @@ export const workOrderReplySchema = z.discriminatedUnion('mode', [
|
||||
comment: z.string().optional(),
|
||||
/** 选择组的出口选择:恰发一口,随放行一并确认(AM 1.2) */
|
||||
selectedPorts: z.record(z.string(), z.string()).default({}),
|
||||
/** 人工验收清单里点成「达标」的条目 —— 通过时必须把清单点全(服务端把关) */
|
||||
checked: z.array(z.string()).optional(),
|
||||
}),
|
||||
]);
|
||||
export type WorkOrderReply = z.infer<typeof workOrderReplySchema>;
|
||||
@@ -769,6 +785,8 @@ export const chatCardReplySchema = z.discriminatedUnion('k', [
|
||||
cardId: cardIdSchema,
|
||||
value: z.string(),
|
||||
note: z.string().optional(),
|
||||
/** 审核卡的人工验收清单里点成「达标」的条目 —— 选「通过」时必须点全 */
|
||||
checked: z.array(z.string()).optional(),
|
||||
}),
|
||||
z.object({
|
||||
k: z.literal('elicitation'),
|
||||
|
||||
Reference in New Issue
Block a user