dsh-d365-kit 0.34.1 → 0.34.4

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.
Files changed (75) hide show
  1. package/CHANGELOG.md +319 -308
  2. package/CHANGELOG.zh-CN.md +318 -307
  3. package/INSTALL.md +94 -94
  4. package/INSTALL.zh-CN.md +93 -93
  5. package/LICENSE +21 -21
  6. package/README.md +336 -327
  7. package/README.zh-CN.md +336 -327
  8. package/client.js +1818 -1818
  9. package/cordis.patch.yml +44 -44
  10. package/docs/en/architecture.md +172 -172
  11. package/docs/en/checks.md +184 -184
  12. package/docs/en/installation.md +151 -151
  13. package/docs/en/permissions.md +161 -161
  14. package/docs/en/scenarios.md +202 -202
  15. package/docs/en/tools.md +665 -665
  16. package/docs/en/troubleshooting.md +131 -131
  17. package/docs/zh/architecture.md +172 -172
  18. package/docs/zh/checks.md +184 -184
  19. package/docs/zh/installation.md +151 -151
  20. package/docs/zh/permissions.md +161 -161
  21. package/docs/zh/scenarios.md +202 -202
  22. package/docs/zh/tools.md +665 -665
  23. package/docs/zh/troubleshooting.md +131 -131
  24. package/examples/prompts.en.md +206 -206
  25. package/examples/prompts.zh-CN.md +206 -206
  26. package/examples/waivers.example.json +20 -20
  27. package/icon.svg +6 -6
  28. package/index.js +139 -139
  29. package/lib/auth.js +181 -181
  30. package/lib/client.js +496 -496
  31. package/lib/code-check.js +549 -549
  32. package/lib/config.js +323 -323
  33. package/lib/contract-history.js +49 -49
  34. package/lib/contract.js +583 -583
  35. package/lib/csharp-check.js +493 -493
  36. package/lib/data-migrate.js +1318 -1318
  37. package/lib/data-policy.js +78 -78
  38. package/lib/error-codes.js +80 -80
  39. package/lib/gitlab.js +161 -161
  40. package/lib/health.js +205 -205
  41. package/lib/migrate.js +732 -732
  42. package/lib/preflight.js +116 -116
  43. package/lib/refs.js +191 -191
  44. package/lib/resources.js +320 -320
  45. package/lib/retention-defaults.js +17 -17
  46. package/lib/retention.js +384 -384
  47. package/lib/runtime.js +232 -232
  48. package/lib/settings-http.js +512 -512
  49. package/lib/settings-store.js +371 -371
  50. package/lib/snapshot.js +149 -149
  51. package/lib/tool-code-check.js +133 -133
  52. package/lib/tool-configure.js +169 -169
  53. package/lib/tool-contract.js +376 -376
  54. package/lib/tool-data-sync.js +559 -559
  55. package/lib/tool-data-write.js +203 -203
  56. package/lib/tool-data.js +282 -282
  57. package/lib/tool-diff.js +484 -484
  58. package/lib/tool-environments.js +106 -106
  59. package/lib/tool-flows.js +540 -540
  60. package/lib/tool-health.js +127 -127
  61. package/lib/tool-layers.js +497 -497
  62. package/lib/tool-metadata.js +417 -417
  63. package/lib/tool-migrate.js +102 -102
  64. package/lib/tool-refs.js +206 -206
  65. package/lib/tool-reports.js +299 -299
  66. package/lib/tool-sync.js +430 -430
  67. package/lib/tool-write.js +563 -563
  68. package/lib/waivers.js +83 -83
  69. package/lib/write-actions.js +1374 -1374
  70. package/lib/write-policy.js +199 -199
  71. package/lib/write-store.js +167 -167
  72. package/locale/en.json +68 -68
  73. package/locale/zh.json +68 -68
  74. package/package.json +2 -2
  75. package/skills/d365-troubleshooting/SKILL.md +115 -115
@@ -1,206 +1,206 @@
1
- # 可以直接复制的说法
2
-
3
- **[English](prompts.en.md)** | 简体中文
4
-
5
- agent 会自动选工具、补参数。你只需要说清楚**环境 + 对象 + 想知道的结论**。
6
- 下面的问法都验证过,比「查一下元数据」这种说法有效得多。
7
-
8
- ---
9
-
10
- ## 先看环境
11
-
12
- ```
13
- 四个环境都连一下,看看各自在干什么。
14
- ```
15
-
16
- ```
17
- SIT 现在有正在跑的导入或发布吗?我想改点元数据。
18
- ```
19
-
20
- ```
21
- 昨天到现在有哪些后台作业失败了?
22
- ```
23
-
24
- ## 查元数据
25
-
26
- ```
27
- account 上有哪些自定义字段?只列 contoso_ 开头的。
28
- ```
29
-
30
- ```
31
- 列出最近安装的 10 个解决方案,带版本和受管状态。
32
- ```
33
-
34
- ```
35
- Account 主表单加载了哪些脚本?每个脚本绑了哪些事件?
36
- ```
37
-
38
- ```
39
- 有哪些业务规则作用在 opportunity 上?
40
- ```
41
-
42
- ## 查层(为什么这个环境是这样)
43
-
44
- ```
45
- account 这个实体在四个环境里分别有哪几层?当前生效的是哪个解决方案?
46
- ```
47
-
48
- ```
49
- account.name 这个字段被哪些解决方案覆盖过?
50
- ```
51
-
52
- ```
53
- 为什么 SIT 的 Account 表单和 DEV 不一样?是谁盖的?
54
- ```
55
-
56
- ## 影响面(改/删之前)
57
-
58
- ```
59
- contoso_customertier 这个字段被哪些表单、视图、流程用到?DEV 和 SIT 都看。
60
- ```
61
-
62
- ```
63
- contoso_/scripts/account_form.js 这个脚本被哪些表单引用?
64
- ```
65
-
66
- ```
67
- Contoso.Customizations 这个程序集注册了多少类型、多少步骤?版本多少?
68
- ```
69
-
70
- ```
71
- contoso_taxcategory 这个选项集里,每个值各有多少条客户记录在用?
72
- ```
73
-
74
- ## 快照与对比
75
-
76
- ```
77
- 把 DEV 和 SIT 的表单、视图、字段同步一份,然后告诉我差异。
78
- ```
79
-
80
- ```
81
- DEV 今天的元数据和上一份快照比,多了什么?
82
- ```
83
-
84
- ```
85
- SIT 和 UAT 的插件步骤有什么不同?
86
- ```
87
-
88
- ## 发布评估
89
-
90
- ```
91
- ContosoBase 从 DEV 发到 SIT 和 UAT,有什么风险?
92
- ```
93
-
94
- ```
95
- 这个解决方案导入后,会压掉哪些别的解决方案?
96
- ```
97
-
98
- ```
99
- 目标环境缺这个解决方案时,导入会发生什么?
100
- ```
101
-
102
- ## 代码检查
103
-
104
- ```
105
- 这个 MR 发到 UAT 会不会跑不起来?https://gitlab.example.com/.../merge_requests/7759/diffs
106
- ```
107
-
108
- ```
109
- 这个 MR 改的表单脚本,读的字段在目标环境的表单上都有吗?
110
- ```
111
-
112
- ```
113
- 这个 MR 动了 C# 插件,目标环境的程序集、类型、步骤、镜像都齐吗?
114
- ```
115
-
116
- ## 契约与漂移
117
-
118
- ```
119
- DEV 的插件注册,SIT 和 UAT 都跟上了吗?
120
- ```
121
-
122
- ```
123
- 表单引用的 Web 资源有没有在下游环境缺失?
124
- ```
125
-
126
- ```
127
- 这条差异是已知的,登记成豁免,30 天。
128
- ```
129
-
130
- ```
131
- 和上次比,漂移是变多还是变少了?
132
- ```
133
-
134
- ## 写入
135
-
136
- ```
137
- 给 contoso_taxcategoryos 加这几个选项:AD3|Andorra: Tax Register Number(先只出计划,别执行)
138
- ```
139
-
140
- ```
141
- 在 account 上加一个文本字段 contoso_CustomerTier,120 字符,显示名「客户等级」。
142
- ```
143
-
144
- ```
145
- 把 account.name 的显示名改成「客户名称」。
146
- ```
147
-
148
- ```
149
- 执行 mw04aul6-1ci6aa
150
- ```
151
-
152
- ```
153
- 这个计划先取消。
154
- ```
155
-
156
- 写入的通用句式:**先说要改什么 → 确认「只出计划」→ 看过列表再说「执行 <planId>」**。
157
- 把两句话合成一句时,agent 也会先生成计划、再弹确认卡片,不会直接写。
158
-
159
- ## 业务数据
160
-
161
- ```
162
- contoso_systemconfiguration 里有多少条记录?按 contoso_containsecret 分组看看。
163
- ```
164
-
165
- ```
166
- 取 5 条 contoso_systemconfiguration 看下样例,字段只要 contoso_key 和 contoso_value。
167
- ```
168
-
169
- ```
170
- 帮我在 contoso_systemconfiguration 里补一条:contoso_key = FEATURE_X,contoso_value = 1。
171
- ```
172
-
173
- (最后一条需要 `data.write` 授权,会弹确认卡片。)
174
-
175
- ## 运维
176
-
177
- ```
178
- .d365 现在占多大?哪些能清?
179
- ```
180
-
181
- ```
182
- 把查询留证按策略清理一下,先预演,不要真删。
183
- ```
184
-
185
- ```
186
- 快照压一下,太占地方了。
187
- ```
188
-
189
- ---
190
-
191
- ## 说话的小技巧
192
-
193
- | 想更准 | 这样说 |
194
- | --- | --- |
195
- | 限定环境 | 「在 SIT」「四个环境都看」 |
196
- | 限定范围 | 「只要 contoso_ 开头的」「只看主表单」 |
197
- | 要结论不要清单 | 「告诉我能不能删」「给我一句结论」 |
198
- | 要证据 | 「列出具体是哪几张表单」 |
199
- | 写入前 | 「先只出计划」「不要执行」 |
200
- | 大范围操作 | 「先评估,别动环境」 |
201
-
202
- 反过来,避免这些说法——它们会让 agent 猜:
203
-
204
- - 「查一下元数据」(查哪类?哪个环境?)
205
- - 「看看有没有问题」(什么问题?发布、引用、还是契约?)
206
- - 「改一下这个字段」(改成什么?)
1
+ # 可以直接复制的说法
2
+
3
+ **[English](prompts.en.md)** | 简体中文
4
+
5
+ agent 会自动选工具、补参数。你只需要说清楚**环境 + 对象 + 想知道的结论**。
6
+ 下面的问法都验证过,比「查一下元数据」这种说法有效得多。
7
+
8
+ ---
9
+
10
+ ## 先看环境
11
+
12
+ ```
13
+ 四个环境都连一下,看看各自在干什么。
14
+ ```
15
+
16
+ ```
17
+ SIT 现在有正在跑的导入或发布吗?我想改点元数据。
18
+ ```
19
+
20
+ ```
21
+ 昨天到现在有哪些后台作业失败了?
22
+ ```
23
+
24
+ ## 查元数据
25
+
26
+ ```
27
+ account 上有哪些自定义字段?只列 contoso_ 开头的。
28
+ ```
29
+
30
+ ```
31
+ 列出最近安装的 10 个解决方案,带版本和受管状态。
32
+ ```
33
+
34
+ ```
35
+ Account 主表单加载了哪些脚本?每个脚本绑了哪些事件?
36
+ ```
37
+
38
+ ```
39
+ 有哪些业务规则作用在 opportunity 上?
40
+ ```
41
+
42
+ ## 查层(为什么这个环境是这样)
43
+
44
+ ```
45
+ account 这个实体在四个环境里分别有哪几层?当前生效的是哪个解决方案?
46
+ ```
47
+
48
+ ```
49
+ account.name 这个字段被哪些解决方案覆盖过?
50
+ ```
51
+
52
+ ```
53
+ 为什么 SIT 的 Account 表单和 DEV 不一样?是谁盖的?
54
+ ```
55
+
56
+ ## 影响面(改/删之前)
57
+
58
+ ```
59
+ contoso_customertier 这个字段被哪些表单、视图、流程用到?DEV 和 SIT 都看。
60
+ ```
61
+
62
+ ```
63
+ contoso_/scripts/account_form.js 这个脚本被哪些表单引用?
64
+ ```
65
+
66
+ ```
67
+ Contoso.Customizations 这个程序集注册了多少类型、多少步骤?版本多少?
68
+ ```
69
+
70
+ ```
71
+ contoso_taxcategory 这个选项集里,每个值各有多少条客户记录在用?
72
+ ```
73
+
74
+ ## 快照与对比
75
+
76
+ ```
77
+ 把 DEV 和 SIT 的表单、视图、字段同步一份,然后告诉我差异。
78
+ ```
79
+
80
+ ```
81
+ DEV 今天的元数据和上一份快照比,多了什么?
82
+ ```
83
+
84
+ ```
85
+ SIT 和 UAT 的插件步骤有什么不同?
86
+ ```
87
+
88
+ ## 发布评估
89
+
90
+ ```
91
+ ContosoBase 从 DEV 发到 SIT 和 UAT,有什么风险?
92
+ ```
93
+
94
+ ```
95
+ 这个解决方案导入后,会压掉哪些别的解决方案?
96
+ ```
97
+
98
+ ```
99
+ 目标环境缺这个解决方案时,导入会发生什么?
100
+ ```
101
+
102
+ ## 代码检查
103
+
104
+ ```
105
+ 这个 MR 发到 UAT 会不会跑不起来?https://gitlab.example.com/.../merge_requests/7759/diffs
106
+ ```
107
+
108
+ ```
109
+ 这个 MR 改的表单脚本,读的字段在目标环境的表单上都有吗?
110
+ ```
111
+
112
+ ```
113
+ 这个 MR 动了 C# 插件,目标环境的程序集、类型、步骤、镜像都齐吗?
114
+ ```
115
+
116
+ ## 契约与漂移
117
+
118
+ ```
119
+ DEV 的插件注册,SIT 和 UAT 都跟上了吗?
120
+ ```
121
+
122
+ ```
123
+ 表单引用的 Web 资源有没有在下游环境缺失?
124
+ ```
125
+
126
+ ```
127
+ 这条差异是已知的,登记成豁免,30 天。
128
+ ```
129
+
130
+ ```
131
+ 和上次比,漂移是变多还是变少了?
132
+ ```
133
+
134
+ ## 写入
135
+
136
+ ```
137
+ 给 contoso_taxcategoryos 加这几个选项:AD3|Andorra: Tax Register Number(先只出计划,别执行)
138
+ ```
139
+
140
+ ```
141
+ 在 account 上加一个文本字段 contoso_CustomerTier,120 字符,显示名「客户等级」。
142
+ ```
143
+
144
+ ```
145
+ 把 account.name 的显示名改成「客户名称」。
146
+ ```
147
+
148
+ ```
149
+ 执行 mw04aul6-1ci6aa
150
+ ```
151
+
152
+ ```
153
+ 这个计划先取消。
154
+ ```
155
+
156
+ 写入的通用句式:**先说要改什么 → 确认「只出计划」→ 看过列表再说「执行 <planId>」**。
157
+ 把两句话合成一句时,agent 也会先生成计划、再弹确认卡片,不会直接写。
158
+
159
+ ## 业务数据
160
+
161
+ ```
162
+ contoso_systemconfiguration 里有多少条记录?按 contoso_containsecret 分组看看。
163
+ ```
164
+
165
+ ```
166
+ 取 5 条 contoso_systemconfiguration 看下样例,字段只要 contoso_key 和 contoso_value。
167
+ ```
168
+
169
+ ```
170
+ 帮我在 contoso_systemconfiguration 里补一条:contoso_key = FEATURE_X,contoso_value = 1。
171
+ ```
172
+
173
+ (最后一条需要 `data.write` 授权,会弹确认卡片。)
174
+
175
+ ## 运维
176
+
177
+ ```
178
+ .d365 现在占多大?哪些能清?
179
+ ```
180
+
181
+ ```
182
+ 把查询留证按策略清理一下,先预演,不要真删。
183
+ ```
184
+
185
+ ```
186
+ 快照压一下,太占地方了。
187
+ ```
188
+
189
+ ---
190
+
191
+ ## 说话的小技巧
192
+
193
+ | 想更准 | 这样说 |
194
+ | --- | --- |
195
+ | 限定环境 | 「在 SIT」「四个环境都看」 |
196
+ | 限定范围 | 「只要 contoso_ 开头的」「只看主表单」 |
197
+ | 要结论不要清单 | 「告诉我能不能删」「给我一句结论」 |
198
+ | 要证据 | 「列出具体是哪几张表单」 |
199
+ | 写入前 | 「先只出计划」「不要执行」 |
200
+ | 大范围操作 | 「先评估,别动环境」 |
201
+
202
+ 反过来,避免这些说法——它们会让 agent 猜:
203
+
204
+ - 「查一下元数据」(查哪类?哪个环境?)
205
+ - 「看看有没有问题」(什么问题?发布、引用、还是契约?)
206
+ - 「改一下这个字段」(改成什么?)
@@ -1,20 +1,20 @@
1
- {
2
- "waivers": [
3
- {
4
- "rule": "form-library-missing",
5
- "env": "sit",
6
- "object": "/_static/_common/scripts/CommandbarActions.js",
7
- "reason": "该环境不使用 SLA 对话框,缺这个库是预期的",
8
- "createdAt": "2026-11-04T00:00:00.000Z",
9
- "expiresAt": "2026-12-04T00:00:00.000Z"
10
- },
11
- {
12
- "rule": "plugin-step-missing",
13
- "env": "*",
14
- "object": "Contoso.Legacy.*",
15
- "reason": "旧版程序集只保留在 DEV,其余环境已由新方案替代",
16
- "createdAt": "2026-11-04T00:00:00.000Z",
17
- "expiresAt": "2027-02-01T00:00:00.000Z"
18
- }
19
- ]
20
- }
1
+ {
2
+ "waivers": [
3
+ {
4
+ "rule": "form-library-missing",
5
+ "env": "sit",
6
+ "object": "/_static/_common/scripts/CommandbarActions.js",
7
+ "reason": "该环境不使用 SLA 对话框,缺这个库是预期的",
8
+ "createdAt": "2026-11-04T00:00:00.000Z",
9
+ "expiresAt": "2026-12-04T00:00:00.000Z"
10
+ },
11
+ {
12
+ "rule": "plugin-step-missing",
13
+ "env": "*",
14
+ "object": "Contoso.Legacy.*",
15
+ "reason": "旧版程序集只保留在 DEV,其余环境已由新方案替代",
16
+ "createdAt": "2026-11-04T00:00:00.000Z",
17
+ "expiresAt": "2027-02-01T00:00:00.000Z"
18
+ }
19
+ ]
20
+ }
package/icon.svg CHANGED
@@ -1,6 +1,6 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
2
- <ellipse cx="12" cy="5.5" rx="7" ry="2.5" />
3
- <path d="M5 5.5v6c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-6" />
4
- <path d="M5 11.5v6c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-6" />
5
- <path d="M9 13.5l1.6 1.6L14 11.7" stroke-width="1.8" />
6
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
2
+ <ellipse cx="12" cy="5.5" rx="7" ry="2.5" />
3
+ <path d="M5 5.5v6c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-6" />
4
+ <path d="M5 11.5v6c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-6" />
5
+ <path d="M9 13.5l1.6 1.6L14 11.7" stroke-width="1.8" />
6
+ </svg>