From 94f1c7a4efa9475e9c7b2f5bb571353f0b29049b Mon Sep 17 00:00:00 2001 From: 18628386721 <18628386721@163.com> Date: Thu, 30 Jul 2026 03:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=BC=80=E5=8F=91=E8=A7=84?= =?UTF-8?q?=E8=8C=83:=E7=AB=8B=E3=80=8CHTML=20=E6=8A=A5=E5=91=8A=E6=A8=A1?= =?UTF-8?q?=E7=89=88=E6=B4=BB=E5=8A=A8=E6=8C=81=E6=9C=89,=E4=B8=80?= =?UTF-8?q?=E5=8D=95=E4=B8=80=E6=A8=A1=E7=89=88=E8=B4=AF=E7=A9=BF=E5=A7=8B?= =?UTF-8?q?=E7=BB=88=E3=80=8D=E4=B8=BA=E7=A1=AC=E8=A7=84=E7=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户强调补进规范(§9.3 整节重立,三条硬规矩): ① **关键表单逐张配 HTML 报告模版** —— 模版是活动自己持有的资产 (assets.viewTemplates,随包版本冻结),不是系统临场生成;执行与验收都要配, 人办工单看到的是已排好版的报告(AI 拟值已填、basedOn 的过程成果嵌在正文里), 不是一堆裸字段; ② **从待处理工单到工作成果报告是同一张模版**:在办 = 报告 + 指导/判据; 办结后指导与判据卸下,只剩报告原样进「工作成果」归档。不许两张模版 —— 迟早长歪,人回头对不上账(语义出处:PRD ViewRegion 头注); ③ 一个局面一张模版,不在一张模版里堆条件分支。 同步三处:§4.2 assets 区硬规矩栏、§9.2 执行事项行、§11.2 自测清单 (关键表单逐张有模版、执行/验收都配、待处理与成果同模版)。 纯文档改动,五闸绿。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m --- docs/活动开发规范.md | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/docs/活动开发规范.md b/docs/活动开发规范.md index 74b8679..d604022 100644 --- a/docs/活动开发规范.md +++ b/docs/活动开发规范.md @@ -105,7 +105,7 @@ activities// | ① identity | `activityId / name / packageVersion / category / sdkVersion / checksum / signature?` | **无 paradigm**;`sdkVersion` 与 SDK 精确相等否则拒装;**改了包内容必须升 packageVersion**(同版重装 no-op,改了不升版 = 静默丢失) | | ② contract | 七件契约(§4.3) | | | ③ declarations | `models[] / tools[] / ledger[] / listeners[] / harness` | 运行时**只读这里**的工具与模型声明;监听时限必配否则 `dangling-listener` 拒装 | -| ④ assets | `businessModel{cmmnXml, narrative, dmn} / skills / viewTemplates / cardSchemas / distillHooks` | CMMN 与说明书**同版本发布不允许分叉**(空任一即拒装) | +| ④ assets | `businessModel{cmmnXml, narrative, dmn} / skills / viewTemplates / cardSchemas / distillHooks` | CMMN 与说明书**同版本发布不允许分叉**(空任一即拒装);**关键表单逐张配 HTML 报告模版**(执行与验收都要,待处理与成果同模版,§9.3) | | ⑤ samples | `{name, input, message?, expect:{ports[], payloadShape?}}[]` | **至少 1 条**;首装无历史时以静态审 + 样例集替代回放审 | | ⑥ entry | `{file, checksum}` | 指 .js 产物 | @@ -345,20 +345,35 @@ discretionaryItem/itemControl/…)。**表外构件直接拒**(`assertSubset` | 类 | 字段(PRD `model.ts:106-133` ↔ WOS `card.ts:279-350`) | 用途 | |---|---|---| -| **执行** | `ask`(工作要求)/ `steps[]`(作业指导书分步要点)/ `standard?`(完成标准)/ `basedOn?`(报告正文取自哪份过程成果 —— 人要在数据上作判断,就得把数据摆在表单旁)/ `blocks?` / `fields[]`(回填表单,字段可带 **ai 拟值**)/ `submitLabel?` | 做 AI 的工作要求 —— **原「补全」并入此类**;⚠️ 工具未命中转人也走这张卡(第 12 章②) | +| **执行** | `ask`(工作要求)/ `steps[]`(作业指导书分步要点)/ `standard?`(完成标准)/ `basedOn?`(报告正文取自哪份过程成果 —— 人要在数据上作判断,就得把数据摆在表单旁)/ `blocks?` / `fields[]`(回填表单,字段可带 **ai 拟值**)/ `submitLabel?` | 做 AI 的工作要求 —— **原「补全」并入此类**;回填报告用活动持有的 HTML 模版(§9.3);⚠️ 工具未命中转人也走这张卡(第 12 章②) | | **验收** | `deliverable / criteria(L1-L5)/ actions?(待落地动作意向,读/写)/ portChoice? / passLabel?` | 收 AI 的成果:放行 / 驳回(必附意见) | 对话区另有三张卡:**决策**(选择题,recommend + 后果说明)、**fill 补全卡**(就地要几个 小信息;「没法填的理由」是另一条必走之路)、**rate 评价卡 —— 暂不做**(schema 在,不接)。 -### 9.3 视图模版 +### 9.3 HTML 报告模版:活动持有,一单一模版贯穿始终 -活动推视图两条路:`pushView(blocks)`(结构化块,11 型:callout/kv/badges/table/bars/donut/ +**活动的每一张关键表单,都必须有对应的 HTML 报告模版** —— 模版是**活动自己持有的资产** +(`assets.viewTemplates`,随包版本冻结),不是系统临场生成的。三条硬规矩: + +1. **执行与验收都要配**:执行工单的回填报告、验收工单的成果报告,各有其模版 —— + 人办工单时看到的不是一堆裸字段,是一份**已排好版的报告**(AI 拟值已填、可编辑, + 数据摆在表单旁边,`basedOn` 引用的过程成果就嵌在报告正文里); +2. **从待处理工单到工作成果报告是同一张模版**:工单在办时,卡面 = 报告模版 + + 作业指导 / 验收判据;办结后**指导与判据卸下,只剩报告** —— 它原样进「工作成果」 + 页签成为归档件。不许为「在办」与「归档」各做一张模版:两张迟早长歪, + 人回头核对时对不上账。语义出处:PRD ViewRegion 头注「一张工单 → 卡组一 + (HTML 报告 · AI 已填好、可编辑)+ 卡组二(作业指导 / 验收判据);办结后只剩 + 报告卡 —— 指导与判据是办理时的参照,不进归档件」; +3. **一个局面一张模版**(受理中/已分类/待放行……):局面变了换模版, + 不在一张模版里堆条件分支。 + +推送两条路:`pushView(blocks)`(结构化块,11 型:callout/kv/badges/table/bars/donut/ mail/cards/waiting/files,`card.ts:103-201`)与 `pushHtml(html)`(HTML 模版)。 模版纪律(`activity-sdk/src/view.ts`):容器是 `sandbox=""` iframe,**无脚本执行权、 样式必须自带**;数据由基座推送时填(`data-slot` 取值、`data-rows` 逐行展开); SDK 给了 `viewShell / kvCard / tableCard / noteCard / stagesCard` 拼装件,照 -`activities/quote-intake/src/views/report.ts` 用。**一个局面一张模版**(受理中/已分类/待放行)。 +`activities/quote-intake/src/views/report.ts` 用。 ### 9.4 运行时的卡怎么到人(✅ 链路) @@ -392,7 +407,7 @@ listeners / llmCalls / writes` —— 断言活动这一回合做了什么。工 ### 11.2 自测四段(照 `activities/quote-intake/__tests__/activity.test.ts`) 1. **清单合规**:过 `activityManifestSchema`;监听时限已配;L1/L2 判据可机检;禁区非空 + 调人预算 > 0; -2. **案例模型**:CMMN 双表示齐备;触达世界的项全标 manualActivationRule;末尾有收口验收项; +2. **案例模型与模版**:CMMN 双表示齐备;触达世界的项全标 manualActivationRule;末尾有收口验收项;**关键表单逐张有报告模版**(执行/验收都配、无脚本、待处理与成果同模版); 3. **DMN**:逐规则求值断言(同输入必同结论、优先级、任意格); 4. **入口**:mock host 跑 run —— 各局面的 outcome、推了什么视图、说了什么话、守卫真的拦 (无脚本/裸调用/时限必配)。