openxiangda 2.29.1 → 2.30.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.
@@ -29,6 +29,61 @@ pnpm openxiangda check
29
29
 
30
30
  角色成员、维度授权和平台管理员由平台管理面维护,不属于应用开发 CLI。
31
31
 
32
+ ### 条件唯一键
33
+
34
+ 需要“同一编号只能有一条有效主档”时,在模型声明 `uniqueKeys`。平台在环境
35
+ 激活时安装约束;普通 CRUD、导入和业务事务共用该约束。应用无需先查重再创建,
36
+ 也无需另建锁服务。声明会自动要求平台能力 `data.unique-keys@1.0.0`,旧平台在
37
+ 发布前明确报告缺少能力。未声明的模型不增加这一要求。
38
+
39
+ ```ts
40
+ const partners = defineDataModel({
41
+ code: 'partners', name: '往来单位',
42
+ fields: [
43
+ { code: 'externalId', label: '外部编号', type: 'text.short' },
44
+ { code: 'name', label: '名称', type: 'text.short' },
45
+ { code: 'state', label: '状态', type: 'option.single', options: [
46
+ { value: 'active', label: '有效' }, { value: 'void', label: '作废' },
47
+ ] },
48
+ ],
49
+ uniqueKeys: [{
50
+ code: 'active-external-id',
51
+ fields: [{ fieldCode: 'externalId', normalizer: 'nfkc-upper-ascii-v1' }],
52
+ when: [{ fieldCode: 'state', operator: 'in', values: ['active'] }],
53
+ }],
54
+ });
55
+ ```
56
+
57
+ 规则只比较同一租户、应用与环境内的记录。上例中 `ABC` 和 `abc` 视为相同
58
+ 编号,只有 `active` 记录参与;切换状态进入比较集合时也执行约束。平台不会猜测
59
+ 业务中的有效、作废或软删除语义,条件由应用声明。
60
+
61
+ - 每模型最多 8 条,稳定 `code` 使用最长 20 字符的 lower-kebab-case;每条包含
62
+ 1–4 个不重复字段、最多 4 个 AND 条件。
63
+ - 字段支持短文本、UUID、单选和单记录引用;单选/引用比较保存的 `value`,忽略标签。
64
+ - `exact-v1` 原样比较(默认);文本可用 `nfkc-space-v1` 做 NFKC 归一化、Unicode
65
+ 空白折叠和首尾修剪,或 `nfkc-upper-ascii-v1` 再将 ASCII 小写转大写。非文本只
66
+ 支持 exact;不按操作系统 locale 折叠其他文字大小写。
67
+ - 文本条件是 `empty` / `nonempty`,按 NFKC 空白规则判断;单选条件是 `in` /
68
+ `notIn`,包含 1–16 个已声明选项值。缺失选项不满足 `notIn`。
69
+ - 任一键字段为空或归一化后为空,该行不参加比较。需要每行填写时仍应声明字段
70
+ 必填。参与比较的每个字段归一化后最多 256 个 UTF-8 字节。
71
+
72
+ 重复写入返回 HTTP 409 `OPENXIANGDA_NATIVE_DATA_RESOURCE_UNIQUE_CONFLICT`,并给出
73
+ `resourceCode`、`ruleCode`;不会泄露其他记录 ID、值或原始 SQL。界面应让用户核实
74
+ 输入并复用自己有权访问的记录,不自动重试创建。超长返回 HTTP 422
75
+ `OPENXIANGDA_NATIVE_DATA_RESOURCE_UNIQUE_VALUE_TOO_LONG`。事务中的任何操作失败,
76
+ 该事务的记录、事件及回执整体回滚。
77
+
78
+ 首次启用会检查历史数据。发现重复或超长时,激活失败且原环境 Head 保持;平台
79
+ 不会自动合并、改名或删除数据。已有规则可原样保留或新增规则,修改/移除规则、
80
+ 替换其字段类型或删除所用字段需要平台受管迁移。连接开发仍可添加普通字段,但
81
+ 规则变化会要求先正式激活测试版本。回滚到旧模型时也应保留已经安装的规则。
82
+
83
+ 平台为安装设置有界锁等待与扫描预算,超时不会留下部分约束。归一化依赖数据库
84
+ 版本;跨 PostgreSQL 大版本升级由平台安排受管重建,不能由应用绕过规则或重试
85
+ 写入来修复。
86
+
32
87
  ### 授权来源声明
33
88
 
34
89
  应用可以在 `authz` 中声明四类授权来源,让平台从业务数据投影出维度授权、应用角色成员和
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
68
68
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
69
69
 
70
70
  ```bash
71
- pnpm dlx openxiangda@2.29.1 skill install --force
72
- pnpm dlx openxiangda@2.29.1 auth status --base-url <平台地址> --json
73
- pnpm dlx openxiangda@2.29.1 login --cwd my-app --base-url https://platform.example.com
74
- pnpm dlx openxiangda@2.29.1 create my-app --base-url https://platform.example.com
71
+ pnpm dlx openxiangda@2.30.0 skill install --force
72
+ pnpm dlx openxiangda@2.30.0 auth status --base-url <平台地址> --json
73
+ pnpm dlx openxiangda@2.30.0 login --cwd my-app --base-url https://platform.example.com
74
+ pnpm dlx openxiangda@2.30.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.29.1 auth status --base-url <平台> --json
178
- pnpm dlx openxiangda@2.29.1 source resolve <仓库URL> --base-url <平台> --json
179
- pnpm dlx openxiangda@2.29.1 source clone <仓库URL> <新目录> --base-url <平台> --json
177
+ pnpm dlx openxiangda@2.30.0 auth status --base-url <平台> --json
178
+ pnpm dlx openxiangda@2.30.0 source resolve <仓库URL> --base-url <平台> --json
179
+ pnpm dlx openxiangda@2.30.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.29.1",
3
+ "version": "2.30.0",
4
4
  "topics": [
5
5
  {
6
6
  "id": "getting-started",
7
7
  "title": "安装与开始开发",
8
8
  "file": "getting-started.md",
9
- "sha256": "a3750b23323fa2d452bd07ea44841dd47b5ddc9b850ae17c036b672e7e5b28dc"
9
+ "sha256": "53c29676a178d4f9b0e656196cca8b6ac01461677ff9772e1c386fbaf67d2198"
10
10
  },
11
11
  {
12
12
  "id": "product-design",
@@ -72,7 +72,7 @@
72
72
  "id": "data-authz",
73
73
  "title": "数据查询与权限",
74
74
  "file": "data-authz.md",
75
- "sha256": "f00c0dcd79c1ccf9ded0b3131ad304b671cebf475cf1ea20404da665dc2c0bb6"
75
+ "sha256": "b35904b721bcd837c3a26cdf91ef9514c82c87bd517c35572b84ee2a90c5a89f"
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.29.1",
3
+ "version": "2.30.0",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -60,13 +60,13 @@
60
60
  "antd-mobile": "5.42.3",
61
61
  "dayjs": "1.11.18",
62
62
  "docx-preview": "0.3.7",
63
- "openxiangda-cli": "2.5.25",
64
- "openxiangda-contracts": "2.25.0",
65
- "openxiangda-devkit-core": "2.28.1",
63
+ "openxiangda-cli": "2.6.1",
64
+ "openxiangda-contracts": "2.27.0",
65
+ "openxiangda-devkit-core": "2.30.0",
66
66
  "openxiangda-legacy": "npm:openxiangda@1.0.269",
67
- "openxiangda-mcp": "2.0.49",
68
- "openxiangda-nest": "2.7.2",
69
- "openxiangda-skill-kit": "2.3.23",
67
+ "openxiangda-mcp": "2.0.51",
68
+ "openxiangda-nest": "2.7.4",
69
+ "openxiangda-skill-kit": "2.3.25",
70
70
  "xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
71
71
  },
72
72
  "peerDependencies": {
@@ -132,37 +132,37 @@
132
132
  },
133
133
  "openxiangdaRelease": {
134
134
  "schemaVersion": "openxiangda.release-notes/v1",
135
- "version": "2.29.1",
135
+ "version": "2.30.0",
136
136
  "status": "reviewed",
137
- "title": "OpenXiangda 2.29.1:镜像上传失败的准确恢复指引",
138
- "summary": "镜像上传因存储额度被拒绝时,保留安全额度数据并指向平台受管清理,停止立即重复请求;原候选仍可在处理后恢复。",
139
- "newFeatures": [],
140
- "fixes": [
141
- "候选恢复错误保留真实 causeCode,额度拒绝只投影应用占用字节、镜像数、应用预算、本次请求字节和固定恢复标识,不再丢失可用于平台排查的安全数据。",
142
- "额度不足不再误导重新登录或修复网络,也不会立即重试同一准入;登录、权限、网络及未知失败分别提供对应指引。",
143
- "保留原候选 ID、镜像摘要、失效时间和恢复租约,处理后相同输入可继续原摘要上传。"
137
+ "title": "OpenXiangda 2.30.0:平台条件唯一键",
138
+ "summary": "模型可声明条件唯一键,统一约束普通 CRUD、导入和业务事务;编译器在发布前检查规则并识别目标平台是否支持。",
139
+ "newFeatures": [
140
+ "模型与数据资源支持有界 uniqueKeys 声明,可选择精确比较、NFKC 空白折叠或 ASCII 大写,并按文本空值或单选集合限定参与记录。",
141
+ "两端编译器、JSON Schema、声明诊断和能力清单使用一致契约,自动要求 data.unique-keys@1.0.0。未声明的模型不增加能力要求。"
144
142
  ],
143
+ "fixes": [],
145
144
  "affectedUsers": [
146
- "通过平台登录态上传后端镜像的 OpenXiangda 2.0 应用开发者与平台支持人员。"
145
+ "需要跨并发写入保障业务编号或复合字段唯一性的 OpenXiangda 2.0 应用开发者。"
147
146
  ],
148
147
  "upgradeSteps": [
149
- "尚有待恢复原候选时,先保持原 SDK、源码、账号和目标,完成原上传后再升级;工具版本参与候选身份。",
150
- "新的开发工作消费 openxiangda@2.29.1 并更新锁文件。额度错误先请平台核实受管保留与清理,再显式重试原 deploy 命令。无需平台数据库迁移。"
148
+ "更新到 openxiangda@2.30.0 并更新锁文件;在需要唯一性的模型声明 uniqueKeys,使用当前版本的数据与权限文档。",
149
+ "先确认目标平台实际提供 data.unique-keys@1.0.0,再激活测试版本。历史重复或超长数据会明确拒绝激活并保留原环境。",
150
+ "重复写入处理 HTTP 409 和规则标识;长度超限处理 HTTP 422。避免盲目重试创建,事务失败后按原业务状态恢复。"
151
151
  ],
152
152
  "knownLimitations": [
153
- "错误详情只包含服务器实际提供的安全字段,不能据此假定额度已经恢复或判断未提供的全局、租户预算。",
154
- "retryable=false 表示额度需先处理;原候选仍受 24 小时、8 个候选、8 GiB 的既有本地保留界限约束。",
155
- "本次不修改平台预算或镜像退休策略,不执行客户应用部署;客户现场计费和受保护引用仍须独立核实。"
153
+ "每资源最多 8 条、每条 1–4 个键字段和最多 4 个 AND 条件;参与比较字段归一化后最多 256 个 UTF-8 字节。",
154
+ "已有规则的修改、删除和所用字段替换需要平台受管迁移;连接开发不能私自改变规则。",
155
+ "平台升级与 SDK 发行分别验收;npm 发行不代表客户节点已经上线。跨 PostgreSQL 大版本变更须先安排归一化索引的受管重建。"
156
156
  ],
157
157
  "issues": [],
158
158
  "compatibility": {
159
159
  "node": ">=24",
160
160
  "workspaceGenerations": "v2",
161
- "platform": "复用现有镜像上传响应,缺少额度数据的旧平台不会被补造数据。",
161
+ "platform": "声明规则时要求 data.unique-keys@1.0.0;普通应用沿用现有能力。",
162
162
  "v1": "独立 V1 引擎和工作区不受影响。"
163
163
  },
164
- "sha256": "057a446ac3871147ca22a80b059bf13c2510a341de93798e0326259c553bb382",
165
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.29.1"
164
+ "sha256": "cbe1a5766e0cc0d8948d54b6d2129320b5d2fbe1e8f7120874b9f56c774b1fcb",
165
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.30.0"
166
166
  },
167
167
  "scripts": {
168
168
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,32 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.29.2",
4
+ "status": "reviewed",
5
+ "title": "OpenXiangda 2.29.2:退役 Studio 专属工具链",
6
+ "summary": "移除已停止维护的 Studio 初始化、发现与绑定接口,保留普通应用创建、连接开发、源码托管和结构化命令输出。",
7
+ "newFeatures": [],
8
+ "fixes": [
9
+ "CLI 不再接受 Studio Project/ProvisioningRun 初始化参数,能力发现不再输出 toolchain.studio。",
10
+ "通用 JSON/JSONL 事件和模板摘要绑定使用独立 CLI 契约,不再依赖已退役产品。"
11
+ ],
12
+ "affectedUsers": [
13
+ "使用 OpenXiangda 2.0 工具链的开发者;仍调用 Studio 专属参数或导出的集成需要移除这些调用。"
14
+ ],
15
+ "upgradeSteps": [
16
+ "更新到 openxiangda@2.29.2 并更新项目锁文件;使用普通 create、dev 和发布流程。",
17
+ "移除 Studio 专属参数与导出。平台端退役部署须独立完成临时 Git 凭据撤权检查,不能仅凭 SDK 升级判定现场退役完成。"
18
+ ],
19
+ "knownLimitations": [
20
+ "已退役的 Studio 专属导出和参数不再兼容。",
21
+ "本次发行不包含新的平台 Agent 运行时,不自动部署平台或应用。"
22
+ ],
23
+ "issues": [],
24
+ "compatibility": {
25
+ "node": ">=24",
26
+ "workspaceGenerations": "v2",
27
+ "platform": "普通应用开发和共享源码托管契约保持;平台退役按独立部署前置条件执行。",
28
+ "v1": "独立 V1 引擎和工作区不受影响。"
29
+ },
30
+ "sha256": "5c26d50635ca43152e96c0017a9948f5c44cbfd8aff926cc4ff0da8971a3c49c",
31
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.29.2"
32
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.30.0",
4
+ "status": "reviewed",
5
+ "title": "OpenXiangda 2.30.0:平台条件唯一键",
6
+ "summary": "模型可声明条件唯一键,统一约束普通 CRUD、导入和业务事务;编译器在发布前检查规则并识别目标平台是否支持。",
7
+ "newFeatures": [
8
+ "模型与数据资源支持有界 uniqueKeys 声明,可选择精确比较、NFKC 空白折叠或 ASCII 大写,并按文本空值或单选集合限定参与记录。",
9
+ "两端编译器、JSON Schema、声明诊断和能力清单使用一致契约,自动要求 data.unique-keys@1.0.0。未声明的模型不增加能力要求。"
10
+ ],
11
+ "fixes": [],
12
+ "affectedUsers": [
13
+ "需要跨并发写入保障业务编号或复合字段唯一性的 OpenXiangda 2.0 应用开发者。"
14
+ ],
15
+ "upgradeSteps": [
16
+ "更新到 openxiangda@2.30.0 并更新锁文件;在需要唯一性的模型声明 uniqueKeys,使用当前版本的数据与权限文档。",
17
+ "先确认目标平台实际提供 data.unique-keys@1.0.0,再激活测试版本。历史重复或超长数据会明确拒绝激活并保留原环境。",
18
+ "重复写入处理 HTTP 409 和规则标识;长度超限处理 HTTP 422。避免盲目重试创建,事务失败后按原业务状态恢复。"
19
+ ],
20
+ "knownLimitations": [
21
+ "每资源最多 8 条、每条 1–4 个键字段和最多 4 个 AND 条件;参与比较字段归一化后最多 256 个 UTF-8 字节。",
22
+ "已有规则的修改、删除和所用字段替换需要平台受管迁移;连接开发不能私自改变规则。",
23
+ "平台升级与 SDK 发行分别验收;npm 发行不代表客户节点已经上线。跨 PostgreSQL 大版本变更须先安排归一化索引的受管重建。"
24
+ ],
25
+ "issues": [],
26
+ "compatibility": {
27
+ "node": ">=24",
28
+ "workspaceGenerations": "v2",
29
+ "platform": "声明规则时要求 data.unique-keys@1.0.0;普通应用沿用现有能力。",
30
+ "v1": "独立 V1 引擎和工作区不受影响。"
31
+ },
32
+ "sha256": "cbe1a5766e0cc0d8948d54b6d2129320b5d2fbe1e8f7120874b9f56c774b1fcb",
33
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.30.0"
34
+ }
@@ -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": "66a23e26e09626e4de1220a2d794f34c3b32963908469ad84f4d6e4a67f9facb"
7
+ "sha256": "43362f7f5e18dbfbaba0909a8c78d1ee83effa8ffbb1089131b150da408974ad"
8
8
  }
9
9
  ]
10
10
  }
@@ -40,10 +40,10 @@ AI 接到新应用、页面或改版任务时,在同一个 OpenXiangda 工作
40
40
  未创建工作区时使用本 Skill 随根包发布的精确版本:
41
41
 
42
42
  ```bash
43
- pnpm dlx openxiangda@2.29.1 auth status --cwd <应用目录> --base-url <平台地址> --json
44
- pnpm dlx openxiangda@2.29.1 login --cwd <应用目录> --base-url <平台地址>
45
- pnpm dlx openxiangda@2.29.1 create <应用目录> --base-url <同一平台地址>
46
- pnpm dlx openxiangda@2.29.1 skill install --force
43
+ pnpm dlx openxiangda@2.30.0 auth status --cwd <应用目录> --base-url <平台地址> --json
44
+ pnpm dlx openxiangda@2.30.0 login --cwd <应用目录> --base-url <平台地址>
45
+ pnpm dlx openxiangda@2.30.0 create <应用目录> --base-url <同一平台地址>
46
+ pnpm dlx openxiangda@2.30.0 skill install --force
47
47
  ```
48
48
 
49
49
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -29,6 +29,61 @@ pnpm openxiangda check
29
29
 
30
30
  角色成员、维度授权和平台管理员由平台管理面维护,不属于应用开发 CLI。
31
31
 
32
+ ### 条件唯一键
33
+
34
+ 需要“同一编号只能有一条有效主档”时,在模型声明 `uniqueKeys`。平台在环境
35
+ 激活时安装约束;普通 CRUD、导入和业务事务共用该约束。应用无需先查重再创建,
36
+ 也无需另建锁服务。声明会自动要求平台能力 `data.unique-keys@1.0.0`,旧平台在
37
+ 发布前明确报告缺少能力。未声明的模型不增加这一要求。
38
+
39
+ ```ts
40
+ const partners = defineDataModel({
41
+ code: 'partners', name: '往来单位',
42
+ fields: [
43
+ { code: 'externalId', label: '外部编号', type: 'text.short' },
44
+ { code: 'name', label: '名称', type: 'text.short' },
45
+ { code: 'state', label: '状态', type: 'option.single', options: [
46
+ { value: 'active', label: '有效' }, { value: 'void', label: '作废' },
47
+ ] },
48
+ ],
49
+ uniqueKeys: [{
50
+ code: 'active-external-id',
51
+ fields: [{ fieldCode: 'externalId', normalizer: 'nfkc-upper-ascii-v1' }],
52
+ when: [{ fieldCode: 'state', operator: 'in', values: ['active'] }],
53
+ }],
54
+ });
55
+ ```
56
+
57
+ 规则只比较同一租户、应用与环境内的记录。上例中 `ABC` 和 `abc` 视为相同
58
+ 编号,只有 `active` 记录参与;切换状态进入比较集合时也执行约束。平台不会猜测
59
+ 业务中的有效、作废或软删除语义,条件由应用声明。
60
+
61
+ - 每模型最多 8 条,稳定 `code` 使用最长 20 字符的 lower-kebab-case;每条包含
62
+ 1–4 个不重复字段、最多 4 个 AND 条件。
63
+ - 字段支持短文本、UUID、单选和单记录引用;单选/引用比较保存的 `value`,忽略标签。
64
+ - `exact-v1` 原样比较(默认);文本可用 `nfkc-space-v1` 做 NFKC 归一化、Unicode
65
+ 空白折叠和首尾修剪,或 `nfkc-upper-ascii-v1` 再将 ASCII 小写转大写。非文本只
66
+ 支持 exact;不按操作系统 locale 折叠其他文字大小写。
67
+ - 文本条件是 `empty` / `nonempty`,按 NFKC 空白规则判断;单选条件是 `in` /
68
+ `notIn`,包含 1–16 个已声明选项值。缺失选项不满足 `notIn`。
69
+ - 任一键字段为空或归一化后为空,该行不参加比较。需要每行填写时仍应声明字段
70
+ 必填。参与比较的每个字段归一化后最多 256 个 UTF-8 字节。
71
+
72
+ 重复写入返回 HTTP 409 `OPENXIANGDA_NATIVE_DATA_RESOURCE_UNIQUE_CONFLICT`,并给出
73
+ `resourceCode`、`ruleCode`;不会泄露其他记录 ID、值或原始 SQL。界面应让用户核实
74
+ 输入并复用自己有权访问的记录,不自动重试创建。超长返回 HTTP 422
75
+ `OPENXIANGDA_NATIVE_DATA_RESOURCE_UNIQUE_VALUE_TOO_LONG`。事务中的任何操作失败,
76
+ 该事务的记录、事件及回执整体回滚。
77
+
78
+ 首次启用会检查历史数据。发现重复或超长时,激活失败且原环境 Head 保持;平台
79
+ 不会自动合并、改名或删除数据。已有规则可原样保留或新增规则,修改/移除规则、
80
+ 替换其字段类型或删除所用字段需要平台受管迁移。连接开发仍可添加普通字段,但
81
+ 规则变化会要求先正式激活测试版本。回滚到旧模型时也应保留已经安装的规则。
82
+
83
+ 平台为安装设置有界锁等待与扫描预算,超时不会留下部分约束。归一化依赖数据库
84
+ 版本;跨 PostgreSQL 大版本升级由平台安排受管重建,不能由应用绕过规则或重试
85
+ 写入来修复。
86
+
32
87
  ### 授权来源声明
33
88
 
34
89
  应用可以在 `authz` 中声明四类授权来源,让平台从业务数据投影出维度授权、应用角色成员和
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
68
68
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
69
69
 
70
70
  ```bash
71
- pnpm dlx openxiangda@2.29.1 skill install --force
72
- pnpm dlx openxiangda@2.29.1 auth status --base-url <平台地址> --json
73
- pnpm dlx openxiangda@2.29.1 login --cwd my-app --base-url https://platform.example.com
74
- pnpm dlx openxiangda@2.29.1 create my-app --base-url https://platform.example.com
71
+ pnpm dlx openxiangda@2.30.0 skill install --force
72
+ pnpm dlx openxiangda@2.30.0 auth status --base-url <平台地址> --json
73
+ pnpm dlx openxiangda@2.30.0 login --cwd my-app --base-url https://platform.example.com
74
+ pnpm dlx openxiangda@2.30.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.29.1 auth status --base-url <平台> --json
178
- pnpm dlx openxiangda@2.29.1 source resolve <仓库URL> --base-url <平台> --json
179
- pnpm dlx openxiangda@2.29.1 source clone <仓库URL> <新目录> --base-url <平台> --json
177
+ pnpm dlx openxiangda@2.30.0 auth status --base-url <平台> --json
178
+ pnpm dlx openxiangda@2.30.0 source resolve <仓库URL> --base-url <平台> --json
179
+ pnpm dlx openxiangda@2.30.0 source clone <仓库URL> <新目录> --base-url <平台> --json
180
180
  ```
181
181
 
182
182
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回