From 6cff6ab34c1dbfbe4b2fcad6f10fa586a020cb89 Mon Sep 17 00:00:00 2001 From: 18628386721 <18628386721@163.com> Date: Wed, 29 Jul 2026 17:48:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E6=8E=89=E8=8A=82=E7=82=B9=E7=9A=84?= =?UTF-8?q?=E3=80=8C=E8=AF=B4=E6=98=8E=E3=80=8D=E5=AD=97=E6=AE=B5=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20=E5=AE=83=E5=A1=AB=E5=BE=97=E8=BF=9B?= =?UTF-8?q?=E3=80=81=E5=AD=98=E5=BE=97=E4=B8=8B,=E5=8D=B4=E4=BB=8E?= =?UTF-8?q?=E6=9D=A5=E7=94=BB=E4=B8=8D=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `sub` 声称是「画布上的第二行小字」,但画笔里那支只在 `variant !== 'business'` (步骤图)才走,而全仓的调用点一律是 business:这个字段写了、存了、 一次也没显示过。属性面上那句提示是句假话。 整条清:属性面的一行 · `ProcessNode.sub`(契约) · `FlowNode.sub` · 图↔包两处映射 · 画笔里那支画不出来的分支(连同它带来的「两种画法」分叉, 现在节点框里就一行活动名) · 节点宽度算法里 `node.sub || node.ghost` 的宽框判据 (sub 没了,只剩 ghost 决定宽窄)。 存量数据不受影响:库里没有一条带 sub 的定义(查过),schema 非严格, 真有旧值也只是解析时被剥掉。 五闸绿;契约快照随本提交入库(去一个可选字段,加法的反面,无下游)。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m --- .../contracts/src/api/governance.d.ts | 32 ----------------- .../contracts/src/process-package.d.ts | 8 ----- .../features/gov-process/internal/panel.tsx | 8 ----- apps/web/src/shared/gov/flow/flow-layout.ts | 3 +- .../src/shared/gov/flow/flow-node-paint.ts | 34 +++++-------------- apps/web/src/shared/gov/flow/graph-to-pkg.ts | 1 - apps/web/src/shared/gov/flow/pkg-to-graph.ts | 1 - packages/contracts/src/process-package.ts | 7 ++-- 8 files changed, 14 insertions(+), 80 deletions(-) diff --git a/api-report/packages/contracts/src/api/governance.d.ts b/api-report/packages/contracts/src/api/governance.d.ts index 69eaff7..e8ce7b0 100644 --- a/api-report/packages/contracts/src/api/governance.d.ts +++ b/api-report/packages/contracts/src/api/governance.d.ts @@ -473,7 +473,6 @@ export declare const listProcessPackagesRoute: { kind: z.ZodLiteral<"start">; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional>; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional; id: z.core.$ZodBranded; label: z.ZodString; - sub: z.ZodOptional; layout: z.ZodOptional {node.kind === 'activity' && ( <> - - patch((n) => ({ ...n, sub: e.target.value === '' ? undefined : e.target.value }))} - /> - ; const nodeBase = { id: nodeIdSchema, label: z.string().min(1), - /** 画布上的第二行小字(如「照谱执行 / 临场演绎」)—— 呈现注记,不影响语义 */ - sub: z.string().optional(), + /* + * (已退役 2026-07-30)sub —— 「画布上的第二行小字」。 + * 它只在 `variant !== 'business'` 的步骤图里画,而全仓的调用点一律是 business: + * 填得进、存得下,**却从来画不出来**;属性面上那句「画布上的第二行小字」是句假话。 + */ /** * 画布坐标 —— 布局引擎的输入;不影响语义。 * row/col = 编译布局的行列;x/y = **手绘几何**(编辑器保存后,手绘成为呈现真相)。