openxiangda 2.28.0 → 2.29.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/documentation/decimal-reservations.md +46 -2
- package/documentation/delivery.md +13 -1
- package/documentation/getting-started.md +7 -7
- package/documentation/manifest.json +4 -4
- package/package.json +25 -25
- package/releases/2.28.1.json +34 -0
- package/releases/2.29.0.json +37 -0
- package/skills/manifest.json +1 -1
- package/skills/openxiangda-v2/SKILL.md +4 -4
- package/skills/openxiangda-v2/references/decimal-reservations.md +46 -2
- package/skills/openxiangda-v2/references/delivery.md +13 -1
- package/skills/openxiangda-v2/references/getting-started.md +7 -7
|
@@ -105,7 +105,51 @@ workflow command/instance/subject revision 和台账验证,SDK自动继承已
|
|
|
105
105
|
普通应用凭据或自填事件头不构成授权。精确同键、同payload重放返回原完整事务结果;
|
|
106
106
|
旧轮次不能释放重提后的新占用。重放仍受当前权限、有效事件租约和父记录可读性约束。
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
作废/终止释放 committed 必须另有受管真实业务动作;状态枚举不代表已实现该能力,
|
|
109
|
+
签后金额变更仍拒绝。锁等待最多2秒、
|
|
110
110
|
单条SQL最多5秒,较严格的已有约束优先;retryable 409
|
|
111
111
|
`OPENXIANGDA_NATIVE_DECIMAL_CONTENTION` 不允许换键掩盖未知结果。
|
|
112
|
+
|
|
113
|
+
## 提交金额后的正常生命周期
|
|
114
|
+
|
|
115
|
+
需要在 committed 后继续签订、履行等状态操作时,在模型上声明
|
|
116
|
+
`decimalReservationLifecycle`。它复用同资源 reserve 动作的状态与关系字段,
|
|
117
|
+
不新增接口或余额;未声明时继续原有严格保护。以下状态均须已在状态字段选项中声明:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
decimalReservationLifecycle: {
|
|
121
|
+
parentTransitions: [
|
|
122
|
+
{ from: 'active', to: 'closed' },
|
|
123
|
+
{ from: 'closed', to: 'active' },
|
|
124
|
+
],
|
|
125
|
+
childTransitions: [
|
|
126
|
+
{ from: 'signing', to: 'fulfilled' },
|
|
127
|
+
{ from: 'fulfilled', to: 'signing' },
|
|
128
|
+
],
|
|
129
|
+
fulfilledChildStatuses: ['fulfilled'],
|
|
130
|
+
lockedParentStatuses: ['closed'],
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
之后用既有 Data API update 或 transaction,带原记录的 expectedRevision。
|
|
135
|
+
当前用户或已授权后台主体仍须具备原资源、字段和数据范围权限。金额、币种、主子关系、
|
|
136
|
+
parent/root 仍受保护,声明状态边不授予写权限。普通子状态更新必须属于当前 committed
|
|
137
|
+
周期;reserved/released 继续走真实受管审批或重新提交,不能绕过审批。
|
|
138
|
+
|
|
139
|
+
父记录进入 locked 状态时,所有当前占用都必须已 committed 且子状态在 fulfilled 集合;
|
|
140
|
+
存在 reserved、缺失子记录、金额/关系不一致或未履行子记录时返回
|
|
141
|
+
`OPENXIANGDA_NATIVE_DECIMAL_PARENT_UNFULFILLED_CHILDREN`。released 历史周期已退出义务。
|
|
142
|
+
终止、作废不会自动算作履行或释放金额,需按真实业务含义选择声明。
|
|
143
|
+
父记录 locked 后拒绝新预留和把子记录改回未履行状态,返回
|
|
144
|
+
`OPENXIANGDA_NATIVE_DECIMAL_PARENT_LOCKED`;如需解锁,必须有明确的父状态边和原更新权限。
|
|
145
|
+
|
|
146
|
+
每类最多 64 条不重复、非自身状态边,两个状态集合各 1–16 项。状态和映射不符、缺少
|
|
147
|
+
reserve 声明、锁定状态仍可新预留,在本地检查即拒绝并指向声明位置。
|
|
148
|
+
显式启用才要求 `data.decimal-reservation-lifecycle@1.0.0`;目标环境须先升级并具备该能力。
|
|
149
|
+
状态规则改变在激活新版本前会核对现有关闭父记录,冲突返回
|
|
150
|
+
`OPENXIANGDA_NATIVE_DECIMAL_LIFECYCLE_ACTIVATION_CONFLICT`,保留原版本和数据;不会自动改历史状态。
|
|
151
|
+
移除声明将恢复严格保护。回滚到不支持本能力的服务器前,应先停用依赖此声明的入口。
|
|
152
|
+
Connected Dev 会保留已激活规则。新增或改变规则时,先通过 `check` 并发布到测试环境,
|
|
153
|
+
使历史一致性校验完成后再连接开发;若仅改本地覆盖层,会返回
|
|
154
|
+
`OPENXIANGDA_CONNECTED_DEV_OVERLAY_DECIMAL_LIFECYCLE_ACTIVATION_REQUIRED` 和声明指针。
|
|
155
|
+
这样不会出现本地规则被接受却在写入时悄悄忽略的情况。
|
|
@@ -48,6 +48,17 @@ pnpm openxiangda logs <deployment-id> --json
|
|
|
48
48
|
|
|
49
49
|
平台启用镜像上传后,`deploy` 在本机用 Docker Buildx 导出 OCI 镜像,再使用当前平台登录态分片上传。开发者只需应用部署权限,无需登录平台管理员的镜像仓库或取得推送凭据。已完成的镜像层按摘要复用,中断后重新执行同一条部署命令可恢复上传;平台核验镜像完整性后才进入应用发布。尚未升级的旧平台保留其原镜像构建合同;新平台已声明上传能力但未启用时,命令会明确报告平台配置缺失。
|
|
50
50
|
|
|
51
|
+
上传失败后,本机保留原 OCI 制品,错误的 `details` 包含候选 ID、原 digest、失效时间及脱敏原因码。
|
|
52
|
+
恢复网络或登录后,在原工作区执行同一条 `pnpm openxiangda deploy`:相同构建输入、账号、平台、
|
|
53
|
+
应用和环境会校验原制品并从平台保存的偏移继续;即使 Docker 暂时不可用也能恢复已经构建的镜像。
|
|
54
|
+
完成响应丢失时同样查询原摘要的 ready 回执。源码(包括未提交文件)、权限主体或目标变化会创建新候选,
|
|
55
|
+
不会冒充原上传。上传鉴权仍在平台执行;本地缓存不授予部署权限。
|
|
56
|
+
|
|
57
|
+
缓存保留最多 24 小时、8 个候选、总预算 8 GiB;空间不足时仅回收未被使用的旧候选。
|
|
58
|
+
仅当平台单镜像上限不超过 8 GiB 时启用本地恢复,较大的平台配额保留原上传路径,不降低平台允许的镜像大小。
|
|
59
|
+
缓存和登录凭据分开,位于本机用户私有目录。过期或已经回收的候选需重新构建;已有 DeploymentRun
|
|
60
|
+
的未知结果仍查询原运行,镜像上传恢复不会重新发起已提交的部署。
|
|
61
|
+
|
|
51
62
|
生成的不可变 AppVersion 绑定前端、可选后端、配置契约和制品摘要。默认提交后持续跟踪同一运行,直到平台成功、失败或取消,最多观察 15 分钟。`--no-wait` 只提交,适用于已有状态跟踪器的自动化;此时返回运行 ID 不代表部署完成。
|
|
52
63
|
|
|
53
64
|
构建、上传及平台执行都会显示当前阶段和耗时,长步骤每 10 秒反馈一次。平台的准备、部署、切换和健康检查状态来自原运行。观察超时或连接中断不会取消部署或重建候选,使用下面的命令继续跟踪:
|
|
@@ -58,7 +69,8 @@ pnpm openxiangda status <deployment-id> --watch
|
|
|
58
69
|
|
|
59
70
|
网络响应不确定时先查询原运行,不凭本地输出创建重复部署。平台部署成功后,仍需执行真实角色的业务验收。
|
|
60
71
|
|
|
61
|
-
|
|
72
|
+
新的发布使用当前源码构建;尚未完成的同输入镜像上传可复用上述短期原制品缓存。
|
|
73
|
+
该缓存不保存部署状态,平台仍唯一拥有 DeploymentRun。提交响应不确定时使用原 DeploymentRun 的 status/logs 和 recovery 继续处理。
|
|
62
74
|
|
|
63
75
|
## 测试环境验收
|
|
64
76
|
|
|
@@ -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.29.0 skill install --force
|
|
72
|
+
pnpm dlx openxiangda@2.29.0 auth status --base-url <平台地址> --json
|
|
73
|
+
pnpm dlx openxiangda@2.29.0 login --cwd my-app --base-url https://platform.example.com
|
|
74
|
+
pnpm dlx openxiangda@2.29.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.29.0 auth status --base-url <平台> --json
|
|
178
|
+
pnpm dlx openxiangda@2.29.0 source resolve <仓库URL> --base-url <平台> --json
|
|
179
|
+
pnpm dlx openxiangda@2.29.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.29.0",
|
|
4
4
|
"topics": [
|
|
5
5
|
{
|
|
6
6
|
"id": "getting-started",
|
|
7
7
|
"title": "安装与开始开发",
|
|
8
8
|
"file": "getting-started.md",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "260070c834f6e441f80604b8d41a174c13bf27c166cd5aea4dd0d5c5b3dc74b7"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"id": "product-design",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"id": "decimal-reservations",
|
|
97
97
|
"title": "主子记录精确金额占用",
|
|
98
98
|
"file": "decimal-reservations.md",
|
|
99
|
-
"sha256": "
|
|
99
|
+
"sha256": "cdbc0bfff79c9bf71b88f5f50a5b76e4de77bae92e590ce08f32662621c1ff7d"
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
"id": "administration",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"id": "delivery",
|
|
115
115
|
"title": "部署、生产晋级与恢复",
|
|
116
116
|
"file": "delivery.md",
|
|
117
|
-
"sha256": "
|
|
117
|
+
"sha256": "29ab3c1d878af989fcc3a3198d878d6344dc00b711df898251d1c757f0531156"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
"id": "upgrading",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openxiangda",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.29.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.
|
|
64
|
-
"openxiangda-contracts": "2.
|
|
65
|
-
"openxiangda-devkit-core": "2.
|
|
63
|
+
"openxiangda-cli": "2.5.24",
|
|
64
|
+
"openxiangda-contracts": "2.25.0",
|
|
65
|
+
"openxiangda-devkit-core": "2.28.0",
|
|
66
66
|
"openxiangda-legacy": "npm:openxiangda@1.0.269",
|
|
67
|
-
"openxiangda-mcp": "2.0.
|
|
68
|
-
"openxiangda-nest": "2.7.
|
|
69
|
-
"openxiangda-skill-kit": "2.3.
|
|
67
|
+
"openxiangda-mcp": "2.0.48",
|
|
68
|
+
"openxiangda-nest": "2.7.2",
|
|
69
|
+
"openxiangda-skill-kit": "2.3.22",
|
|
70
70
|
"xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
@@ -132,40 +132,40 @@
|
|
|
132
132
|
},
|
|
133
133
|
"openxiangdaRelease": {
|
|
134
134
|
"schemaVersion": "openxiangda.release-notes/v1",
|
|
135
|
-
"version": "2.
|
|
135
|
+
"version": "2.29.0",
|
|
136
136
|
"status": "reviewed",
|
|
137
|
-
"title": "OpenXiangda 2.
|
|
138
|
-
"summary": "
|
|
137
|
+
"title": "OpenXiangda 2.29.0:金额提交后的声明式生命周期",
|
|
138
|
+
"summary": "模型可以声明金额提交后的合法状态变化、子记录履行状态和父记录锁定状态;编译时检查规则,平台在原 Native 写入和激活边界执行一致性保护。",
|
|
139
139
|
"newFeatures": [
|
|
140
|
-
"
|
|
141
|
-
"
|
|
140
|
+
"模型与 DataResource 增加可选 decimalReservationLifecycle,复用现有额度字段映射并派生 data.decimal-reservation-lifecycle@1.0.0。",
|
|
141
|
+
"应用编译器、平台纯编译器和 JSON Schema 同步支持有界声明;未知状态、重复或自身状态边、缺少 reserve 动作及锁定状态可新预留在发布前拒绝。"
|
|
142
142
|
],
|
|
143
143
|
"fixes": [
|
|
144
|
-
"
|
|
144
|
+
"为已 committed 子记录的正常履行更新提供受约束的原 Data API 路径,继续保护金额、币种和主子关系。"
|
|
145
145
|
],
|
|
146
146
|
"affectedUsers": [
|
|
147
|
-
"
|
|
147
|
+
"使用主子记录精确金额预留,且需要在审批提交金额后继续履行、关闭或解锁的 OpenXiangda 2.0 应用。"
|
|
148
148
|
],
|
|
149
149
|
"upgradeSteps": [
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
150
|
+
"先确认目标平台支持 data.decimal-reservation-lifecycle@1.0.0,再安装 openxiangda@2.29.0 并更新锁文件。",
|
|
151
|
+
"在模型显式声明合法状态边、已履行子状态和锁定父状态;继续通过已授权 Data API update/transaction 与 expectedRevision 更新。",
|
|
152
|
+
"本能力不需要新增数据库迁移;新版本激活会检查现有关闭父记录,不自动改写历史状态。"
|
|
153
153
|
],
|
|
154
154
|
"knownLimitations": [
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
155
|
+
"状态声明不授予资源、字段或行权限;reserved/released 子记录仍须走原受管审批或重新提交。",
|
|
156
|
+
"终止或作废不自动代表履行,也不会释放 committed 金额。每类最多 64 条边,两个状态集合各 1–16 项。",
|
|
157
|
+
"未声明的资源保留严格保护;回滚到不支持本能力的服务器前须停用依赖新声明的入口。",
|
|
158
|
+
"公开包发行与目标平台部署、应用适配及业务验收分别记录;包安装成功不代表目标环境具备运行能力。"
|
|
159
159
|
],
|
|
160
160
|
"issues": [],
|
|
161
161
|
"compatibility": {
|
|
162
162
|
"node": ">=24",
|
|
163
163
|
"workspaceGenerations": "v2",
|
|
164
|
-
"platform": "
|
|
165
|
-
"v1": "独立 V1
|
|
164
|
+
"platform": "显式声明才要求 data.decimal-reservation-lifecycle@1.0.0;共享 Native validator 随新契约更新,按目标预检结果配套升级平台。",
|
|
165
|
+
"v1": "独立 V1 引擎和未声明生命周期的资源不受运行行为变更影响。"
|
|
166
166
|
},
|
|
167
|
-
"sha256": "
|
|
168
|
-
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.
|
|
167
|
+
"sha256": "967c751ef6dd40ae7e593bebef5ac48e94ad366272b6622702e05a89338fb021",
|
|
168
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.29.0"
|
|
169
169
|
},
|
|
170
170
|
"scripts": {
|
|
171
171
|
"build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "openxiangda.release-notes/v1",
|
|
3
|
+
"version": "2.28.1",
|
|
4
|
+
"status": "reviewed",
|
|
5
|
+
"title": "OpenXiangda 2.28.1:后端镜像原制品上传恢复",
|
|
6
|
+
"summary": "上传中断后保留原 OCI 镜像,普通 deploy 重试直接从平台已有偏移或 ready 回执恢复,减少重建和重复传输。",
|
|
7
|
+
"newFeatures": [],
|
|
8
|
+
"fixes": [
|
|
9
|
+
"已导出的后端镜像不会再因为上传失败或响应丢失被立即删除;相同输入重试保持原摘要,已封存候选不再依赖 Docker 重建。",
|
|
10
|
+
"缓存绑定当前站点、租户、用户、应用环境和实际构建上下文,包含未提交源码;恢复前验证全部 blob,使用跨进程租约阻止重复上传。"
|
|
11
|
+
],
|
|
12
|
+
"affectedUsers": [
|
|
13
|
+
"通过平台登录态分块上传后端镜像的 OpenXiangda 2.0 应用开发者。"
|
|
14
|
+
],
|
|
15
|
+
"upgradeSteps": [
|
|
16
|
+
"应用消费 openxiangda@2.28.1 并更新锁文件。上传中断时保留工作区输入,恢复网络或登录后重复原 deploy 命令。",
|
|
17
|
+
"无需平台数据库迁移,也无需手工寻找 BuildKit 历史或镜像上传会话。"
|
|
18
|
+
],
|
|
19
|
+
"knownLimitations": [
|
|
20
|
+
"最多保留 8 个候选、总预留空间 8 GiB、24 小时;平台单镜像上限超过 8 GiB 时继续原临时上传路径。缓存过期或被预算清理后需要重新构建。",
|
|
21
|
+
"源码、身份、环境、配置或工具版本变化会形成新候选;恢复原镜像不重新求值远程 FROM/RUN 输入。",
|
|
22
|
+
"本机上下文校验有 100000 条目、8 GiB、60 秒预算;构建期间源码变化会拒绝上传,需要保存完成后重试。",
|
|
23
|
+
"真实 Docker 导出及故障恢复、隔离的传输协议和发行门禁分别验证,不代表任何客户应用已发布或通过业务验收。"
|
|
24
|
+
],
|
|
25
|
+
"issues": [],
|
|
26
|
+
"compatibility": {
|
|
27
|
+
"node": ">=24",
|
|
28
|
+
"workspaceGenerations": "v2",
|
|
29
|
+
"platform": "复用既有 backendImageUpload 协议和 auth/whoami,不新增远端上传状态或服务器账号要求。",
|
|
30
|
+
"v1": "独立 V1 引擎和工作区不受影响。"
|
|
31
|
+
},
|
|
32
|
+
"sha256": "762fa08d9c2818264ed9b65383f1ec60ad6bc4236978ee07cf0c19cdce45ad16",
|
|
33
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.28.1"
|
|
34
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "openxiangda.release-notes/v1",
|
|
3
|
+
"version": "2.29.0",
|
|
4
|
+
"status": "reviewed",
|
|
5
|
+
"title": "OpenXiangda 2.29.0:金额提交后的声明式生命周期",
|
|
6
|
+
"summary": "模型可以声明金额提交后的合法状态变化、子记录履行状态和父记录锁定状态;编译时检查规则,平台在原 Native 写入和激活边界执行一致性保护。",
|
|
7
|
+
"newFeatures": [
|
|
8
|
+
"模型与 DataResource 增加可选 decimalReservationLifecycle,复用现有额度字段映射并派生 data.decimal-reservation-lifecycle@1.0.0。",
|
|
9
|
+
"应用编译器、平台纯编译器和 JSON Schema 同步支持有界声明;未知状态、重复或自身状态边、缺少 reserve 动作及锁定状态可新预留在发布前拒绝。"
|
|
10
|
+
],
|
|
11
|
+
"fixes": [
|
|
12
|
+
"为已 committed 子记录的正常履行更新提供受约束的原 Data API 路径,继续保护金额、币种和主子关系。"
|
|
13
|
+
],
|
|
14
|
+
"affectedUsers": [
|
|
15
|
+
"使用主子记录精确金额预留,且需要在审批提交金额后继续履行、关闭或解锁的 OpenXiangda 2.0 应用。"
|
|
16
|
+
],
|
|
17
|
+
"upgradeSteps": [
|
|
18
|
+
"先确认目标平台支持 data.decimal-reservation-lifecycle@1.0.0,再安装 openxiangda@2.29.0 并更新锁文件。",
|
|
19
|
+
"在模型显式声明合法状态边、已履行子状态和锁定父状态;继续通过已授权 Data API update/transaction 与 expectedRevision 更新。",
|
|
20
|
+
"本能力不需要新增数据库迁移;新版本激活会检查现有关闭父记录,不自动改写历史状态。"
|
|
21
|
+
],
|
|
22
|
+
"knownLimitations": [
|
|
23
|
+
"状态声明不授予资源、字段或行权限;reserved/released 子记录仍须走原受管审批或重新提交。",
|
|
24
|
+
"终止或作废不自动代表履行,也不会释放 committed 金额。每类最多 64 条边,两个状态集合各 1–16 项。",
|
|
25
|
+
"未声明的资源保留严格保护;回滚到不支持本能力的服务器前须停用依赖新声明的入口。",
|
|
26
|
+
"公开包发行与目标平台部署、应用适配及业务验收分别记录;包安装成功不代表目标环境具备运行能力。"
|
|
27
|
+
],
|
|
28
|
+
"issues": [],
|
|
29
|
+
"compatibility": {
|
|
30
|
+
"node": ">=24",
|
|
31
|
+
"workspaceGenerations": "v2",
|
|
32
|
+
"platform": "显式声明才要求 data.decimal-reservation-lifecycle@1.0.0;共享 Native validator 随新契约更新,按目标预检结果配套升级平台。",
|
|
33
|
+
"v1": "独立 V1 引擎和未声明生命周期的资源不受运行行为变更影响。"
|
|
34
|
+
},
|
|
35
|
+
"sha256": "967c751ef6dd40ae7e593bebef5ac48e94ad366272b6622702e05a89338fb021",
|
|
36
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.29.0"
|
|
37
|
+
}
|
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": "a0a31ebfc680b50a00143a94f76f815a73628a0b6ca74ca612d6f2ac87ebfe39"
|
|
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.
|
|
44
|
-
pnpm dlx openxiangda@2.
|
|
45
|
-
pnpm dlx openxiangda@2.
|
|
46
|
-
pnpm dlx openxiangda@2.
|
|
43
|
+
pnpm dlx openxiangda@2.29.0 auth status --cwd <应用目录> --base-url <平台地址> --json
|
|
44
|
+
pnpm dlx openxiangda@2.29.0 login --cwd <应用目录> --base-url <平台地址>
|
|
45
|
+
pnpm dlx openxiangda@2.29.0 create <应用目录> --base-url <同一平台地址>
|
|
46
|
+
pnpm dlx openxiangda@2.29.0 skill install --force
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
|
|
@@ -105,7 +105,51 @@ workflow command/instance/subject revision 和台账验证,SDK自动继承已
|
|
|
105
105
|
普通应用凭据或自填事件头不构成授权。精确同键、同payload重放返回原完整事务结果;
|
|
106
106
|
旧轮次不能释放重提后的新占用。重放仍受当前权限、有效事件租约和父记录可读性约束。
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
作废/终止释放 committed 必须另有受管真实业务动作;状态枚举不代表已实现该能力,
|
|
109
|
+
签后金额变更仍拒绝。锁等待最多2秒、
|
|
110
110
|
单条SQL最多5秒,较严格的已有约束优先;retryable 409
|
|
111
111
|
`OPENXIANGDA_NATIVE_DECIMAL_CONTENTION` 不允许换键掩盖未知结果。
|
|
112
|
+
|
|
113
|
+
## 提交金额后的正常生命周期
|
|
114
|
+
|
|
115
|
+
需要在 committed 后继续签订、履行等状态操作时,在模型上声明
|
|
116
|
+
`decimalReservationLifecycle`。它复用同资源 reserve 动作的状态与关系字段,
|
|
117
|
+
不新增接口或余额;未声明时继续原有严格保护。以下状态均须已在状态字段选项中声明:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
decimalReservationLifecycle: {
|
|
121
|
+
parentTransitions: [
|
|
122
|
+
{ from: 'active', to: 'closed' },
|
|
123
|
+
{ from: 'closed', to: 'active' },
|
|
124
|
+
],
|
|
125
|
+
childTransitions: [
|
|
126
|
+
{ from: 'signing', to: 'fulfilled' },
|
|
127
|
+
{ from: 'fulfilled', to: 'signing' },
|
|
128
|
+
],
|
|
129
|
+
fulfilledChildStatuses: ['fulfilled'],
|
|
130
|
+
lockedParentStatuses: ['closed'],
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
之后用既有 Data API update 或 transaction,带原记录的 expectedRevision。
|
|
135
|
+
当前用户或已授权后台主体仍须具备原资源、字段和数据范围权限。金额、币种、主子关系、
|
|
136
|
+
parent/root 仍受保护,声明状态边不授予写权限。普通子状态更新必须属于当前 committed
|
|
137
|
+
周期;reserved/released 继续走真实受管审批或重新提交,不能绕过审批。
|
|
138
|
+
|
|
139
|
+
父记录进入 locked 状态时,所有当前占用都必须已 committed 且子状态在 fulfilled 集合;
|
|
140
|
+
存在 reserved、缺失子记录、金额/关系不一致或未履行子记录时返回
|
|
141
|
+
`OPENXIANGDA_NATIVE_DECIMAL_PARENT_UNFULFILLED_CHILDREN`。released 历史周期已退出义务。
|
|
142
|
+
终止、作废不会自动算作履行或释放金额,需按真实业务含义选择声明。
|
|
143
|
+
父记录 locked 后拒绝新预留和把子记录改回未履行状态,返回
|
|
144
|
+
`OPENXIANGDA_NATIVE_DECIMAL_PARENT_LOCKED`;如需解锁,必须有明确的父状态边和原更新权限。
|
|
145
|
+
|
|
146
|
+
每类最多 64 条不重复、非自身状态边,两个状态集合各 1–16 项。状态和映射不符、缺少
|
|
147
|
+
reserve 声明、锁定状态仍可新预留,在本地检查即拒绝并指向声明位置。
|
|
148
|
+
显式启用才要求 `data.decimal-reservation-lifecycle@1.0.0`;目标环境须先升级并具备该能力。
|
|
149
|
+
状态规则改变在激活新版本前会核对现有关闭父记录,冲突返回
|
|
150
|
+
`OPENXIANGDA_NATIVE_DECIMAL_LIFECYCLE_ACTIVATION_CONFLICT`,保留原版本和数据;不会自动改历史状态。
|
|
151
|
+
移除声明将恢复严格保护。回滚到不支持本能力的服务器前,应先停用依赖此声明的入口。
|
|
152
|
+
Connected Dev 会保留已激活规则。新增或改变规则时,先通过 `check` 并发布到测试环境,
|
|
153
|
+
使历史一致性校验完成后再连接开发;若仅改本地覆盖层,会返回
|
|
154
|
+
`OPENXIANGDA_CONNECTED_DEV_OVERLAY_DECIMAL_LIFECYCLE_ACTIVATION_REQUIRED` 和声明指针。
|
|
155
|
+
这样不会出现本地规则被接受却在写入时悄悄忽略的情况。
|
|
@@ -48,6 +48,17 @@ pnpm openxiangda logs <deployment-id> --json
|
|
|
48
48
|
|
|
49
49
|
平台启用镜像上传后,`deploy` 在本机用 Docker Buildx 导出 OCI 镜像,再使用当前平台登录态分片上传。开发者只需应用部署权限,无需登录平台管理员的镜像仓库或取得推送凭据。已完成的镜像层按摘要复用,中断后重新执行同一条部署命令可恢复上传;平台核验镜像完整性后才进入应用发布。尚未升级的旧平台保留其原镜像构建合同;新平台已声明上传能力但未启用时,命令会明确报告平台配置缺失。
|
|
50
50
|
|
|
51
|
+
上传失败后,本机保留原 OCI 制品,错误的 `details` 包含候选 ID、原 digest、失效时间及脱敏原因码。
|
|
52
|
+
恢复网络或登录后,在原工作区执行同一条 `pnpm openxiangda deploy`:相同构建输入、账号、平台、
|
|
53
|
+
应用和环境会校验原制品并从平台保存的偏移继续;即使 Docker 暂时不可用也能恢复已经构建的镜像。
|
|
54
|
+
完成响应丢失时同样查询原摘要的 ready 回执。源码(包括未提交文件)、权限主体或目标变化会创建新候选,
|
|
55
|
+
不会冒充原上传。上传鉴权仍在平台执行;本地缓存不授予部署权限。
|
|
56
|
+
|
|
57
|
+
缓存保留最多 24 小时、8 个候选、总预算 8 GiB;空间不足时仅回收未被使用的旧候选。
|
|
58
|
+
仅当平台单镜像上限不超过 8 GiB 时启用本地恢复,较大的平台配额保留原上传路径,不降低平台允许的镜像大小。
|
|
59
|
+
缓存和登录凭据分开,位于本机用户私有目录。过期或已经回收的候选需重新构建;已有 DeploymentRun
|
|
60
|
+
的未知结果仍查询原运行,镜像上传恢复不会重新发起已提交的部署。
|
|
61
|
+
|
|
51
62
|
生成的不可变 AppVersion 绑定前端、可选后端、配置契约和制品摘要。默认提交后持续跟踪同一运行,直到平台成功、失败或取消,最多观察 15 分钟。`--no-wait` 只提交,适用于已有状态跟踪器的自动化;此时返回运行 ID 不代表部署完成。
|
|
52
63
|
|
|
53
64
|
构建、上传及平台执行都会显示当前阶段和耗时,长步骤每 10 秒反馈一次。平台的准备、部署、切换和健康检查状态来自原运行。观察超时或连接中断不会取消部署或重建候选,使用下面的命令继续跟踪:
|
|
@@ -58,7 +69,8 @@ pnpm openxiangda status <deployment-id> --watch
|
|
|
58
69
|
|
|
59
70
|
网络响应不确定时先查询原运行,不凭本地输出创建重复部署。平台部署成功后,仍需执行真实角色的业务验收。
|
|
60
71
|
|
|
61
|
-
|
|
72
|
+
新的发布使用当前源码构建;尚未完成的同输入镜像上传可复用上述短期原制品缓存。
|
|
73
|
+
该缓存不保存部署状态,平台仍唯一拥有 DeploymentRun。提交响应不确定时使用原 DeploymentRun 的 status/logs 和 recovery 继续处理。
|
|
62
74
|
|
|
63
75
|
## 测试环境验收
|
|
64
76
|
|
|
@@ -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.29.0 skill install --force
|
|
72
|
+
pnpm dlx openxiangda@2.29.0 auth status --base-url <平台地址> --json
|
|
73
|
+
pnpm dlx openxiangda@2.29.0 login --cwd my-app --base-url https://platform.example.com
|
|
74
|
+
pnpm dlx openxiangda@2.29.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.29.0 auth status --base-url <平台> --json
|
|
178
|
+
pnpm dlx openxiangda@2.29.0 source resolve <仓库URL> --base-url <平台> --json
|
|
179
|
+
pnpm dlx openxiangda@2.29.0 source clone <仓库URL> <新目录> --base-url <平台> --json
|
|
180
180
|
```
|
|
181
181
|
|
|
182
182
|
登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
|