openxiangda 2.4.0 → 2.4.1

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.
@@ -136,6 +136,12 @@ await bootstrapOpenXiangdaApplication(AppModule);
136
136
 
137
137
  签名事件处理器使用 `sendFromEvent()`,在声明中指定事件 data 内的收件人与文案路径,由平台验证不可变事件后解析。普通业务动作不需要平台通知管理权限。需要高级钉钉卡片时才使用已授权的管理服务和已启用通道,不能把它设为普通审批的默认依赖。
138
138
 
139
+ 事件处理器可正常注入请求作用域的通知服务或瞬态依赖。SDK 先验证签名、应用、环境、
140
+ 事件 Schema 并认领回执,再从处理器所属 Nest 模块创建本次投递的依赖作用域。
141
+ 静态单例仍由 Nest 复用;失败重试创建新作用域并保留原事件幂等键。处理器中的
142
+ `REQUEST` 不含用户授权,不能用 `send()` 冒充具名用户动作;事件身份仅来自当前
143
+ 已验证的 `handle(event, context)` 执行,离开该执行后调用 `sendFromEvent()` 会拒绝。
144
+
139
145
  通知协议常量也从同一个公开入口导入:
140
146
 
141
147
  ```ts
@@ -11,10 +11,10 @@ OpenXiangda 2.0 默认生成 React 应用和共享契约。普通 CRUD、标准
11
11
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
12
12
 
13
13
  ```bash
14
- pnpm dlx openxiangda@2.4.0 skill install --force
15
- pnpm dlx openxiangda@2.4.0 auth status --base-url <平台地址> --json
16
- pnpm dlx openxiangda@2.4.0 login --base-url https://platform.example.com
17
- pnpm dlx openxiangda@2.4.0 create my-app --base-url https://platform.example.com
14
+ pnpm dlx openxiangda@2.4.1 skill install --force
15
+ pnpm dlx openxiangda@2.4.1 auth status --base-url <平台地址> --json
16
+ pnpm dlx openxiangda@2.4.1 login --base-url https://platform.example.com
17
+ pnpm dlx openxiangda@2.4.1 create my-app --base-url https://platform.example.com
18
18
  cd my-app
19
19
  pnpm openxiangda context --json
20
20
  pnpm openxiangda dev
@@ -114,9 +114,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
114
114
  无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
115
115
 
116
116
  ```bash
117
- pnpm dlx openxiangda@2.4.0 auth status --base-url <平台> --json
118
- pnpm dlx openxiangda@2.4.0 source resolve <仓库URL> --base-url <平台> --json
119
- pnpm dlx openxiangda@2.4.0 source clone <仓库URL> <新目录> --base-url <平台> --json
117
+ pnpm dlx openxiangda@2.4.1 auth status --base-url <平台> --json
118
+ pnpm dlx openxiangda@2.4.1 source resolve <仓库URL> --base-url <平台> --json
119
+ pnpm dlx openxiangda@2.4.1 source clone <仓库URL> <新目录> --base-url <平台> --json
120
120
  ```
121
121
 
122
122
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schemaVersion": "openxiangda.documentation/v1",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "topics": [
5
5
  {
6
6
  "id": "getting-started",
7
7
  "title": "安装与开始开发",
8
8
  "file": "getting-started.md",
9
- "sha256": "bff9fdb110552a735202c9ec0fe6112f3d852760b0888d469973923dc492f5cd"
9
+ "sha256": "3865bad9bcd22f13a4da202525c62ed179553698f269b945aae9f7c7361b19c5"
10
10
  },
11
11
  {
12
12
  "id": "product-design",
@@ -78,7 +78,7 @@
78
78
  "id": "backend",
79
79
  "title": "按需后端与业务动作",
80
80
  "file": "backend.md",
81
- "sha256": "9ef4d6ac9b4bee97d28daeacf7e88a9460f2402a35e0ece4ba2888cdceb354e7"
81
+ "sha256": "2017f876b6e548d8440323cb32df0505939330cc979ea884e4fd4d3fefbd489e"
82
82
  },
83
83
  {
84
84
  "id": "administration",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -58,13 +58,13 @@
58
58
  "antd-mobile": "5.42.3",
59
59
  "dayjs": "1.11.18",
60
60
  "docx-preview": "0.3.7",
61
- "openxiangda-cli": "2.2.5",
61
+ "openxiangda-cli": "2.2.6",
62
62
  "openxiangda-contracts": "2.4.0",
63
63
  "openxiangda-devkit-core": "2.4.0",
64
64
  "openxiangda-legacy": "npm:openxiangda@1.0.268",
65
65
  "openxiangda-mcp": "2.0.6",
66
- "openxiangda-nest": "2.0.6",
67
- "openxiangda-skill-kit": "2.0.7",
66
+ "openxiangda-nest": "2.0.7",
67
+ "openxiangda-skill-kit": "2.0.8",
68
68
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
69
69
  },
70
70
  "peerDependencies": {
@@ -130,18 +130,17 @@
130
130
  },
131
131
  "openxiangdaRelease": {
132
132
  "schemaVersion": "openxiangda.release-notes/v1",
133
- "version": "2.4.0",
134
- "title": "事务接受时刻与预约时间窗口",
133
+ "version": "2.4.1",
134
+ "title": "事件处理器依赖作用域修复",
135
135
  "status": "reviewed",
136
- "summary": "增加绑定提交字段的时间守卫,统一在锁等待结束后使用平台数据库时间判断业务期限。",
137
- "newFeatures": [
138
- "operation-time 守卫可检查 create/update 中的 datetime 字段,支持正负 366 天以内的整数毫秒偏移和六种比较。"
139
- ],
136
+ "summary": "事件处理器可正常注入请求级通知服务,签名与回执校验后再由所属 Nest 模块解析依赖。",
137
+ "newFeatures": [],
140
138
  "fixes": [
141
- "动态时间条件使用守卫锁及写入前校验完成后的数据库接受时刻,成功重放保持原 evaluatedAt。"
139
+ "修复请求级依赖使事件处理器构造函数未执行、handle 调用失败的问题。",
140
+ "同名 provider 严格按所属模块解析,并发投递与失败重试使用独立作用域;静态单例继续复用。"
142
141
  ],
143
142
  "affectedUsers": [
144
- "需要预约窗口、截止时间、签到时间或并发事务时间条件的 V2 应用开发者。"
143
+ "使用 Nest 签名事件处理器及请求级通知服务或瞬态依赖的 V2 应用开发者。"
145
144
  ],
146
145
  "compatibility": {
147
146
  "node": ">=24",
@@ -149,21 +148,20 @@
149
148
  "v1",
150
149
  "v2"
151
150
  ],
152
- "v1Policy": "V1 引擎和已有应用契约不变。",
153
- "platformPolicy": "新编译的数据应用要求 Data API 1.1.0 和匹配的共享校验器;平台预检拒绝不支持该能力的目标。"
151
+ "v1Policy": "V1 引擎与已有应用契约不变。",
152
+ "platformPolicy": "沿用 2.4.0 的 Data API 1.1.0 要求;事件签名、回执、身份与部署协议不变。"
154
153
  },
155
154
  "upgradeSteps": [
156
- "将应用精确依赖升级至 openxiangda 2.4.0,更新锁文件并刷新技能资料。",
157
- "平台部署匹配版本后执行正式检查、测试发布、数据库截止和真实角色验收。"
155
+ "将应用精确依赖升级至 openxiangda 2.4.1,刷新工作区资料并重新检查。",
156
+ "重新发布应用后验证真实事件、通知送达、重复投递与失败恢复。"
158
157
  ],
159
158
  "knownLimitations": [
160
- "evaluatedAt 是动态条件的接受时刻,不是最终数据库提交时刻。",
161
- "字段必须是声明且可写的 datetime 字面值,不支持空值、嵌套路径或操作引用。",
162
- "工具包发布不代表平台已部署或应用业务验收已通过。"
159
+ "事件作用域的 REQUEST 不含用户授权,sendFromEvent 仅在已验证的事件执行期间可用。",
160
+ "SDK 测试通过不代表真实平台通知送达或应用业务验收已完成。"
163
161
  ],
164
162
  "issues": [],
165
- "sha256": "2c4e0bf9f880e72a454010d2590fe3ac5b2993a215473c8e29ef29e77431e42a",
166
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.4.0"
163
+ "sha256": "f81f626e3fb91069c4f5d94da48a80400ae3fca5e3b55ab0d77e0a7c82dc7681",
164
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.4.1"
167
165
  },
168
166
  "scripts": {
169
167
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,35 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.4.1",
4
+ "title": "事件处理器依赖作用域修复",
5
+ "status": "reviewed",
6
+ "summary": "事件处理器可正常注入请求级通知服务,签名与回执校验后再由所属 Nest 模块解析依赖。",
7
+ "newFeatures": [],
8
+ "fixes": [
9
+ "修复请求级依赖使事件处理器构造函数未执行、handle 调用失败的问题。",
10
+ "同名 provider 严格按所属模块解析,并发投递与失败重试使用独立作用域;静态单例继续复用。"
11
+ ],
12
+ "affectedUsers": [
13
+ "使用 Nest 签名事件处理器及请求级通知服务或瞬态依赖的 V2 应用开发者。"
14
+ ],
15
+ "compatibility": {
16
+ "node": ">=24",
17
+ "workspaceGenerations": [
18
+ "v1",
19
+ "v2"
20
+ ],
21
+ "v1Policy": "V1 引擎与已有应用契约不变。",
22
+ "platformPolicy": "沿用 2.4.0 的 Data API 1.1.0 要求;事件签名、回执、身份与部署协议不变。"
23
+ },
24
+ "upgradeSteps": [
25
+ "将应用精确依赖升级至 openxiangda 2.4.1,刷新工作区资料并重新检查。",
26
+ "重新发布应用后验证真实事件、通知送达、重复投递与失败恢复。"
27
+ ],
28
+ "knownLimitations": [
29
+ "事件作用域的 REQUEST 不含用户授权,sendFromEvent 仅在已验证的事件执行期间可用。",
30
+ "SDK 测试通过不代表真实平台通知送达或应用业务验收已完成。"
31
+ ],
32
+ "issues": [],
33
+ "sha256": "f81f626e3fb91069c4f5d94da48a80400ae3fca5e3b55ab0d77e0a7c82dc7681",
34
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.4.1"
35
+ }
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "name": "openxiangda-v2",
6
6
  "description": "使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具体变更出发,通过对话发现模块、完成详细产品设计,再开发、检查和交付应用。维护 1.x 应用时使用对应的 1.x 技能。",
7
- "sha256": "ef5fadf78a37085d925678710fecbdca3a466987a27770aa6421c869be6bbc03"
7
+ "sha256": "5ce1c45212e3f66651e1740bfa3c6686e41f0c7da950d2bc3c15bf94c09294c0"
8
8
  }
9
9
  ]
10
10
  }
@@ -18,10 +18,10 @@ description: 使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具
18
18
  未创建工作区时使用本 Skill 随根包发布的精确版本:
19
19
 
20
20
  ```bash
21
- pnpm dlx openxiangda@2.4.0 auth status --base-url <平台地址> --json
22
- pnpm dlx openxiangda@2.4.0 login --base-url <平台地址>
23
- pnpm dlx openxiangda@2.4.0 create <应用目录> --base-url <同一平台地址>
24
- pnpm dlx openxiangda@2.4.0 skill install --force
21
+ pnpm dlx openxiangda@2.4.1 auth status --base-url <平台地址> --json
22
+ pnpm dlx openxiangda@2.4.1 login --base-url <平台地址>
23
+ pnpm dlx openxiangda@2.4.1 create <应用目录> --base-url <同一平台地址>
24
+ pnpm dlx openxiangda@2.4.1 skill install --force
25
25
  ```
26
26
 
27
27
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -136,6 +136,12 @@ await bootstrapOpenXiangdaApplication(AppModule);
136
136
 
137
137
  签名事件处理器使用 `sendFromEvent()`,在声明中指定事件 data 内的收件人与文案路径,由平台验证不可变事件后解析。普通业务动作不需要平台通知管理权限。需要高级钉钉卡片时才使用已授权的管理服务和已启用通道,不能把它设为普通审批的默认依赖。
138
138
 
139
+ 事件处理器可正常注入请求作用域的通知服务或瞬态依赖。SDK 先验证签名、应用、环境、
140
+ 事件 Schema 并认领回执,再从处理器所属 Nest 模块创建本次投递的依赖作用域。
141
+ 静态单例仍由 Nest 复用;失败重试创建新作用域并保留原事件幂等键。处理器中的
142
+ `REQUEST` 不含用户授权,不能用 `send()` 冒充具名用户动作;事件身份仅来自当前
143
+ 已验证的 `handle(event, context)` 执行,离开该执行后调用 `sendFromEvent()` 会拒绝。
144
+
139
145
  通知协议常量也从同一个公开入口导入:
140
146
 
141
147
  ```ts
@@ -11,10 +11,10 @@ OpenXiangda 2.0 默认生成 React 应用和共享契约。普通 CRUD、标准
11
11
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
12
12
 
13
13
  ```bash
14
- pnpm dlx openxiangda@2.4.0 skill install --force
15
- pnpm dlx openxiangda@2.4.0 auth status --base-url <平台地址> --json
16
- pnpm dlx openxiangda@2.4.0 login --base-url https://platform.example.com
17
- pnpm dlx openxiangda@2.4.0 create my-app --base-url https://platform.example.com
14
+ pnpm dlx openxiangda@2.4.1 skill install --force
15
+ pnpm dlx openxiangda@2.4.1 auth status --base-url <平台地址> --json
16
+ pnpm dlx openxiangda@2.4.1 login --base-url https://platform.example.com
17
+ pnpm dlx openxiangda@2.4.1 create my-app --base-url https://platform.example.com
18
18
  cd my-app
19
19
  pnpm openxiangda context --json
20
20
  pnpm openxiangda dev
@@ -114,9 +114,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
114
114
  无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
115
115
 
116
116
  ```bash
117
- pnpm dlx openxiangda@2.4.0 auth status --base-url <平台> --json
118
- pnpm dlx openxiangda@2.4.0 source resolve <仓库URL> --base-url <平台> --json
119
- pnpm dlx openxiangda@2.4.0 source clone <仓库URL> <新目录> --base-url <平台> --json
117
+ pnpm dlx openxiangda@2.4.1 auth status --base-url <平台> --json
118
+ pnpm dlx openxiangda@2.4.1 source resolve <仓库URL> --base-url <平台> --json
119
+ pnpm dlx openxiangda@2.4.1 source clone <仓库URL> <新目录> --base-url <平台> --json
120
120
  ```
121
121
 
122
122
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回