openxiangda-skill-kit 2.0.0-alpha.34 → 2.0.0-alpha.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -318,3 +318,26 @@ AppPackage 的边界不变:生产构建仍输出静态前端 `dist`、NestJS O
318
318
  3. 从候选 tarball 新建空目录应用以及绿地同步后的独立参考应用均通过 generate/check/test/build;旧 `ApplicationShell`、仪器和预约源码不再存在。
319
319
  4. release plan 只在参考应用 manifest 与全部公开包候选版本完全一致时生成;正式发布前重新校验 lockfile 与 registry 工件一致。
320
320
  5. 参考验收调用标准 CLI 命令而不要求应用增加仓库私有的 generate 脚本;显式安装候选到参考工作树时先写入一次生成契约,后续隔离副本和普通发布验收只允许 `generate --check`。生成模板必须从 Git 与 OCI 构建上下文排除 `.codegraph`、`.openxiangda`、`.env` 等本地状态。
321
+
322
+ ## 14. 2026-08-17 导航 JSX 双运行时一致性
323
+
324
+ ### 问题证据与能力所有者
325
+
326
+ - 使用当前 `master` 和本地 SDK 在空目录创建应用后,`generate --check` 与类型检查通过,但 `openxiangda test` 在 Node/tsx 加载 `navigation.tsx` 时以 `React is not defined` 失败。
327
+ - 同一文件既是 Umi Admin 的导航事实源,也是模板单测读取的导航事实源;React/Umi 继续唯一拥有 JSX 生命周期,不增加测试专用导航副本。
328
+
329
+ ### 稳定不变量与受影响合同
330
+
331
+ - `applicationRoutes` 和 `adminNavigation` 仍分别是路由与菜单的单一事实源,菜单结构、路径、capability 与运行时行为不变。
332
+ - 不改变 React 19、Umi Max、TypeScript JSX 模式或公开包 API;只让 JSX 模块显式具备在 Umi 与 Node/tsx 两种受支持执行器中的运行时依赖。
333
+ - 影响只限 `create-openxiangda` 生成的新 2.0 应用。1.x、平台服务、既有 AppVersion 与其他租户均不加载该模板源文件。
334
+
335
+ ### 失败、并发、安全与资源边界
336
+
337
+ - 新应用的 `openxiangda test` 继续直接导入生产导航模块;若运行时依赖再次缺失,必须在首次测试中失败,不能用 Mock 或条件分支绕过。
338
+ - 变更不引入网络、持久状态、并发状态或额外浏览器资源,也不改变身份、授权和数据边界。
339
+
340
+ ### 回滚与可证伪验证
341
+
342
+ - 回滚单位是 `create-openxiangda` 的单个补丁提交,不要求迁移已生成应用。
343
+ - 模板单测必须断言导航模块保留显式 React 运行时导入;从本地 SDK 创建的全新应用必须通过 `generate --check`、`check`、`test`、Umi production build 与 Chromium E2E。
@@ -0,0 +1,206 @@
1
+ # OpenXiangda 2.0 最佳实践模板重建计划
2
+
3
+ 状态:2026-08-16 已确认,正在实施
4
+
5
+ 本计划把现有“企业采购申请”从生命周期验收应用提升为 OpenXiangda 2.0 官方最佳实践模板。当前线上版本只证明身份、数据、文件、流程和部署链路可运行,不满足视觉、交互和平台字段完整性要求,在本计划完成前不得再标记为最终模板。
6
+
7
+ ## 1. 设计读取与目标
8
+
9
+ - 页面类型:企业内部管理和流程协作应用。
10
+ - 目标用户:PC 管理人员、移动端业务申请人与审批人。
11
+ - 设计语言:Ant Design Pro 企业后台,统一浅色主题,冷灰画布、白色内容面、单一品牌蓝和必要语义色。
12
+ - 设计参数:视觉变化 3/10,动效 2/10,信息密度 6/10。
13
+ - PC Admin 只服务桌面视口;移动用户端使用独立 UI 树,不缩放或响应式复用 Admin DOM。
14
+ - 已评审设计稿是页面结构、视觉层级、间距、状态和操作顺序的可执行验收合同。业务数据可以变化,但不得以“组件库默认样式”或“仅参考信息架构”为理由偏离设计。
15
+
16
+ ### 1.1 冻结设计基线(2026-08-16 用户确认)
17
+
18
+ 下列四张评审稿是后续实现与截图回归的唯一视觉基线。文件名和 SHA-256 用于避免附件顺序或会话压缩后误认图稿。
19
+
20
+ | 基线 | 评审附件 | SHA-256 | 不可降级的页面合同 |
21
+ | --- | --- | --- | --- |
22
+ | PC 工作台 | `codex-clipboard-0d456ded-03fe-46f3-bc8f-ed93ed003cd7.png` | `007935119779d48e2bb82297035a2ccf9ae86bbfc2ae0960db209ed981dc79be` | 220px 分组侧栏、56px 顶栏、44px 标签栏;问候、四色指标、待办表、四宫格快捷入口、折线趋势和最近活动完整出现 |
23
+ | PC 标准列表 | `codex-clipboard-57286809-2220-42e3-ae70-bcaded18632d.png` | `9e8f40af155c47e846350eb626e07c174426030b1753670f42ed8bd2aa1a4424` | 页标题与主动作、两行结构化搜索区、工具栏、紧凑表格、状态标签、行操作和完整分页几何对齐 |
24
+ | PC 表单与提交预览 | `codex-clipboard-2f203d66-c537-4729-8ce7-02d392739e3f.png` | `024eac21eadea7807ab077b80c1dcfa426f6d8fdd3434955ae0744629392956b` | 表单保持一个主提交动作;保存业务数据并 prepare 后才弹出 Modal;Modal 包含摘要、真实审批路径、返回修改和确认提交 |
25
+ | 移动五核心页 | `codex-clipboard-807017c4-ef50-43dd-bdc2-298902d85ada.png` | `99f6abe17fd7cd1be10f3534d268aa1c8f10f1ad31b3739126597b5d1b6172aa` | 独立工作台、数据列表、表单提交、底部审批预览、流程任务详情;卡片、状态、附件、时间线、底部安全区操作栏和正式图标必须齐全 |
26
+
27
+ 每页实现必须同时通过结构断言、交互断言和指定视口截图回归。字段内容可以换成真实业务数据,页面区块、相对层级、对齐、主动作顺序和语义色不得擅自删减。
28
+
29
+ ### 1.2 线上复核增量基线(2026-08-17)
30
+
31
+ P1-P5 的技术链路交付不等于产品模板验收。用户在 prod-1 preproduction 复核后发现页面仍存在重复信息、列表交互退化、文件组件能力退化、环境入口和流程业务引用错误,因此 P1-P5 的产品状态重新打开;以下七张实拍图与本节合同覆盖 1.1 中冲突的旧描述。
32
+
33
+ | 复核基线 | 评审附件 | SHA-256 | 新增或修正合同 |
34
+ | --- | --- | --- | --- |
35
+ | 当前模板问题页 | `codex-clipboard-ea7a610d-0ebf-4c63-977a-ceb5bcc18ee5.png` | `8ce67f32f9c69d51fd985f8a1623a6c41fcf8760775001a62736ab6fd3d6ddc3` | 顶栏和缓存标签已表达当前位置时,内容区不得重复面包屑、页标题和说明;全局顶栏不显示搜索框 |
36
+ | 参考 Shell | `codex-clipboard-315df6dc-9cbc-4f25-87e6-9e6997ccc30f.png` | `46bd393288080486a573aba9a09768a4f2647badc6fdc76c93d9358041ea14ac` | 侧栏分组、图标、选中态、顶栏与标签几何采用成熟企业后台密度 |
37
+ | 参考侧栏 | `codex-clipboard-458d7e0f-ead5-488d-9c8c-6959294f6672.png` | `40d851713e2f4eaf4c029fc8234d636e6c0f654fc63658fdf10ac322683eb2c5` | 分组、子项、折叠和滚动区可辨识,图标统一使用语义色和正式图标 |
38
+ | 参考标准列表 | `codex-clipboard-928424b7-b02e-49ff-bb08-d5abaa98a70f.png` | `cb3945283db167c4aeb747d8fd5613cf7107d356db72e73d824d56d50170916c` | 筛选默认一行并可展开更多;筛选下方左侧为业务操作,右侧为刷新和列表设置;表格支持服务端排序 |
39
+ | 参考列表设置 | `codex-clipboard-e1f64efb-3634-4563-a251-a9e4e48b339e.png` | `0bb7c01364cb5161b2fe0591409cb0e97132bdf8ea32f37fcc71b155001e317d` | 设置抽屉固定包含“搜索项、列设置、排序、显示”四类账号级偏好,不修改资源合同 |
40
+ | 当前流程预览问题 | `codex-clipboard-60472a98-577b-418d-8eca-34aafded02d9.png` | `421d011f1d939763b02f8b1ff0c7a5c15a0134e38d5129770631d8a26a85d81c` | 提交预览只展示审批路径,不重复业务表单摘要;审批节点必须展示内核解析出的具体审批人,不能用“无需指定审批人”掩盖未解析状态 |
41
+ | 当前流程详情错误 | `codex-clipboard-4a7aadd0-c484-4f87-89cc-583d2a2fc47d.png` | `4263041dddd7307ce69f390f8a36b9195f9d1314d846b47f415fcb5e959268d7` | 流程 Surface 必须提供可验证的 DataRef,详情只能据此读取业务数据;缺失引用是合同错误并须在提交链路修复 |
42
+
43
+ 本轮另外冻结三项行为合同:应用列表打开时优先进入已激活 production,否则自动进入已激活 preproduction;preproduction 顶栏在 production 已发布时提供快捷切换;官方模板必须提供覆盖全部稳定字段类型的验收表单。附件和图片继续由 `openxiangda-field-kit` 消费 Files API,迁移 1.x 已验证的上传、下载、预览、缩略图、进度、失败重试和删除交互,但 2.0 不依赖 1.x 运行包、不新增第二份文件协议。
44
+
45
+ ## 2. 问题证据
46
+
47
+ 1. `ProLayout` 未显式提供唯一菜单选中键,`/admin` 与其子路径可能同时高亮。
48
+ 2. 缓存标签直接使用 `Tabs editable-card` 并以局部 CSS 修补,标签、侧栏、顶栏和页面边界没有共同几何基准。
49
+ 3. 工作台、数据列表和移动页面只完成通用组件拼接,没有落实已评审稿的信息层级、色彩、图标和状态设计;线上复核还发现内容区重复标题、顶栏冗余搜索和标准列表能力退化。
50
+ 4. 部门字段只提供关键词扁平搜索。平台后端能返回真实部门和路径,但当前 2.0 Field Kit 没有根组织浏览、树展开、懒加载、面包屑和完整路径展示。
51
+ 5. 参考应用把用户 ID 同时写入目录值的 `label` 与 `value`,导致列表出现裸 UUID。
52
+ 6. Chromium 测试只验证可见与可点击,没有唯一菜单选中、裸 ID、组织树、视觉截图和布局几何门禁。
53
+ 7. 应用入口固定打开 production,未发布 production 时没有回退到 preproduction;用户端快捷入口丢失应用基础路径并错误跳转到 `/m`。
54
+ 8. 流程预览重复展示业务摘要且没有稳定呈现具体审批人;流程详情收到的 DataRef 不完整时只能展示“业务数据加载失败”。
55
+ 9. 2.0 文件控件只保留最简上传路径,未达到 1.x 已稳定的预览、下载、缩略图、进度、失败恢复和删除体验。
56
+
57
+ ## 3. 能力所有者与稳定不变量
58
+
59
+ | 能力 | 唯一所有者 | 不变量 |
60
+ | --- | --- | --- |
61
+ | 路由、菜单、缓存标签描述 | 应用 route manifest,经 `openxiangda-admin` 投影 | 不维护第二套路由或菜单树;任一路径只选中一个最具体菜单项 |
62
+ | Admin 布局和标准页面 | `openxiangda-admin` | 应用不能复制 Shell、ProTable、ProForm、详情和流程标准壳;内容区不重复顶栏已有上下文 |
63
+ | 移动页面组合 | `openxiangda-user/mobile` | 与 Admin 分离,只消费同一身份、Data、Workflow 和 Field Kit 合同 |
64
+ | 字段值和渲染 | `openxiangda-contracts` + `openxiangda-field-kit` | 保持已经运行稳定的值协议,不以显示字符串替换平台值 |
65
+ | 人员和部门目录 | Platform Server Directory API | Field Kit 不复制组织数据;平台 API 是唯一事实来源 |
66
+ | 文件 | Platform Server Files API + Field Kit | 上传、下载、鉴权、预览和稳定文件值不得由应用自建 |
67
+ | 环境 head 与默认应用入口 | Platform Server Environment Head + 平台管理前端 | production 存在时优先,否则回退 preproduction;前端不维护第二份发布状态 |
68
+ | 显示身份 | Native Principal/RoleSession/Directory | 默认页面不得显示 UUID、内部 code 或原始 JSON |
69
+ | 业务数据和流程状态 | Data/App API 与 Workflow Kernel | 页面只解释合同,不复制权限、审批或状态机规则 |
70
+
71
+ 1.x View、1.x 工作流、1.x 自动化和 `tools/openxiangda` 不依赖本轮包,也不接受本轮修改。
72
+
73
+ ## 4. 实施阶段
74
+
75
+ ### P0 设计合同和门禁
76
+
77
+ - 修正 PC、移动设计文档,删除“只参考信息架构、不还原设计”的降级条款。
78
+ - 为工作台、列表、表单、流程预览、详情和移动五屏记录布局、颜色、间距、状态和唯一主动作。
79
+ - 建立与冻结稿同尺寸的 1536x1024 PC 基线,以及 390x844、375x812 移动视口基线。
80
+
81
+ 完成条件:设计基线可以转换为机器断言,当前线上页面应明确失败。
82
+
83
+ ### P1 Admin Shell
84
+
85
+ - 由最具体的可见菜单路径确定唯一 `selectedKey`。
86
+ - 统一 56px 顶栏、44px 标签栏、220px 侧栏和页面内容网格。
87
+ - 用 Ant Design 公开 Tabs API 和语义槽实现有界缓存标签,不使用默认 editable-card 外观。
88
+ - 完成品牌、折叠、通知、个人中心、身份切换和环境标识的固定位置;移除当前没有完整能力闭环的全局搜索框。
89
+
90
+ 完成条件:菜单唯一选中;标签、顶栏和内容区边界对齐;直接 URL、详情路由和身份切换均保持正确。
91
+
92
+ ### P2 平台 Field Kit
93
+
94
+ - 保持现有人员、部门、地址、附件等稳定值协议。
95
+ - 将 1.x 已验证的部门树交互迁移或桥接到 2.0:根组织、懒加载、关键词搜索、面包屑、完整路径、单选/多选和移动底部面板。
96
+ - 人员选择支持按组织浏览和搜索;列表、详情和表单共享显示解析。
97
+ - 附件与图片继续只走平台文件组件;日期、区间、下拉、级联和地址逐项验证移动体验。
98
+
99
+ 人员按组织浏览本轮决策:
100
+
101
+ - 平台 Directory API 是人员和部门的唯一事实来源,不在应用、Devkit 或浏览器建立组织副本。
102
+ - 新增的人员浏览合同以部门 ID、页码和页大小为输入,直接复用平台现有 `getDepartmentMembersPage(..., true)` 可见范围检查;每页最多 100 人。
103
+ - 关键词搜索保持原合同,按部门浏览是独立的加法合同;失败必须显示可重试错误,不能降级为自由文本或裸 ID。
104
+ - Field Kit 继续持久化 `{ label, value }`,组织路径只作为显示元数据;身份 epoch 变化后丢弃旧请求。
105
+ - 回滚以 Directory 加法路由、Devkit 方法和 Field Kit 消费提交为边界,不迁移数据库、不修改 1.x 控制器。
106
+
107
+ 完成条件:真实平台组织数据可从根节点浏览;源码没有 ID-only 目录值;未知内部编码在开发阶段失败而不是进入页面。
108
+
109
+ ### P3 标准 PC 页面
110
+
111
+ - 工作台:问候、四个有界指标、待办、快捷入口、趋势与最近活动。
112
+ - 数据管理:默认一行筛选、更多筛选、服务端搜索/排序/分页、搜索项/列/排序/显示设置、密度、刷新、导出和有界行操作。
113
+ - 表单:分组、字段策略、附件和一个主提交动作。
114
+ - 流程:点击提交并保存业务数据后才打开真实审批预览 Modal;Modal 只展示含具体审批人的真实路径,不重复业务表单摘要。
115
+ - 详情:业务字段、审批时间线、审计记录和 Surface 允许的操作。
116
+
117
+ 完成条件:设计稿中的层级与操作顺序逐页面通过截图和交互验收,采购领域代码不进入通用包。
118
+
119
+ Admin 工作台还原本轮决策:
120
+
121
+ - 问题证据是冻结基线中的 PC 工作台与当前实现在顶栏信息层级、快捷入口数量、待办表格、指标变化信息和卡片几何上不一致;设计附件是唯一验收源。
122
+ - `openxiangda-admin` 是 Shell 和工作台结构的唯一所有者;模板 HomePage 只提供真实有界数据、图标、文案和跳转,不复制布局 CSS。
123
+ - 稳定合同是 56px 顶栏、44px 标签栏、220px 侧栏、四列指标、左待办/右快捷入口、左趋势/右最近活动;业务数据变化不得导致布局跳动或裸 ID。
124
+ - 请求失败分区降级为可读空态,不阻断 Shell;身份 epoch 变化后废弃旧请求。待办最多 5 条、最近活动最多 5 条、快捷入口最多 4 个、图表最多 7 个时间点。
125
+ - 回滚边界是 `openxiangda-admin` 工作台/Shell 提交和模板 HomePage 组合提交;不修改 Data、Workflow、Directory 或 1.x 运行时。
126
+ - 可证伪验证包括 1536x1024 几何断言、工作台截图基线、唯一菜单选中、四指标/两工作区/两活动区可见与页面无运行时错误。
127
+
128
+ 标准列表、表单、流程与详情本轮决策:
129
+
130
+ - 问题证据是冻结基线中的标准列表和提交预览拥有明确的搜索、工具栏、表格、分页、单一主动作与审批 Modal 层级,而当前实现仍以组件默认排版为主,缺少冻结视口截图门禁。
131
+ - `openxiangda-admin` 唯一拥有标准列表、表单、详情、审批预览与流程详情的页面结构;应用只提供资源/字段定义、业务数据保存函数、文案、图标和路由,不复制通用页面 CSS,也不在页面内重建权限或流程规则。
132
+ - Data/App API 唯一拥有业务数据,Workflow Kernel 唯一拥有 preparation、Surface 和任务状态;页面必须先保存业务数据再 prepare,只有用户点击主提交按钮后才能打开预览,确认后使用同一 preparation token 发起流程。
133
+ - 列表只发有界的服务端分页、筛选和排序请求;搜索提交覆盖旧请求,身份 epoch 变化后旧响应无效。列配置只保存显示偏好,不改变资源合同。删除与流程动作保留 revision/idempotency 并显示明确冲突或失败。
134
+ - 页面不显示裸 ID、内部 code、原始 JSON、token 或未经 Directory/Field Kit 解析的平台值;附件和图片只经 Files/Field Kit,人员、部门、地址、日期、选项等继续保持稳定值协议。
135
+ - 回滚边界是 `openxiangda-admin` 标准页组件与模板组合提交;不修改 Data、Workflow、Directory、Files 后端合同,不触碰 1.x 页面、流程和自动化。
136
+ - 可证伪验证包括 1536x1024 列表和表单/审批预览截图,搜索/重置/排序/分页/列配置交互,提交前预览不存在,保存与 prepare 后 Modal 出现,确认后进入详情,以及流程 Surface 只渲染后端允许操作。
137
+
138
+ ### P4 独立移动用户端
139
+
140
+ - 重建工作台、申请列表、申请表单、提交预览、流程任务详情。
141
+ - 使用正式图标、状态标签、移动卡片、底部导航与安全区操作栏,不使用字符图标。
142
+ - 所有持久化字段经 `openxiangda-field-kit/mobile`。
143
+
144
+ 完成条件:390x844 真机视口下完成申请与审批主路径,不加载桌面 `antd` 或 Admin DOM。
145
+
146
+ 独立移动五页本轮决策:
147
+
148
+ - 问题证据是冻结移动五核心页基线与当前页面在品牌顶栏、正式图标、卡片层级、列表状态、表单密度、审批预览和任务时间线上均不一致;当前模板仍出现字符图标和业务 ID,不能作为官方最佳实践。
149
+ - `openxiangda-user/mobile` 唯一拥有移动 Shell、工作台、列表、表单、审批预览和任务详情结构;模板只提供有界业务数据、字段定义、文案、图标语义和路由,不复制移动页面壳与通用 CSS。
150
+ - 移动端是独立 DOM 与路由树,不加载 `openxiangda-admin` 或桌面 `antd`;所有持久化输入和值展示继续经 `openxiangda-field-kit/mobile`,不得绕过既有人员、部门、地址、日期、选项、附件和图片值协议。
151
+ - Data/App API 唯一拥有业务数据,Workflow Kernel 唯一拥有 preparation、Surface、时间线和操作。提交页只有一个主动作,点击并保存业务数据、完成 prepare 后才显示底部审批预览;详情底栏只展示 Surface 返回且允许的操作。
152
+ - 首页待办、最近使用和快捷入口均有界;列表保持服务端分页、筛选与下拉刷新。身份 epoch 变化后废弃旧响应。目录或文件能力失败时展示可重试状态,不能退化为自由文本、字符占位或裸 ID。
153
+ - 资源边界是 390x844 与 375x812 两个目标视口、底部安全区、列表单页 20 条、首页最近事项最多 5 条、快捷入口最多 4 个;不为桌面宽度增加响应式分支。
154
+ - 回滚边界是 `openxiangda-user`、`openxiangda-field-kit` 移动渲染和模板移动组合提交;不修改稳定字段存储协议、Data/Workflow/Directory/Files 后端合同,也不触碰 1.x View、流程或自动化。
155
+ - 可证伪验证包括五个独立页面结构断言、提交前无预览、prepare 后底部预览、确认后进入流程详情、无裸 UUID/内部 code/字符图标,以及 390x844 和 375x812 截图回归;本地 fixture 只稳定视觉,真实能力仍在 P5 preproduction 验收。
156
+
157
+ ### P5 候选、发布和在线验收
158
+
159
+ - 工具链执行 `pnpm verify:affected`;正式候选执行 `pnpm verify:release` 和 Changesets。
160
+ - 从候选 tarball 在空目录创建新应用并完成 generate/check/test/build。
161
+ - 同步独立参考应用,以同一 AppPackage 部署 prod-1 preproduction。
162
+ - 线上验证 OAuth2、RoleSession、真实 Directory、Data/App API、Workflow 和 Files;通过后才把同一 AppVersion 晋级 production。
163
+
164
+ ## 5. 失败、并发、安全与资源边界
165
+
166
+ - 身份 epoch 变化后取消或丢弃旧请求;菜单、标签和显示缓存不得跨 identity scope。
167
+ - 标签最多 12 个,保活页面最多 6 个;截图基线不能依赖随机数据或内部 ID。
168
+ - 组织树按需加载,单页搜索和子节点都有界;目录失败显示可重试错误,不降级成自由文本输入。
169
+ - 列表只使用服务端分页、排序和筛选;工作台图表只消费受限聚合。
170
+ - 浏览器不持久化 token、权限结论、组织副本、业务响应或流程 preparation token。
171
+ - 任何裸 UUID、原始 JSON、内部环境 key、角色 code 或流程节点 key进入默认页面都视为构建或 E2E 失败。
172
+
173
+ ## 6. 回滚边界
174
+
175
+ - P1-P4 分别以 `openxiangda-admin`、`openxiangda-field-kit`、`openxiangda-user` 和模板提交为源码回滚单元,但不发布混合代际包。
176
+ - 远端回滚以完整 AppVersion 为单位;不在运行时保留旧 Shell、旧移动页面或目录自由输入兼容开关。
177
+ - 目录 API 若需要扩展,只增加有界浏览合同;现有搜索合同保持可用。不得建立第二份组织存储。
178
+ - 1.x 不参与发布、迁移或回滚。
179
+
180
+ ## 7. 可证伪验收矩阵
181
+
182
+ | 范围 | 必须通过 |
183
+ | --- | --- |
184
+ | Shell | 任一路径恰好一个菜单选中;标签边界对齐;无全局搜索和内容区重复标题;直接 URL、关闭、恢复、身份/环境切换正确 |
185
+ | 视觉 | PC 冻结稿尺寸 1536x1024(并补充 1280x800 结构检查);移动 390x844、375x812 截图回归 |
186
+ | 数据 | 默认一行与更多筛选、服务端搜索/排序/分页、四类列表设置、空/错/加载、revision 冲突 |
187
+ | 字段 | 官方验收表单覆盖 `text/textarea/number/money/percent/boolean/date/datetime/dateRange/option/options/radio/checkbox/cascade/user/users/department/departments/attachments/images/address/location/richtext/signature/subtable/json/serial/relation/workflowStatus` |
188
+ | 目录 | 打开即能看到真实根组织;树展开、搜索、路径、单选/多选和失败重试 |
189
+ | 身份 | 页面显示真实姓名/部门;正则扫描页面不存在裸 UUID |
190
+ | 流程 | 提交前没有预览;保存和 prepare 后弹窗;预览仅含具体审批人路径;Surface DataRef 可读业务数据;同意、拒绝、转交、回退、加签和代理按 Surface 展示 |
191
+ | 边界 | 移动包没有 Admin/桌面录入依赖;应用没有自建人员、部门和文件协议 |
192
+ | 发布 | 新建应用与独立参考应用使用相同候选包;preproduction 在线通过后才允许 production 晋级 |
193
+ | 环境 | 应用列表 production 不存在时自动进入 preproduction;preproduction 可切换到已发布 production;用户端跳转保留应用 base path |
194
+
195
+ ## 8. 交付记录
196
+
197
+ | 日期 | 阶段 | 状态 | 证据 |
198
+ | --- | --- | --- | --- |
199
+ | 2026-08-16 | P0 | 已完成 | 完成线上问题审计;PC/移动设计文档已从“信息架构参考”升级为可执行设计合同;本计划已记录所有权、不变量、失败边界、回滚和验收矩阵 |
200
+ | 2026-08-17 | P1 | 已完成 | Admin 按最长可见路径保持唯一菜单激活并支持无路径菜单组;Shell 固定为 220px 侧栏、56px 顶栏、44px 标签栏,具备折叠、面包屑、菜单搜索、通知入口、环境、身份切换和个人中心;工作台完成四色指标、真实待办、四宫格快捷入口、7 日趋势与最近活动。Playwright 在 1536x1024 验证几何、交互、无运行时错误,并冻结 `admin-workbench-1536x1024-chromium-darwin.png` 截图基线 |
201
+ | 2026-08-16 | P2 | 已完成 | Directory v2 已提供按层部门树和按部门分页人员浏览,直接复用平台已有的可见范围,不建立第二份组织存储;Desktop 以左树右人员列表和全局搜索消费合同,Mobile 以独立组织钻取和本部门人员面板消费合同;Field Kit 对仅含 ID 的历史稳定值调用 Directory resolve,未知值显示语义占位而不暴露内部 ID。平台定向 4 测试、Devkit 50 测试、Local Platform 21 测试、Field Kit 8 测试与 `verify:affected` 35/35 任务通过 |
202
+ | 2026-08-17 | P3 | 已完成 | 标准列表将主动作、搜索卡、表格工具、服务端分页与行操作分层;详情统一字段渲染与审计;流程表单按 section 分组且只有一个主提交动作,保存业务数据并 prepare 后才展示含业务摘要和真实节点的确认 Modal,确认后进入无裸 ID/code 的流程详情。已冻结 `admin-data-list`、`admin-data-detail`、`admin-workflow-form`、`admin-workflow-preview`、`admin-workflow-detail` 五张 1536x1024 Chromium 基线,并以第二次不更新快照的运行证明基线稳定;边界 fixture 仅用于视觉确定性,真实 PostgreSQL/NestJS 和 preproduction 验收仍保留在 P5 |
203
+ | 2026-08-17 | P4 | 已完成 | 独立移动用户端已按冻结稿重建工作台、数据列表、表单提交、底部审批预览和流程任务详情;使用正式 SVG 图标、语义状态、移动卡片、安全区操作栏和独立路由树,人员、部门、日期、选项、地址、附件与图片仍全部经 `openxiangda-field-kit/mobile`。已冻结五张 390x844 核心页基线和一张 375x812 工作台基线;连续不更新快照运行 2/2 通过,页面无裸 ID/code,`verify:affected` 19/19 任务通过,移动入口依赖门禁确认未加载桌面 Admin/Ant Design。视觉 fixture 只用于确定性截图,真实 OAuth2、Directory、Data、Workflow 与 Files 保留到 P5 prod-1 preproduction 验收 |
204
+ | 2026-08-17 | P5 | 已完成 | 平台后端不可变版本 `20260817-043631-6fd2f6136179abca` 已部署 prod-1,102 条 SQL migration 预检为 0 pending/0 conflict,K3s 后端 1/1 Ready;参考应用 AppVersion `e4713605-fd2d-4710-9b44-518ac779465d` 只部署 preproduction。真实 OAuth2 用户和应用管理员 RoleSession 验证 Directory 根部门/部门人员/裸 ID 解析、Data/App API 用户审计字段、Files 完整下载;Workflow 实例 `139a39ba-7f6e-4840-a25a-40933917166b` 完成部门负责人、财务复核员、采购管理员三角色切换和审批,最终 `approved`,时间线与 created/completed 工作中心均通过。独立参考应用 `da67d7d` 固化了仅允许 preproduction、默认只读且不输出凭据的可重复验收脚本和收据;production 保持停止,平台入口、参考应用 Admin 与 1.x HGY Admin 均返回 HTTP 200 |
205
+ | 2026-08-17 | 产品复核 | 重新打开 | prod-1 实拍证明 P1/P3/P5 仍有可见回归:重复页面上下文、列表设置缺失、文件控件退化、流程预览与 DataRef 错误、环境入口错误。此前“已完成”仅保留为技术链路证据,不再代表官方模板验收通过;按 1.2 增量基线重新开发、截图和在线验收 |
206
+ | 2026-08-17 | 产品复核本地修复 | 已完成,待线上 | 已关闭内容区重复 PageHeader 与全局搜索;标准列表具备默认单行/更多筛选、平台目录筛选、左右工具区和四类账号级设置;Files Field Kit 恢复拖拽、图片、进度、取消、鉴权预览、下载和未绑定清理;审批预览只展示具体审批人路径,Surface 统一 `dataRef`;应用入口 production 不存在时回退 preproduction,用户端链接保留应用 base path;组件验收页覆盖全部稳定字段类型。Admin Chromium 主链路 1/1、Mobile 2/2、Admin/Field Kit 单元测试与模板生产构建已通过,新增 `admin-field-gallery-*`、更新 `admin-data-*` 与 `admin-workflow-*` 1536x1024 基线;尚未替代 prod-1 真实 OAuth2/Directory/Data/Workflow/Files 验收。 |
@@ -32,7 +32,7 @@
32
32
  | 确定性工具链发布 | Changesets 版本提交、冻结工件清单、release receipt | 已交付 | `verify:release` 已成为唯一候选验证入口并产出绑定 HEAD/registry/模式/工件摘要的 `validated` receipt;`release:publish` 已以同一冻结工件完成真实候选发布,未重跑正式门禁,并在发布后显式同步 reference lock;工作区单写者、不可变工件、可恢复阶段、Skill 与文档门禁均通过,详见[发布验证凭据](./release-verification-receipt-v2.md) | 后续发布继续只消费机器计划与 Changesets,不新增 AI 临场选包、升版或跳过门禁路径 |
33
33
  | 环境配置内核 E0-E6 | AppVersion/component revision + native Runtime Environment + minimal Environment Head + 环境运行态 | E1-C0/C1/S0/S1/T0 已完成 | breaking config/contracts v3、平台纯编译器、六领域不可变投影、聚合投影、AppVersion binding、compile receipt、精确 artifact shadow prepare 与真实 PostgreSQL 并发/来源防伪/绑定后不可变已经通过;全新 `openxiangda-v2-native-reference-app` 由候选 tarball 创建并完成 check/test/build,连续构建逐字节一致,config/contract v3 闭包和 artifact/manifest 篡改拒绝已进入发布门禁 | 下一步进入 A0 Native 环境授权;随后实现 Data physical/logical、最小 Head CAS、pending credential、调用委托/网关断言、runtime lease、候选 GC 与 generation cutover。旧 alpha 只留审计历史,不做双读、双写或导入 |
34
34
  | 授权内核 A0-N/C/P | 不可变 authz revision + 环境 authz state + native role/scope 表 | 已确认实施;N0/N1/N2/C1/C2/P 完成 | N1/C1 建立不可变定义、两环境 state 与原子版本;N2 建立独立 Native 运行表与局部撤权;C2 建立 DB-authoritative evaluator、request cache、环境/版本 cache namespace、边界 TTL 与 RelationshipGrant 直读;P 升级 `native-2` 配置契约并建立 source definition、projection state/job/receipt/value/closure/effective grant、Data API 与 membership 原子失效、冷启动恢复与 strict gate;89 个 SQL migration 校验、35 个 2.0 migration 真实 PostgreSQL 幂等应用、39 个平台套件 / 263 项测试和工具链全 workspace 测试通过 | 当前推进 N3-N5。alpha membership/grant 不复制、不迁移,禁止给 legacy 表补 environmentKey 或建立长期双读/双写 |
35
- | Ant Design Pro v6 Admin 全量切换 | Ant Design Pro v6 承担通用 Admin;`openxiangda-admin` 承担平台集成 | 已交付基线 | Vite/旧自研 Shell 与仪器示例已从模板删除;React 19、Ant Design 6、Umi Max 4、ProComponents 3、utoopack、ProLayout、ProTable、ProForm、Field Kit 和企业采购参考应用已落地。桌面 Chromium 单链路通过工作台、菜单、会话标签、稳定角色切换、列表/详情、独立供应商表单、工作中心、单按钮流程提交和个人中心;正式包已发布,仓库外参考应用使用 registry lock 构建,并以同一 AppPackage 完成 preproduction→production 晋级 | 移动用户端 Field Kit 已有独立 renderer;完整移动页面模板与设备 Chromium 验收另列后续主题,不回填到 PC Admin |
35
+ | Ant Design Pro v6 Admin 全量切换 | Ant Design Pro v6 承担通用 Admin;`openxiangda-admin` 承担平台集成 | 技术链路已交付,最佳实践模板重建中 | Vite/旧自研 Shell 与仪器示例已从模板删除;React 19、Ant Design 6、Umi Max 4、ProComponents 3、utoopack、ProLayout、ProTable、ProForm、Field Kit 和企业采购参考应用已落地。线上审计发现双菜单高亮、默认标签几何、页面视觉和平台字段交互未达到设计合同,当前应用只作为 lifecycle acceptance app;P1 已完成唯一菜单激活和标签第一轮重建,单测/构建与桌面/移动 Chromium 通过 | 按[最佳实践模板重建计划](./best-practice-template-rebuild-v2.md)继续 P1-P5;完成截图、真实组织和 prod-1 预发验收前不得宣称最终模板 |
36
36
  | 独立移动用户端标准页面 | `openxiangda-user` 拥有用户端身份生命周期和页面组合;Field Kit 拥有移动字段值/控件;平台拥有身份、数据、流程和文件事实 | 已实现,待线上验收 | 已新增无 UI Native RoleSession Provider,以及移动工作台、数据列表/表单/详情、流程提交/工作中心/任务/实例页面;同一 AppPackage 内 `/admin` 与 `/m` 是两个独立懒加载 UI 树,根入口只做一次设备选择;流程预览只在业务保存和 prepare 后弹出,字段统一经过 `openxiangda-field-kit/mobile`;模板 check/test/build、桌面/移动 Chromium、创建器快照和 `verify:affected` 通过;14 个候选 tarball 已在仓库外创建全新应用,完成确定性 AppPackage、真实 PostgreSQL/NestJS/本地平台、桌面/移动 Chromium、工作流/事件/定时/并发/重放与资源限制验收 | 发布正式候选并用 prod-1 preproduction 验证真实 OAuth2、RoleSession、Data API、Workflow 和文件链路;不复用 PC Admin DOM 或样式树 |
37
37
  | 前端动态挂载路径 | Platform Server 注入 runtime base;`openxiangda-admin` 适配 Umi basename | 已交付 | `openxiangda-admin@2.0.0-alpha.26` 与 `create-openxiangda@2.0.0-alpha.27` 已发布;参考应用的同一前端 digest 先部署 preproduction 再晋级 production。正式根入口和业务深链均返回 200、`application-v2`、production 环境修订和正确 runtime base,全部 JS/CSS 资源 200;Chrome 保持 `/view/openxiangda-v2-reference-app/` 并显示应用标题 | 后续路由能力只按独立需求增加;不改 hash history,不增加环境专用构建或第二套路由状态 |
38
38
  | 稳定字段值合同与服务端 UI 依赖边界 | `openxiangda-contracts` 拥有值形状;Field Kit 拥有 codec/平台控制器/renderer | 已交付 | 稳定值类型已移到无依赖 contracts,Field Kit 保留前端重导出,模板 domain 删除 Field Kit;13 个对应 npm 候选已发布并打 Git tag。参考应用 amd64 镜像约 63.8MB、生产依赖 85 包且不含 Field Kit/React/Ant Design;同一 AppPackage 已完成 prod-1 preproduction→production 晋级,正式根路由、深链和六个首屏资源均返回 200,详见[稳定字段值合同与 UI 依赖边界](./field-value-contract-boundary.md) | 后续只按新字段合同或后端制品边界独立演进,不把 UI 运行时重新引入 Nest 镜像 |
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## 2. 产品与视觉基线
21
21
 
22
- 本轮先生成并评审了五屏移动设计板:工作台、数据列表、表单提交、提交后的审批预览、流程任务详情。实现采用其中的信息架构,而不是逐像素复制生成图:
22
+ 本轮先生成并评审了五屏移动设计板:工作台、数据列表、表单提交、提交后的审批预览、流程任务详情。设计板是页面结构、视觉层级、间距、状态和操作顺序的可执行合同;业务示例数据可以变化,但实现不能退化成移动组件库默认皮肤或只保留信息架构:
23
23
 
24
24
  - 接受白底卡片、浅灰页面底色、中低信息密度、44px 以上触摸目标和底部安全区;
25
25
  - 接受首页指标与快捷入口、记录卡片列表、分区表单、底部主操作、纵向审批路径和任务页固定操作栏;
@@ -2,12 +2,12 @@
2
2
 
3
3
  状态:2026-08-16 已评审,作为 Ant Design Pro v6 全量切换的实现输入。
4
4
 
5
- 这组设计只约束信息架构、密度、操作层级和视觉 token。最终实现必须使用锁定的 Ant Design Pro v6、ProComponents 与 Ant Design 6 公共 API,并以真实浏览器、响应式、可访问性和协议验收为准,不能把图片当成业务数据或逐像素截图模板。
5
+ 这组设计是信息架构、视觉层级、布局几何、密度、操作顺序和状态表现的可执行验收合同。最终实现必须使用锁定的 Ant Design Pro v6、ProComponents 与 Ant Design 6 公共 API,并以真实浏览器、可访问性、协议和截图回归共同验收。业务数据不要求与稿件相同,但不能用组件库默认样式、临时 CSS 或“仅参考信息架构”解释明显的视觉与交互偏差。
6
6
 
7
7
  ## 设计参数
8
8
 
9
9
  - 模式:2.0 全量重构,不保留旧 Shell 或旧页面兼容层。
10
- - 视觉变化:3/10;动效:2/10;信息密度:5/10。
10
+ - 视觉变化:3/10;动效:2/10;信息密度:6/10。
11
11
  - 主题:统一浅色;冷灰背景、白色内容面、单一 Ant Design 蓝色强调。
12
12
  - 形状:控件与内容面统一 8px 圆角,细边框优先,阴影克制。
13
13
  - 操作:一个操作面只有一个主动作;错误、空、加载和重试是必需状态。
@@ -22,3 +22,5 @@
22
22
  | 流程提交 | [workflow-submit-modal.png](./workflow-submit-modal.png) | 页面只保留“提交申请”主按钮;点击后 prepare 并在 Modal 展示真实审批路径,确认后用稳定幂等键启动流程。 |
23
23
 
24
24
  示例业务统一使用企业采购申请,只作为验收载体;采购领域代码不得进入 `openxiangda-admin`。
25
+
26
+ 完整重建阶段、能力所有权和机器验收见[最佳实践模板重建计划](../../architecture/best-practice-template-rebuild-v2.md)。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda-skill-kit",
3
- "version": "2.0.0-alpha.34",
3
+ "version": "2.0.0-alpha.36",
4
4
  "description": "Validation and deterministic packaging for OpenXiangda 2.0 AI skills.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,7 +21,7 @@
21
21
  "README.md"
22
22
  ],
23
23
  "dependencies": {
24
- "openxiangda-devkit-core": "2.0.0-alpha.25"
24
+ "openxiangda-devkit-core": "2.0.0-alpha.26"
25
25
  },
26
26
  "devDependencies": {
27
27
  "tsx": "4.23.12",