openxiangda 2.31.9 → 2.32.0
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.
- package/dist/browser/Shell.d.ts.map +1 -1
- package/dist/browser/Shell.js +50 -23
- package/dist/browser/Shell.js.map +1 -1
- package/dist/browser/admin-shell.d.ts +72 -0
- package/dist/browser/admin-shell.d.ts.map +1 -0
- package/dist/browser/admin-shell.js +14 -0
- package/dist/browser/admin-shell.js.map +1 -0
- package/dist/browser/application.d.ts.map +1 -1
- package/dist/browser/application.js +4 -1
- package/dist/browser/application.js.map +1 -1
- package/dist/browser/components/platform-fields/ZonedDateTimeField.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/ZonedDateTimeField.js +13 -2
- package/dist/browser/components/platform-fields/ZonedDateTimeField.js.map +1 -1
- package/dist/browser/components/platform-fields/zoned-date-time.d.ts +7 -0
- package/dist/browser/components/platform-fields/zoned-date-time.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/zoned-date-time.js +29 -0
- package/dist/browser/components/platform-fields/zoned-date-time.js.map +1 -1
- package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
- package/dist/browser/platform-client.d.ts +2 -0
- package/dist/browser/platform-client.d.ts.map +1 -1
- package/dist/browser/platform-client.js +6 -1
- package/dist/browser/platform-client.js.map +1 -1
- package/dist/browser/ui-provider.d.ts +3 -1
- package/dist/browser/ui-provider.d.ts.map +1 -1
- package/dist/browser/ui-provider.js +3 -2
- package/dist/browser/ui-provider.js.map +1 -1
- package/dist/react.d.ts +1 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +1 -0
- package/dist/react.js.map +1 -1
- package/documentation/AGENTS.md +1 -1
- package/documentation/data-authz.md +10 -11
- package/documentation/design-workflow.md +2 -2
- package/documentation/frontend.md +29 -3
- package/documentation/getting-started.md +7 -7
- package/documentation/manifest.json +5 -5
- package/package.json +26 -21
- package/releases/2.32.0.json +38 -0
- package/skills/manifest.json +1 -1
- package/skills/openxiangda-v2/SKILL.md +6 -6
- package/skills/openxiangda-v2/references/data-authz.md +10 -11
- package/skills/openxiangda-v2/references/design-workflow.md +2 -2
- package/skills/openxiangda-v2/references/frontend.md +29 -3
- package/skills/openxiangda-v2/references/getting-started.md +7 -7
|
@@ -11,17 +11,16 @@ create/update 闭包返回的值。人员和部门保存平台目录真实 ID;
|
|
|
11
11
|
|
|
12
12
|
字段策略支持 `read`、`create`、`update` 和 `mask`。显式空数组拒绝,能力数组采用 all-of。无权更新字段不仅 disabled,还必须从更新 payload 删除。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`data.audit-read-access`,旧平台会在发布前拒绝。
|
|
14
|
+
`id`、`revision`、`created_at`、`updated_at`、`created_by`、`updated_by` 是基础元数据:
|
|
15
|
+
只要有记录读取权限,就可读取、筛选、排序、聚合和导出,不需要额外字段权限。
|
|
16
|
+
它们仍由平台生成,不能通过业务字段写入来伪造;记录、租户、环境权限和匿名公开字段白名单仍然生效。
|
|
17
|
+
|
|
18
|
+
模型可声明 `audit: { read: false }` 禁止普通用户查看变更历史;需要保留管理者查看时,
|
|
19
|
+
使用 `audit: { read: ['app:your-app:audit:read'] }`,先在 `authz.capabilities` 声明该能力并授予相应角色,
|
|
20
|
+
也可以引用已有管理权限。历史可能包含过去的业务值,因此不因基础元数据开放而自动开放。
|
|
21
|
+
审计策略引用能力,不新建能力或改变其所有者;缺失引用在发布前失败。
|
|
22
|
+
为兼容历史包,编译器仍物化审计元数据策略作为历史接口的授权声明,当前平台读取基础元数据时忽略这些额外 read 限制。
|
|
23
|
+
应用可信后端和超级管理员保持原语义。该声明需要 `data.audit-read-access`;基础元数据开放需部署 2026-09-29 对应平台迁移。
|
|
25
24
|
|
|
26
25
|
```bash
|
|
27
26
|
pnpm openxiangda check
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
开始界面工作前,从当前 AppSpec、平台契约和用户材料形成一个短设计输入,至少明确:
|
|
15
15
|
|
|
16
16
|
- 目标用户、主任务、页面归属以及 PC/移动设备范围;
|
|
17
|
-
-
|
|
17
|
+
- 必须保留的平台路由与授权导航事实、字段协议、权限和数据来源;Shell 外观可通过正式扩展接口自定义;
|
|
18
18
|
- 页面信息层次、关键操作,以及空、加载、失败、拒绝、校验、提交中和成功状态;
|
|
19
19
|
- 用户提供的品牌、参考图和素材授权;没有品牌事实时标记为 Agent 推断;
|
|
20
20
|
- 目标视口、可访问性、内容长度、数据量和性能边界;
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
## 页面归属与平台边界 {#adapter}
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
应用结构先于视觉:标准管理后台是默认骨架,必须保留平台后台路由、授权与显式菜单,Shell 外观可定制、
|
|
41
41
|
资源表单、数据列表、详情/编辑、权限和流程入口。Agent 可以在这些边界内优化布局、视觉和
|
|
42
42
|
交互,但不能用设计图、独立原型、单页 HTML 或 iframe 替代后台。
|
|
43
43
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
标准管理后台是每个业务应用的默认开发骨架,必须保留后台 Shell、显式菜单、资源表单、数据列表、详情/编辑、权限和流程入口。开发顺序先完成后台资源与契约,再实现用户端 PC/移动端;不能以用户端首页或设计原型替代后台。
|
|
22
22
|
|
|
23
|
-
Agent
|
|
23
|
+
Agent 可以在标准后台内部优化布局、视觉和交互,后台通过默认 Shell 或 `ui.admin` 扩展复用平台导航、字段行为和权限。用户端 PC 与移动端按真实旅程分别设计,通过平台 runtime/Data API 使用后台数据。图片参考和原型不拥有业务事实;禁止用图片、单页 HTML、iframe 或自定义假后台替换标准后台,也不能把后台权限、导航状态复制到用户端。
|
|
24
24
|
|
|
25
25
|
发布前分别验证后台入口、表单、数据列表、流程入口和用户端 PC/移动端入口;没有完成后台骨架的应用不得发布。
|
|
26
26
|
|
|
@@ -31,9 +31,9 @@ Agent 可以在标准后台内部优化布局、视觉和交互,但后台仍
|
|
|
31
31
|
| 独立门户、申请或用户任务 | 按实际旅程选择 `surface: 'user'`,拥有独立布局 |
|
|
32
32
|
| 确有手机使用需求的用户任务 | 独立移动 user 页面,使用 `openxiangda/mobile` 和 Field Kit |
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
“自定义页面”可以直接放在标准后台内。应用编写业务内容,runtime 自动套用默认或应用提供的唯一 Shell;自定义布局使用 `ui.admin`,无需复制 Router 或改成 user 页面。模板 `/home` 是独立用户页占位,不能不经页面选型就当作业务默认入口。
|
|
35
35
|
|
|
36
|
-
后台菜单的分组、名称、顺序、图标由 `frontend.admin.navigation` 配置;标准视图控制字段与操作,工具栏/行/详情有动作插槽,自定义 React 内容通过 contributions
|
|
36
|
+
后台菜单的分组、名称、顺序、图标由 `frontend.admin.navigation` 配置;标准视图控制字段与操作,工具栏/行/详情有动作插槽,自定义 React 内容通过 contributions 接入。通过 `ui.admin.shell` 可替换整个后台外观,也可用 `header`、`sidebar`、`footer` 插槽局部扩展。后台页面仍使用 admin surface,路由与权限由平台维护。
|
|
37
37
|
|
|
38
38
|
应用根路径由生成的 `routeManifest.rootEntry` 分流;`/admin` 根据当前用户可访问的显式菜单选择后台首页。交付时分别核验平台应用列表入口、根路径、后台入口和业务深链接。无后台菜单不能解释为缺少模型;没有管理后台的用户应用也不需要为了消除空状态伪造 CRUD 页面。
|
|
39
39
|
|
|
@@ -445,3 +445,29 @@ pnpm --filter @app/web build
|
|
|
445
445
|
## 具名工作流私有草稿
|
|
446
446
|
|
|
447
447
|
普通创建能力被应用关闭时,使用 `createWorkflowFormDraftClient('contracts', { workflowCode: 'contract-approval', operationCode: 'submit-contract-approval' })`(从 `openxiangda/react` 导入)。客户端提供 `list/save/remove`,保持当前用户、环境、工作流与具名操作范围;仅支持默认 create 表单,不包含 Native submit。保存 `values` 与已声明的 `state`;正式提交仍将既有 `formDraft:{resourceCode,id,expectedRevision,mode:'create'}` 交给业务操作的 BusinessProcess 原子消费。服务端从真实业务命令核验工作流/操作,不能传任意范围冒用草稿。需先部署支持该能力与新增草稿作用域列的平台版本;不得通过增加普通 NativeCreate 或本地存储绕过拒绝。
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
## 应用自定义后台壳层
|
|
451
|
+
|
|
452
|
+
`OpenXiangdaApplication` 的 `ui.admin` 允许应用定义完整后台布局,不需要隐藏平台 DOM。
|
|
453
|
+
|
|
454
|
+
```tsx
|
|
455
|
+
import type { AdminShellProps } from 'openxiangda/react';
|
|
456
|
+
function ProductAdmin({ children, navigation, identity, title, navigate, logout, loggingOut }: AdminShellProps) {
|
|
457
|
+
return <div className="product-admin">
|
|
458
|
+
<header><strong>{title}</strong><span>{identity.subjectProfile.displayName}</span>
|
|
459
|
+
<button disabled={loggingOut} onClick={() => void logout()}>退出登录</button></header>
|
|
460
|
+
<aside>{navigation.map(group => <nav key={group.code} aria-label={group.label}>
|
|
461
|
+
{group.items.map(item => <button key={item.code} onClick={() => navigate(item.path)}>{item.label}</button>)}
|
|
462
|
+
</nav>)}</aside><main>{children}</main>
|
|
463
|
+
</div>;
|
|
464
|
+
}
|
|
465
|
+
// 在既有 OpenXiangdaApplication 上增加,其他契约 props 原样保留:
|
|
466
|
+
// ui={{ theme, admin: { shell: ProductAdmin, centerNavigation: { workflow: false, messages: false } } }}
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
`navigation` 已按当前角色并集和读取视角过滤,`selectedPath`、`homePath`、`pathname`、`search` 来自平台 Router;请直接渲染,不保存另一份角色或菜单状态。`centers` 为可见的审批工作中心与消息中心入口;隐藏中心导航仅改变展示,不禁用能力或深链接。隐藏后应从业务页为审批人提供任务入口。
|
|
470
|
+
|
|
471
|
+
可只提供 `header`、`sidebar` 或 `footer`(接收 `AdminShellModel`)。整体 `shell` 额外收到 `children` 与 `slots`,可复用默认部件或完全自行排版。自定义壳层接管后台资源列表、新增、详情、编辑、移动深链以及后台业务页面;标准字段、抽屉、未保存提示和授权继续由平台组件负责。登录页和用户页不受影响。组件在模块顶层声明,避免每次渲染重新创建组件类型导致表单重挂载。
|
|
472
|
+
|
|
473
|
+
无 `ui.admin` 时沿用默认后台。扩展不能越过 `adminAccess`、页面能力或 Data API 记录权限;不能自行创建第二个 Router、认证会话或数据权限状态。验收应覆盖应用入口、刷新深链、无权角色、PC/移动、键盘和壳层异常恢复。
|
|
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
|
|
|
68
68
|
以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
pnpm dlx openxiangda@2.
|
|
72
|
-
pnpm dlx openxiangda@2.
|
|
73
|
-
pnpm dlx openxiangda@2.
|
|
74
|
-
pnpm dlx openxiangda@2.
|
|
71
|
+
pnpm dlx openxiangda@2.32.0 skill install --force
|
|
72
|
+
pnpm dlx openxiangda@2.32.0 auth status --base-url <平台地址> --json
|
|
73
|
+
pnpm dlx openxiangda@2.32.0 login --cwd my-app --base-url https://platform.example.com
|
|
74
|
+
pnpm dlx openxiangda@2.32.0 create my-app --base-url https://platform.example.com
|
|
75
75
|
cd my-app
|
|
76
76
|
pnpm openxiangda context --json
|
|
77
77
|
pnpm openxiangda dev
|
|
@@ -174,9 +174,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
|
|
|
174
174
|
无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
|
|
175
175
|
|
|
176
176
|
```bash
|
|
177
|
-
pnpm dlx openxiangda@2.
|
|
178
|
-
pnpm dlx openxiangda@2.
|
|
179
|
-
pnpm dlx openxiangda@2.
|
|
177
|
+
pnpm dlx openxiangda@2.32.0 auth status --base-url <平台> --json
|
|
178
|
+
pnpm dlx openxiangda@2.32.0 source resolve <仓库URL> --base-url <平台> --json
|
|
179
|
+
pnpm dlx openxiangda@2.32.0 source clone <仓库URL> <新目录> --base-url <平台> --json
|
|
180
180
|
```
|
|
181
181
|
|
|
182
182
|
登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "openxiangda.documentation/v1",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.32.0",
|
|
4
4
|
"topics": [
|
|
5
5
|
{
|
|
6
6
|
"id": "getting-started",
|
|
7
7
|
"title": "安装与开始开发",
|
|
8
8
|
"file": "getting-started.md",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "d1282c0b4d50e3ca5a76c8f6e1f271809eb9ae0669b7f32e6a9ef784564b7b8b"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"id": "product-design",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"id": "design-workflow",
|
|
19
19
|
"title": "Agent 原生视觉设计与实现",
|
|
20
20
|
"file": "design-workflow.md",
|
|
21
|
-
"sha256": "
|
|
21
|
+
"sha256": "1aa7a747fd07d41c245eb9de6eef0941cd300908beac007ca49f0aff0e38e46b"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"id": "interaction-patterns",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"id": "frontend",
|
|
61
61
|
"title": "页面与标准组件扩展",
|
|
62
62
|
"file": "frontend.md",
|
|
63
|
-
"sha256": "
|
|
63
|
+
"sha256": "d2e313a5bfffc9aea46e4f9936ae79908588c2a4727824e2b211b886baa1f392"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
"id": "field-components",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"id": "data-authz",
|
|
73
73
|
"title": "数据查询与权限",
|
|
74
74
|
"file": "data-authz.md",
|
|
75
|
-
"sha256": "
|
|
75
|
+
"sha256": "5c8592f0b45e14c619b6146c6570c65161f0e0cb8ee86724050b3417f9e90e50"
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
"id": "public-access",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openxiangda",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.32.0",
|
|
4
4
|
"description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"antd-mobile": "5.42.3",
|
|
65
65
|
"dayjs": "1.11.18",
|
|
66
66
|
"docx-preview": "0.3.7",
|
|
67
|
-
"openxiangda-cli": "2.6.
|
|
67
|
+
"openxiangda-cli": "2.6.12",
|
|
68
68
|
"openxiangda-contracts": "2.33.0",
|
|
69
|
-
"openxiangda-devkit-core": "2.34.
|
|
69
|
+
"openxiangda-devkit-core": "2.34.4",
|
|
70
70
|
"openxiangda-legacy": "npm:openxiangda@1.0.269",
|
|
71
|
-
"openxiangda-mcp": "2.0.
|
|
71
|
+
"openxiangda-mcp": "2.0.60",
|
|
72
72
|
"openxiangda-nest": "2.9.0",
|
|
73
|
-
"openxiangda-skill-kit": "2.3.
|
|
73
|
+
"openxiangda-skill-kit": "2.3.35",
|
|
74
74
|
"xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
@@ -136,36 +136,41 @@
|
|
|
136
136
|
},
|
|
137
137
|
"openxiangdaRelease": {
|
|
138
138
|
"schemaVersion": "openxiangda.release-notes/v1",
|
|
139
|
-
"version": "2.
|
|
139
|
+
"version": "2.32.0",
|
|
140
140
|
"status": "reviewed",
|
|
141
|
-
"title": "OpenXiangda 2.
|
|
142
|
-
"summary": "
|
|
143
|
-
"newFeatures": [
|
|
141
|
+
"title": "OpenXiangda 2.32.0:自定义后台壳层与精确时间交互",
|
|
142
|
+
"summary": "提供正式后台壳层扩展,改进时间禁选、业务错误与内网开发诊断。",
|
|
143
|
+
"newFeatures": [
|
|
144
|
+
"应用可通过 ui.admin 提供完整后台壳层或顶栏、侧栏、页脚插槽,消费权限过滤后的导航与身份。",
|
|
145
|
+
"消息与待办导航可分别配置显示,资源深链接与移动端页面统一使用自定义壳层。"
|
|
146
|
+
],
|
|
144
147
|
"fixes": [
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
+
"日期时间控件按时区精确禁用小时、分钟、秒,保留输入校验和受控值。",
|
|
149
|
+
"业务拒绝的中文 message 与错误码、requestId 分离,避免页面丢失实际提示。",
|
|
150
|
+
"开发连接故障区分 DNS、TCP、TLS 与超时并提供安全恢复提示。"
|
|
148
151
|
],
|
|
149
152
|
"affectedUsers": [
|
|
150
|
-
"
|
|
153
|
+
"使用自定义管理后台、精确日期范围或校内网络开发的 V2 应用。"
|
|
151
154
|
],
|
|
152
155
|
"upgradeSteps": [
|
|
153
|
-
"升级 openxiangda 至 2.
|
|
154
|
-
"
|
|
156
|
+
"升级 openxiangda 至 2.32.0,重新安装依赖并构建应用。CLI 模板随同版本化。",
|
|
157
|
+
"按公开 ui.admin 契约接入壳层;路由、登录与授权继续由平台负责。",
|
|
158
|
+
"基础记录字段默认读取及受管下载文件名需要配套平台后端升级;仅升级 npm 不会更改服务端。"
|
|
155
159
|
],
|
|
156
160
|
"knownLimitations": [
|
|
157
|
-
"
|
|
158
|
-
"
|
|
161
|
+
"自定义壳层接入和业务页面设计仍由应用负责,升级 SDK 不自动替换现有 UI。",
|
|
162
|
+
"网络诊断不自动改变 VPN、系统代理、证书或重试未知结果写请求。",
|
|
163
|
+
"前端时间禁选不能替代应用服务端业务时间守卫。"
|
|
159
164
|
],
|
|
160
165
|
"issues": [],
|
|
161
166
|
"compatibility": {
|
|
162
167
|
"node": ">=24",
|
|
163
168
|
"workspaceGenerations": "v2",
|
|
164
|
-
"platform": "
|
|
165
|
-
"v1": "
|
|
169
|
+
"platform": "沿用现有认证、权限与路由协议;基础记录元数据的后端调整需对应站点发布。",
|
|
170
|
+
"v1": "V1 引擎与既有业务不受本次 SDK 改动影响。"
|
|
166
171
|
},
|
|
167
|
-
"sha256": "
|
|
168
|
-
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.
|
|
172
|
+
"sha256": "987351f0bde76980d80f2a1ea8741c7e4697ef7b659ca679f5bf9b2797c8e8b2",
|
|
173
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.32.0"
|
|
169
174
|
},
|
|
170
175
|
"scripts": {
|
|
171
176
|
"build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "openxiangda.release-notes/v1",
|
|
3
|
+
"version": "2.32.0",
|
|
4
|
+
"status": "reviewed",
|
|
5
|
+
"title": "OpenXiangda 2.32.0:自定义后台壳层与精确时间交互",
|
|
6
|
+
"summary": "提供正式后台壳层扩展,改进时间禁选、业务错误与内网开发诊断。",
|
|
7
|
+
"newFeatures": [
|
|
8
|
+
"应用可通过 ui.admin 提供完整后台壳层或顶栏、侧栏、页脚插槽,消费权限过滤后的导航与身份。",
|
|
9
|
+
"消息与待办导航可分别配置显示,资源深链接与移动端页面统一使用自定义壳层。"
|
|
10
|
+
],
|
|
11
|
+
"fixes": [
|
|
12
|
+
"日期时间控件按时区精确禁用小时、分钟、秒,保留输入校验和受控值。",
|
|
13
|
+
"业务拒绝的中文 message 与错误码、requestId 分离,避免页面丢失实际提示。",
|
|
14
|
+
"开发连接故障区分 DNS、TCP、TLS 与超时并提供安全恢复提示。"
|
|
15
|
+
],
|
|
16
|
+
"affectedUsers": [
|
|
17
|
+
"使用自定义管理后台、精确日期范围或校内网络开发的 V2 应用。"
|
|
18
|
+
],
|
|
19
|
+
"upgradeSteps": [
|
|
20
|
+
"升级 openxiangda 至 2.32.0,重新安装依赖并构建应用。CLI 模板随同版本化。",
|
|
21
|
+
"按公开 ui.admin 契约接入壳层;路由、登录与授权继续由平台负责。",
|
|
22
|
+
"基础记录字段默认读取及受管下载文件名需要配套平台后端升级;仅升级 npm 不会更改服务端。"
|
|
23
|
+
],
|
|
24
|
+
"knownLimitations": [
|
|
25
|
+
"自定义壳层接入和业务页面设计仍由应用负责,升级 SDK 不自动替换现有 UI。",
|
|
26
|
+
"网络诊断不自动改变 VPN、系统代理、证书或重试未知结果写请求。",
|
|
27
|
+
"前端时间禁选不能替代应用服务端业务时间守卫。"
|
|
28
|
+
],
|
|
29
|
+
"issues": [],
|
|
30
|
+
"compatibility": {
|
|
31
|
+
"node": ">=24",
|
|
32
|
+
"workspaceGenerations": "v2",
|
|
33
|
+
"platform": "沿用现有认证、权限与路由协议;基础记录元数据的后端调整需对应站点发布。",
|
|
34
|
+
"v1": "V1 引擎与既有业务不受本次 SDK 改动影响。"
|
|
35
|
+
},
|
|
36
|
+
"sha256": "987351f0bde76980d80f2a1ea8741c7e4697ef7b659ca679f5bf9b2797c8e8b2",
|
|
37
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.32.0"
|
|
38
|
+
}
|
package/skills/manifest.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"name": "openxiangda-v2",
|
|
6
6
|
"description": "使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具体变更出发,通过对话发现模块、完成详细产品设计,由当前 AI Agent 按需用 Image 2.5 等图片能力形成视觉参考,直接实现真实页面并在浏览器修正,再检查和交付应用;维护 1.x 应用时使用对应的 1.x 技能。",
|
|
7
|
-
"sha256": "
|
|
7
|
+
"sha256": "66e227c96e4e7e36aa3d15e4eb6744ff9d78934a335d4b987159bbd77d5e593b"
|
|
8
8
|
}
|
|
9
9
|
]
|
|
10
10
|
}
|
|
@@ -7,9 +7,9 @@ description: 使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具
|
|
|
7
7
|
|
|
8
8
|
## 应用结构基线(必须遵守)
|
|
9
9
|
|
|
10
|
-
每个业务应用默认先建立并保留标准管理后台。管理后台是应用骨架,承载资源模型、表单、数据列表、详情/编辑、权限和流程入口;AI
|
|
10
|
+
每个业务应用默认先建立并保留标准管理后台。管理后台是应用骨架,承载资源模型、表单、数据列表、详情/编辑、权限和流程入口;AI 必须先从后台完成数据与契约,再实现用户端体验。默认提供标准 Shell;需要定制后台外观时使用 `ui.admin.shell` 或局部插槽,保留平台后台路由、授权和显式业务菜单。
|
|
11
11
|
|
|
12
|
-
Agent
|
|
12
|
+
Agent 按页面归属优化布局、视觉和交互:后台通过默认 Shell 或 `ui.admin` 扩展复用平台导航事实、字段行为和权限;用户端 PC 与移动端按真实任务分别设计,并通过平台 runtime/Data API 读取后台数据。图片参考不定义交互、权限或验收。不得用图片、单页 HTML、iframe 或独立假后台冒充管理后台,也不得在用户端复制后台权限和导航状态。
|
|
13
13
|
|
|
14
14
|
设计、实现和发布验收必须分别核验管理后台入口、表单、数据列表、流程入口,以及用户端 PC/移动端入口。缺少标准管理后台的应用结构不完整,不能发布。
|
|
15
15
|
|
|
@@ -40,10 +40,10 @@ AI 接到新应用、页面或改版任务时,在同一个 OpenXiangda 工作
|
|
|
40
40
|
未创建工作区时使用本 Skill 随根包发布的精确版本:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
pnpm dlx openxiangda@2.
|
|
44
|
-
pnpm dlx openxiangda@2.
|
|
45
|
-
pnpm dlx openxiangda@2.
|
|
46
|
-
pnpm dlx openxiangda@2.
|
|
43
|
+
pnpm dlx openxiangda@2.32.0 auth status --cwd <应用目录> --base-url <平台地址> --json
|
|
44
|
+
pnpm dlx openxiangda@2.32.0 login --cwd <应用目录> --base-url <平台地址>
|
|
45
|
+
pnpm dlx openxiangda@2.32.0 create <应用目录> --base-url <同一平台地址>
|
|
46
|
+
pnpm dlx openxiangda@2.32.0 skill install --force
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
|
|
@@ -11,17 +11,16 @@ create/update 闭包返回的值。人员和部门保存平台目录真实 ID;
|
|
|
11
11
|
|
|
12
12
|
字段策略支持 `read`、`create`、`update` 和 `mask`。显式空数组拒绝,能力数组采用 all-of。无权更新字段不仅 disabled,还必须从更新 payload 删除。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`data.audit-read-access`,旧平台会在发布前拒绝。
|
|
14
|
+
`id`、`revision`、`created_at`、`updated_at`、`created_by`、`updated_by` 是基础元数据:
|
|
15
|
+
只要有记录读取权限,就可读取、筛选、排序、聚合和导出,不需要额外字段权限。
|
|
16
|
+
它们仍由平台生成,不能通过业务字段写入来伪造;记录、租户、环境权限和匿名公开字段白名单仍然生效。
|
|
17
|
+
|
|
18
|
+
模型可声明 `audit: { read: false }` 禁止普通用户查看变更历史;需要保留管理者查看时,
|
|
19
|
+
使用 `audit: { read: ['app:your-app:audit:read'] }`,先在 `authz.capabilities` 声明该能力并授予相应角色,
|
|
20
|
+
也可以引用已有管理权限。历史可能包含过去的业务值,因此不因基础元数据开放而自动开放。
|
|
21
|
+
审计策略引用能力,不新建能力或改变其所有者;缺失引用在发布前失败。
|
|
22
|
+
为兼容历史包,编译器仍物化审计元数据策略作为历史接口的授权声明,当前平台读取基础元数据时忽略这些额外 read 限制。
|
|
23
|
+
应用可信后端和超级管理员保持原语义。该声明需要 `data.audit-read-access`;基础元数据开放需部署 2026-09-29 对应平台迁移。
|
|
25
24
|
|
|
26
25
|
```bash
|
|
27
26
|
pnpm openxiangda check
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
开始界面工作前,从当前 AppSpec、平台契约和用户材料形成一个短设计输入,至少明确:
|
|
15
15
|
|
|
16
16
|
- 目标用户、主任务、页面归属以及 PC/移动设备范围;
|
|
17
|
-
-
|
|
17
|
+
- 必须保留的平台路由与授权导航事实、字段协议、权限和数据来源;Shell 外观可通过正式扩展接口自定义;
|
|
18
18
|
- 页面信息层次、关键操作,以及空、加载、失败、拒绝、校验、提交中和成功状态;
|
|
19
19
|
- 用户提供的品牌、参考图和素材授权;没有品牌事实时标记为 Agent 推断;
|
|
20
20
|
- 目标视口、可访问性、内容长度、数据量和性能边界;
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
## 页面归属与平台边界 {#adapter}
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
应用结构先于视觉:标准管理后台是默认骨架,必须保留平台后台路由、授权与显式菜单,Shell 外观可定制、
|
|
41
41
|
资源表单、数据列表、详情/编辑、权限和流程入口。Agent 可以在这些边界内优化布局、视觉和
|
|
42
42
|
交互,但不能用设计图、独立原型、单页 HTML 或 iframe 替代后台。
|
|
43
43
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
标准管理后台是每个业务应用的默认开发骨架,必须保留后台 Shell、显式菜单、资源表单、数据列表、详情/编辑、权限和流程入口。开发顺序先完成后台资源与契约,再实现用户端 PC/移动端;不能以用户端首页或设计原型替代后台。
|
|
22
22
|
|
|
23
|
-
Agent
|
|
23
|
+
Agent 可以在标准后台内部优化布局、视觉和交互,后台通过默认 Shell 或 `ui.admin` 扩展复用平台导航、字段行为和权限。用户端 PC 与移动端按真实旅程分别设计,通过平台 runtime/Data API 使用后台数据。图片参考和原型不拥有业务事实;禁止用图片、单页 HTML、iframe 或自定义假后台替换标准后台,也不能把后台权限、导航状态复制到用户端。
|
|
24
24
|
|
|
25
25
|
发布前分别验证后台入口、表单、数据列表、流程入口和用户端 PC/移动端入口;没有完成后台骨架的应用不得发布。
|
|
26
26
|
|
|
@@ -31,9 +31,9 @@ Agent 可以在标准后台内部优化布局、视觉和交互,但后台仍
|
|
|
31
31
|
| 独立门户、申请或用户任务 | 按实际旅程选择 `surface: 'user'`,拥有独立布局 |
|
|
32
32
|
| 确有手机使用需求的用户任务 | 独立移动 user 页面,使用 `openxiangda/mobile` 和 Field Kit |
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
“自定义页面”可以直接放在标准后台内。应用编写业务内容,runtime 自动套用默认或应用提供的唯一 Shell;自定义布局使用 `ui.admin`,无需复制 Router 或改成 user 页面。模板 `/home` 是独立用户页占位,不能不经页面选型就当作业务默认入口。
|
|
35
35
|
|
|
36
|
-
后台菜单的分组、名称、顺序、图标由 `frontend.admin.navigation` 配置;标准视图控制字段与操作,工具栏/行/详情有动作插槽,自定义 React 内容通过 contributions
|
|
36
|
+
后台菜单的分组、名称、顺序、图标由 `frontend.admin.navigation` 配置;标准视图控制字段与操作,工具栏/行/详情有动作插槽,自定义 React 内容通过 contributions 接入。通过 `ui.admin.shell` 可替换整个后台外观,也可用 `header`、`sidebar`、`footer` 插槽局部扩展。后台页面仍使用 admin surface,路由与权限由平台维护。
|
|
37
37
|
|
|
38
38
|
应用根路径由生成的 `routeManifest.rootEntry` 分流;`/admin` 根据当前用户可访问的显式菜单选择后台首页。交付时分别核验平台应用列表入口、根路径、后台入口和业务深链接。无后台菜单不能解释为缺少模型;没有管理后台的用户应用也不需要为了消除空状态伪造 CRUD 页面。
|
|
39
39
|
|
|
@@ -445,3 +445,29 @@ pnpm --filter @app/web build
|
|
|
445
445
|
## 具名工作流私有草稿
|
|
446
446
|
|
|
447
447
|
普通创建能力被应用关闭时,使用 `createWorkflowFormDraftClient('contracts', { workflowCode: 'contract-approval', operationCode: 'submit-contract-approval' })`(从 `openxiangda/react` 导入)。客户端提供 `list/save/remove`,保持当前用户、环境、工作流与具名操作范围;仅支持默认 create 表单,不包含 Native submit。保存 `values` 与已声明的 `state`;正式提交仍将既有 `formDraft:{resourceCode,id,expectedRevision,mode:'create'}` 交给业务操作的 BusinessProcess 原子消费。服务端从真实业务命令核验工作流/操作,不能传任意范围冒用草稿。需先部署支持该能力与新增草稿作用域列的平台版本;不得通过增加普通 NativeCreate 或本地存储绕过拒绝。
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
## 应用自定义后台壳层
|
|
451
|
+
|
|
452
|
+
`OpenXiangdaApplication` 的 `ui.admin` 允许应用定义完整后台布局,不需要隐藏平台 DOM。
|
|
453
|
+
|
|
454
|
+
```tsx
|
|
455
|
+
import type { AdminShellProps } from 'openxiangda/react';
|
|
456
|
+
function ProductAdmin({ children, navigation, identity, title, navigate, logout, loggingOut }: AdminShellProps) {
|
|
457
|
+
return <div className="product-admin">
|
|
458
|
+
<header><strong>{title}</strong><span>{identity.subjectProfile.displayName}</span>
|
|
459
|
+
<button disabled={loggingOut} onClick={() => void logout()}>退出登录</button></header>
|
|
460
|
+
<aside>{navigation.map(group => <nav key={group.code} aria-label={group.label}>
|
|
461
|
+
{group.items.map(item => <button key={item.code} onClick={() => navigate(item.path)}>{item.label}</button>)}
|
|
462
|
+
</nav>)}</aside><main>{children}</main>
|
|
463
|
+
</div>;
|
|
464
|
+
}
|
|
465
|
+
// 在既有 OpenXiangdaApplication 上增加,其他契约 props 原样保留:
|
|
466
|
+
// ui={{ theme, admin: { shell: ProductAdmin, centerNavigation: { workflow: false, messages: false } } }}
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
`navigation` 已按当前角色并集和读取视角过滤,`selectedPath`、`homePath`、`pathname`、`search` 来自平台 Router;请直接渲染,不保存另一份角色或菜单状态。`centers` 为可见的审批工作中心与消息中心入口;隐藏中心导航仅改变展示,不禁用能力或深链接。隐藏后应从业务页为审批人提供任务入口。
|
|
470
|
+
|
|
471
|
+
可只提供 `header`、`sidebar` 或 `footer`(接收 `AdminShellModel`)。整体 `shell` 额外收到 `children` 与 `slots`,可复用默认部件或完全自行排版。自定义壳层接管后台资源列表、新增、详情、编辑、移动深链以及后台业务页面;标准字段、抽屉、未保存提示和授权继续由平台组件负责。登录页和用户页不受影响。组件在模块顶层声明,避免每次渲染重新创建组件类型导致表单重挂载。
|
|
472
|
+
|
|
473
|
+
无 `ui.admin` 时沿用默认后台。扩展不能越过 `adminAccess`、页面能力或 Data API 记录权限;不能自行创建第二个 Router、认证会话或数据权限状态。验收应覆盖应用入口、刷新深链、无权角色、PC/移动、键盘和壳层异常恢复。
|
|
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
|
|
|
68
68
|
以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
pnpm dlx openxiangda@2.
|
|
72
|
-
pnpm dlx openxiangda@2.
|
|
73
|
-
pnpm dlx openxiangda@2.
|
|
74
|
-
pnpm dlx openxiangda@2.
|
|
71
|
+
pnpm dlx openxiangda@2.32.0 skill install --force
|
|
72
|
+
pnpm dlx openxiangda@2.32.0 auth status --base-url <平台地址> --json
|
|
73
|
+
pnpm dlx openxiangda@2.32.0 login --cwd my-app --base-url https://platform.example.com
|
|
74
|
+
pnpm dlx openxiangda@2.32.0 create my-app --base-url https://platform.example.com
|
|
75
75
|
cd my-app
|
|
76
76
|
pnpm openxiangda context --json
|
|
77
77
|
pnpm openxiangda dev
|
|
@@ -174,9 +174,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
|
|
|
174
174
|
无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
|
|
175
175
|
|
|
176
176
|
```bash
|
|
177
|
-
pnpm dlx openxiangda@2.
|
|
178
|
-
pnpm dlx openxiangda@2.
|
|
179
|
-
pnpm dlx openxiangda@2.
|
|
177
|
+
pnpm dlx openxiangda@2.32.0 auth status --base-url <平台> --json
|
|
178
|
+
pnpm dlx openxiangda@2.32.0 source resolve <仓库URL> --base-url <平台> --json
|
|
179
|
+
pnpm dlx openxiangda@2.32.0 source clone <仓库URL> <新目录> --base-url <平台> --json
|
|
180
180
|
```
|
|
181
181
|
|
|
182
182
|
登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
|