@microi.net/cli 5.8.5 → 5.8.7

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 (208) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/LICENSE +21 -21
  7. package/README.md +71 -71
  8. package/assets/build-meta.json +7 -7
  9. package/assets/feature-matrix.json +138 -138
  10. package/assets/logo.svg +4 -4
  11. package/cordis.patch.yml +1 -1
  12. package/package.json +1 -1
  13. package/scripts/mcp-codex-stdio-adapter.js +0 -0
  14. package/scripts/mcp-server.js +1 -1
  15. package/scripts/microi-cli.js +66 -65
  16. package/scripts/microi-codex-broker.js +450 -450
  17. package/scripts/microi-codex-router.js +618 -618
  18. package/scripts/microi-skills.meta.json +384 -384
  19. package/skills/.microi-skills-version.json +2 -2
  20. package/skills/.progressive-disclosure-manifest.json +21 -21
  21. package/skills/README.md +287 -287
  22. package/skills/ai-engine/SKILL.md +269 -265
  23. package/skills/ai-engine/agents/openai.yaml +4 -4
  24. package/skills/ai-engine/references/ai-employees.md +48 -48
  25. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  26. package/skills/ai-platform-governance/SKILL.md +177 -177
  27. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  28. package/skills/app-store/SKILL.md +525 -525
  29. package/skills/app-store/agents/openai.yaml +4 -4
  30. package/skills/business-blueprint/SKILL.md +193 -193
  31. package/skills/datasource-engine/SKILL.md +93 -93
  32. package/skills/datasource-engine/agents/openai.yaml +4 -4
  33. package/skills/dos-orm/SKILL.md +97 -95
  34. package/skills/dos-orm/references/api-reference.md +229 -229
  35. package/skills/email-engine/SKILL.md +81 -81
  36. package/skills/email-engine/references/v8-email.md +34 -34
  37. package/skills/job-engine/SKILL.md +176 -176
  38. package/skills/job-engine/agents/openai.yaml +4 -4
  39. package/skills/message-notification/SKILL.md +156 -156
  40. package/skills/message-notification/agents/openai.yaml +5 -5
  41. package/skills/message-notification/references/contracts.md +102 -102
  42. package/skills/microi/SKILL.md +14 -14
  43. package/skills/microi-ai-app-auth.js +652 -652
  44. package/skills/microi-ai-application/SKILL.md +115 -115
  45. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  46. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  47. package/skills/microi-client-frontend/SKILL.md +246 -244
  48. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
  49. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
  50. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
  51. package/skills/microi-codex/SKILL.md +102 -100
  52. package/skills/microi-codex-installer/SKILL.md +231 -231
  53. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  54. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  55. package/skills/microi-db-schema/SKILL.md +175 -175
  56. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  57. package/skills/microi-db-schema/references/core-tables.md +695 -695
  58. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  59. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  60. package/skills/microi-db-schema/references/schema.md +646 -646
  61. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  62. package/skills/microi-deployment/SKILL.md +222 -220
  63. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  64. package/skills/microi-docs-coverage/SKILL.md +133 -133
  65. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  66. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  67. package/skills/microi-form-engine/SKILL.md +333 -333
  68. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  69. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  70. package/skills/microi-form-layout/SKILL.md +205 -205
  71. package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
  72. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  73. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
  74. package/skills/microi-left-right-layout/SKILL.md +141 -141
  75. package/skills/microi-microservice/SKILL.md +328 -326
  76. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  77. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  78. package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
  79. package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
  80. package/skills/microi-solution-quotation/SKILL.md +78 -78
  81. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  82. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  83. package/skills/microi-sso/SKILL.md +96 -90
  84. package/skills/microi-sso/references/acceptance.md +49 -49
  85. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  86. package/skills/microi-sso/references/inbound.md +53 -53
  87. package/skills/microi-sso/references/outbound.md +39 -39
  88. package/skills/microi-system-delivery/SKILL.md +137 -137
  89. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
  90. package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
  91. package/skills/microi-ui/SKILL.md +192 -192
  92. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
  93. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  94. package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
  95. package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
  96. package/skills/microi.v8.js +1921 -1921
  97. package/skills/module-engine/SKILL.md +255 -255
  98. package/skills/module-engine/references/module-config.md +204 -204
  99. package/skills/ocr-engine/SKILL.md +113 -113
  100. package/skills/ocr-engine/agents/openai.yaml +4 -4
  101. package/skills/page-engine/SKILL.md +206 -206
  102. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  103. package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
  104. package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
  105. package/skills/performance-testing/SKILL.md +221 -221
  106. package/skills/playwright-e2e/SKILL.md +196 -196
  107. package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
  108. package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
  109. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  110. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  111. package/skills/print-engine/SKILL.md +259 -259
  112. package/skills/production-readonly-audit/SKILL.md +41 -41
  113. package/skills/report-engine/SKILL.md +71 -71
  114. package/skills/report-engine/agents/openai.yaml +4 -4
  115. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  116. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  117. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  118. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  119. package/skills/search-engine/SKILL.md +75 -75
  120. package/skills/search-engine/agents/openai.yaml +4 -4
  121. package/skills/spider-engine/SKILL.md +190 -190
  122. package/skills/system-observability/SKILL.md +249 -246
  123. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  124. package/skills/translate-engine/SKILL.md +140 -140
  125. package/skills/translate-engine/agents/openai.yaml +4 -4
  126. package/skills/ui-design/SKILL.md +223 -223
  127. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  128. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  129. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  130. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  131. package/skills/ui-design/references/design-pattern-library.md +184 -184
  132. package/skills/ui-design/references/mci-design-contract.md +163 -163
  133. package/skills/ui-design/references/motion-and-media.md +78 -78
  134. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  135. package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
  136. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  137. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
  138. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
  139. package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
  140. package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
  141. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
  142. package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
  143. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  144. package/skills/unity-integration/SKILL.md +171 -171
  145. package/skills/unity-integration/agents/openai.yaml +4 -4
  146. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  147. package/skills/unity-integration/references/sdk-api.md +82 -82
  148. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  149. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  150. package/skills/v8-api-config/SKILL.md +388 -388
  151. package/skills/v8-cache-pattern/SKILL.md +312 -312
  152. package/skills/v8-crud-api/SKILL.md +178 -178
  153. package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
  154. package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
  155. package/skills/v8-debugging/SKILL.md +284 -284
  156. package/skills/v8-explorer-tree/SKILL.md +228 -228
  157. package/skills/v8-export-import/SKILL.md +219 -219
  158. package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
  159. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  160. package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
  161. package/skills/v8-file-upload/SKILL.md +284 -284
  162. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
  163. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
  164. package/skills/v8-formengine-http/SKILL.md +238 -238
  165. package/skills/v8-frontend-events/SKILL.md +180 -180
  166. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  167. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  168. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  169. package/skills/v8-http-integration/SKILL.md +182 -182
  170. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  171. package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
  172. package/skills/v8-image-processing/SKILL.md +190 -190
  173. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  174. package/skills/v8-image-processing/references/api-reference.md +623 -623
  175. package/skills/v8-menu-buttons/SKILL.md +186 -186
  176. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
  177. package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
  178. package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
  179. package/skills/v8-mongodb/SKILL.md +200 -200
  180. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  181. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  182. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  183. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  184. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  185. package/skills/v8-security/SKILL.md +210 -210
  186. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  187. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  188. package/skills/v8-sql-query/SKILL.md +302 -302
  189. package/skills/v8-table-event/SKILL.md +176 -176
  190. package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
  191. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
  192. package/skills/v8-tcp-integration/SKILL.md +147 -147
  193. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  194. package/skills/v8-template-engine/SKILL.md +167 -167
  195. package/skills/v8-utilities/SKILL.md +104 -104
  196. package/skills/v8-utilities/references/client-api-index.md +143 -143
  197. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  198. package/skills/v8-utilities/references/server-api-index.md +188 -188
  199. package/skills/v8-workflow/SKILL.md +252 -252
  200. package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
  201. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  202. package/skills/vision-engine/SKILL.md +160 -160
  203. package/skills/vision-engine/agents/openai.yaml +4 -4
  204. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  205. package/skills/workspace-conventions/SKILL.md +273 -273
  206. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
  207. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
  208. package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
@@ -1,4 +1,4 @@
1
- interface:
2
- display_name: "应用商城"
3
- short_description: "开发、打包、安装、差异升级和验收可复用且保护客户配置的吾码应用"
4
- default_prompt: "使用 $app-store 设计、打包、安装或升级当前 Microi 应用。"
1
+ interface:
2
+ display_name: "应用商城"
3
+ short_description: "开发、打包、安装、差异升级和验收可复用且保护客户配置的吾码应用"
4
+ default_prompt: "使用 $app-store 设计、打包、安装或升级当前 Microi 应用。"
@@ -1,193 +1,193 @@
1
- ---
2
- name: business-blueprint
3
- description: Microi 业务架构蓝图(System Blueprint)— 设计期系统知识图谱,AI 生成低代码系统时防幻觉的唯一事实源
4
- ---
5
-
6
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
-
8
- # Microi 业务架构蓝图(System Blueprint)
9
-
10
- ## 这是什么
11
-
12
- 业务架构蓝图是 Microi 吾码的 **设计期系统总图**,不是 n8n / Dify / ComfyUI 那种运行时工作流。它一次同时承担三个职责:
13
-
14
- 1. **可视化总图** — 用户在前端 X6 画布拖拽节点,完整描述一个业务系统的组成
15
- 2. **AI 事实源** — AI 生成代码、表、接口引擎、菜单前必读的"宪法",防止幻觉
16
- 3. **VSCode/插件上下文** — 编辑器侧边栏据此提供精准的字段/接口/事件补全
17
-
18
- ## 三层模型(同一画布内分层)
19
-
20
- | 层 | 关注点 | 典型节点 shape |
21
- |---|---|---|
22
- | 领域层 Domain | ER:表、字段、外键 | `table`, `field`, `relation` |
23
- | 流程层 Process | 跨表业务流:单据流转、状态机、子流程 | `start`, `task`, `decision`, `subDiagram`, `end` |
24
- | 行为层 Behavior | V8 事件、接口引擎、菜单按钮、定时任务 | `engine`, `v8Event`, `menuBtn`, `job` |
25
-
26
- 每个节点通过 `refs` 字段反向指向平台真实资源(diy_table / sys_apiengine / sys_menu / V8 事件文件 ...)。
27
-
28
- ## 数据存储(system tables,已建好)
29
-
30
- | 表 | 作用 |
31
- |---|---|
32
- | `sys_business_blueprint` | 蓝图主表(BlueprintData JSON 存全图) |
33
- | `sys_blueprint_relation` | 反向引用索引(resource→blueprint,用于"这张表/接口被谁引用" + 漂移检测) |
34
- | `sys_blueprint_history` | 历史快照(diff/回滚) |
35
-
36
- ## MCP 工具
37
-
38
- | Tool | 用途 | 写入 |
39
- |---|---|---|
40
- | `microi_get_blueprint_schema` | 读取蓝图协议指南 | 否 |
41
- | `microi_list_blueprints` | 列出当前 OsClient 所有蓝图 | 否 |
42
- | `microi_get_blueprint` | 读取单个蓝图(含 BlueprintData) | 否 |
43
- | `microi_list_blueprint_history` | 分页读取不可变历史元数据与当前哈希 | 否 |
44
- | `microi_get_blueprint_history` | 读取指定历史快照 | 否 |
45
- | `microi_compare_blueprint_versions` | 结构化比较两个快照或历史与当前草稿 | 否 |
46
- | `microi_export_blueprint` | 导出 `microi.blueprint.v1` 设计包与稳定哈希 | 否 |
47
- | `microi_save_blueprint` | 创建或更新蓝图 + 自动写历史 + 重建反向索引 | 是(需 confirmExecution) |
48
- | `microi_rollback_blueprint` | 带 `ExpectedCurrentHash` 回滚并重建反向索引 | 是(需 confirmExecution) |
49
- | `microi_delete_blueprint` | 软删除蓝图 | 是 |
50
- | `microi_validate_blueprint` | 漂移检测:所有 refs 是否仍存在 | 否 |
51
-
52
- 保存前必须从详情或历史列表取得当前哈希,并把它作为蓝图对象的 `ExpectedCurrentHash`。哈希冲突时先比较版本再合并,不得移除并发保护强行覆盖。回滚会先保存回滚前快照,再在同一事务中恢复目标内容并重建反向索引;历史不会被删除。
53
-
54
- ## AI 工作流(强制约定)
55
-
56
- ### 场景 A:用户提需求让 AI 生成新系统
57
-
58
- ```
59
- 1. microi_list_blueprints # 看是否已有相关蓝图
60
- 2. microi_get_blueprint(id) # 有则读取作为上下文
61
- 3. microi_get_manifest_schema # 读 manifest 协议
62
- 4. microi_plan_system / generate_system
63
- 5. microi_get_table_indexes / microi_create_table_index
64
- # 按蓝图查询与业务不变量创建并回读索引
65
- 6. microi_save_blueprint # 同步写入/更新蓝图(含本次新增的表/引擎/菜单引用)
66
- 7. microi_validate_blueprint # 验收
67
- ```
68
-
69
- ### 场景 B:用户让 AI 修改某张表 / 加字段 / 改接口引擎
70
-
71
- ```
72
- 1. microi_list_blueprints + 文本搜索目标 table/engine 名
73
- 2. 命中蓝图 → microi_get_blueprint 读取
74
- 3. 根据蓝图理解上下文(这张表属于哪个业务流?哪些节点引用它?)
75
- 4. 执行修改(add_field / upsert_engine / save_event_code 等)
76
- 5. microi_validate_blueprint # 检查引用是否漂移
77
- 6. 若蓝图内容变化(如字段重命名)→ microi_save_blueprint 同步
78
- ```
79
-
80
- ### 场景 C:用户问"这张表是干什么的 / 哪个接口在用它"
81
-
82
- ```
83
- 1. microi_list_blueprints
84
- 2. 通过反向索引 sys_blueprint_relation 查 → 后端会自动用,AI 不直接读
85
- 实际操作:microi_get_blueprint 找节点 refs 包含该资源的节点
86
- 3. 把节点的 label / 所属 diagram / 上下游 edges 反馈给用户
87
- ```
88
-
89
- ## BlueprintData 协议(写入时关键)
90
-
91
- 参考 `microi_get_blueprint_schema` 工具返回。最小可用结构:
92
-
93
- ```json
94
- {
95
- "diagrams": [
96
- {
97
- "id": "diag_main",
98
- "type": "process",
99
- "name": "总流程",
100
- "nodes": [
101
- {
102
- "id": "n1",
103
- "shape": "task",
104
- "label": "客户建档",
105
- "x": 100, "y": 200,
106
- "refs": {
107
- "tables": ["crm_customer"],
108
- "engines": ["api_customer_create"],
109
- "v8Events": ["crm_customer:SubmitBeforeServerV8"]
110
- }
111
- }
112
- ],
113
- "edges": [
114
- { "source": "n1", "target": "n2", "label": "审核通过" }
115
- ]
116
- }
117
- ],
118
- "domainModel": {
119
- "entities": [
120
- { "table": "crm_customer", "x": 50, "y": 50,
121
- "relations": [{ "to": "crm_contact", "type": "1:N", "via": "CustomerId" }],
122
- "indexes": [
123
- { "name": "uk_crm_customer_osclient_code", "columns": ["OsClient", "Code"], "unique": true, "purpose": "租户内客户编码唯一" },
124
- { "name": "idx_crm_customer_osclient_status_createtime", "columns": ["OsClient", "Status", "CreateTime"], "unique": false, "purpose": "客户状态列表" }
125
- ] }
126
- ]
127
- },
128
- "menuTree": {
129
- "requiredDepth": 2,
130
- "groups": [
131
- { "name": "客户中心", "children": ["客户管理", "联系人管理"] },
132
- { "name": "业务运营", "children": ["工单管理", "服务记录"] },
133
- { "name": "报表中心", "children": ["检测报告", "阅读日志"] }
134
- ]
135
- }
136
- }
137
- ```
138
-
139
- `refs` 内可填的资源类型:`tables` `fields`("table.field")`engines` `menus` `v8Events`("table:eventType")`dataSources` `printTemplates` `workflows` `pages` `jobs`。
140
-
141
- 领域层每张实体表还必须描述真实查询需要的 `indexes`(名称、有序字段、唯一性、用途)。关系的 `via` 外键、租户内业务唯一键、幂等键、待办/重试扫描字段都必须评估索引。蓝图或需求一旦明确索引,生成 Manifest 时不得遗漏 `tables[].indexes`,落地必须调用 `microi_create_table_index` 并以 `microi_get_table_indexes` 回读;禁止在 V8 中手写 DDL。
142
-
143
- ### 关系基数先于表单控件(强制)
144
-
145
- - 每条领域关系必须先写清 `1:1`、`N:1` 或 `1:N`,再决定控件。自然语言中的“子表、
146
- 明细、清单、条目、行项目、多个记录”默认按 `1:N` 建模,除非用户明确说明只关联一条。
147
- - `1:N` 的 `via` 必须是**子表上的真实外键**,例如
148
- `order -> order_detail, type: 1:N, via: OrderId`;Manifest 同时生成子表外键、
149
- `(OsClient, OrderId)` 回查索引、隐藏子菜单和主表 `TableChild` 控件。
150
- - `JoinForm` 只映射“主表保存一个目标 Id,并内嵌一条独立目标记录”的 `N:1`/`1:1`
151
- 关系。禁止把 `1:N` 蓝图映射为 `JoinForm`,禁止让 `JoinForm` 指向当前表。
152
- - 如果蓝图写了 `1:N`,而 Manifest 只有主表 `XxxId`/`JoinForm`,或缺少子表 `via`
153
- 外键、子菜单、回查索引,蓝图检查必须失败,不能进入 `dryRun:false`。
154
- - 基数仍有歧义时,在任何 MCP 写入前询问用户;不得为了避免询问而选择 `JoinForm`。
155
-
156
- 后台菜单必须在蓝图阶段规划为至少两级结构。客户、设备、工单、报告、日志、配置等业务域应先形成父级菜单,再把具体 CRUD/报表/日志页面作为子菜单写入 Manifest/MCP;不要把所有模块平铺为一级菜单。
157
-
158
- 如果是改造已生成系统,蓝图不能停留在建议层。必须列出现有一级菜单、目标父级菜单、每个子菜单的 `ParentId` 迁移关系,并通过 MCP 回读 `sys_menu` 验证迁移完成。
159
-
160
- ## 角色与权限蓝图
161
-
162
- 从自然语言需求生成 Microi 业务系统时,必须把角色、菜单权限、移动端能力和数据范围写进蓝图,而不是只建表和菜单。
163
-
164
- 要求:
165
-
166
- - 内部账号默认使用 `sys_user`,角色来源为 `sys_user.RoleIds` 关联 `sys_role`。移动端和接口引擎都应按 `RoleIds` / `V8.CurrentUser` 判断能力。
167
- - 蓝图中至少列出角色矩阵:角色名、使用端、后台菜单范围、移动端可见页面、关键动作、数据范围。常见角色如超级管理员、客服、售后师傅、客户账号。
168
- - 多角色账号按能力并集处理;只有服务端已确认的超级管理员(`Level>=9999`)默认拥有全部内部能力。前端角色名、“超级管理员”文案和 `_IsAdmin` 只能控制展示,不能代替后端授权。
169
- - 客户账号不能简单获得后台客户、工单、报告全量菜单。客户侧数据应通过客户手机号登录 token、客户绑定表和接口行级过滤提供。
170
- - 菜单权限使用 `sys_rolelimit` 控制入口;接口引擎仍要做业务级权限和行级数据过滤,不能只依赖菜单是否可见。
171
- - Manifest/MCP 交付后必须回读 `sys_role`、`sys_menu`、`sys_rolelimit`,验证角色存在、菜单授权正确。
172
- - 如果 MCP 的通用角色写入工具因 `UpdateTime cannot be null` 等系统字段问题失败,要记录工具缺口并使用平台修复后的专用角色工具。临时迁移可用一次性接口引擎和参数化 `V8.Db` 补建角色,但必须回读验证,且不要把临时接口作为长期业务接口。
173
-
174
- 角色矩阵示例:
175
-
176
- | 角色 | 后台菜单 | 移动端能力 | 数据范围 |
177
- |---|---|---|---|
178
- | 售后师傅 | 维保运营、工单、维保记录、检测报告 | 查看工单、接单、到场、提交记录、生成报告 | 分配给自己或待接单工单 |
179
- | 客服 | 客户中心、维保运营、客户报修、报告中心、资讯 | 查看客户与报修、调度工单、查看报告 | 公司内部客户服务数据 |
180
- | 客户账号 | 默认无后台菜单 | 查看绑定客户的计划、记录、报告,提交报修 | 仅绑定客户 |
181
-
182
- ## 不要做的事
183
-
184
- - ❌ 不要把蓝图当成运行时执行器(它不会自动跑接口、不会调度任务)
185
- - ❌ 不要在审批工作流(jsPlumb / wf_flowdesign)里用蓝图替代 — 两者并存,蓝图是设计图,工作流是执行图
186
- - ❌ 不要跳过 `microi_get_blueprint` 直接生成代码 — 会产生幻觉(编造字段名、引用不存在的引擎)
187
- - ❌ 写入 BlueprintData 必须是合法 JSON 字符串(后端会用 JObject.Parse 校验)
188
-
189
- ## 边界
190
-
191
- - 蓝图 SaaS 隔离:`sys_business_blueprint.OsClient` + `sys_blueprint_relation.OsClient` 联合索引,不会跨租户
192
- - 多人协作:当前 v1 用最后写入覆盖;后续 v2 计划加 `LockedBy/LockedAt` + diff 合并
193
- - 历史快照:每次 SaveBlueprint 都自动落 `sys_blueprint_history`,可通过 BlueprintId 时序回溯
1
+ ---
2
+ name: business-blueprint
3
+ description: Microi 业务架构蓝图(System Blueprint)— 设计期系统知识图谱,AI 生成低代码系统时防幻觉的唯一事实源
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # Microi 业务架构蓝图(System Blueprint)
9
+
10
+ ## 这是什么
11
+
12
+ 业务架构蓝图是 Microi 吾码的 **设计期系统总图**,不是 n8n / Dify / ComfyUI 那种运行时工作流。它一次同时承担三个职责:
13
+
14
+ 1. **可视化总图** — 用户在前端 X6 画布拖拽节点,完整描述一个业务系统的组成
15
+ 2. **AI 事实源** — AI 生成代码、表、接口引擎、菜单前必读的"宪法",防止幻觉
16
+ 3. **VSCode/插件上下文** — 编辑器侧边栏据此提供精准的字段/接口/事件补全
17
+
18
+ ## 三层模型(同一画布内分层)
19
+
20
+ | 层 | 关注点 | 典型节点 shape |
21
+ |---|---|---|
22
+ | 领域层 Domain | ER:表、字段、外键 | `table`, `field`, `relation` |
23
+ | 流程层 Process | 跨表业务流:单据流转、状态机、子流程 | `start`, `task`, `decision`, `subDiagram`, `end` |
24
+ | 行为层 Behavior | V8 事件、接口引擎、菜单按钮、定时任务 | `engine`, `v8Event`, `menuBtn`, `job` |
25
+
26
+ 每个节点通过 `refs` 字段反向指向平台真实资源(diy_table / sys_apiengine / sys_menu / V8 事件文件 ...)。
27
+
28
+ ## 数据存储(system tables,已建好)
29
+
30
+ | 表 | 作用 |
31
+ |---|---|
32
+ | `sys_business_blueprint` | 蓝图主表(BlueprintData JSON 存全图) |
33
+ | `sys_blueprint_relation` | 反向引用索引(resource→blueprint,用于"这张表/接口被谁引用" + 漂移检测) |
34
+ | `sys_blueprint_history` | 历史快照(diff/回滚) |
35
+
36
+ ## MCP 工具
37
+
38
+ | Tool | 用途 | 写入 |
39
+ |---|---|---|
40
+ | `microi_get_blueprint_schema` | 读取蓝图协议指南 | 否 |
41
+ | `microi_list_blueprints` | 列出当前 OsClient 所有蓝图 | 否 |
42
+ | `microi_get_blueprint` | 读取单个蓝图(含 BlueprintData) | 否 |
43
+ | `microi_list_blueprint_history` | 分页读取不可变历史元数据与当前哈希 | 否 |
44
+ | `microi_get_blueprint_history` | 读取指定历史快照 | 否 |
45
+ | `microi_compare_blueprint_versions` | 结构化比较两个快照或历史与当前草稿 | 否 |
46
+ | `microi_export_blueprint` | 导出 `microi.blueprint.v1` 设计包与稳定哈希 | 否 |
47
+ | `microi_save_blueprint` | 创建或更新蓝图 + 自动写历史 + 重建反向索引 | 是(需 confirmExecution) |
48
+ | `microi_rollback_blueprint` | 带 `ExpectedCurrentHash` 回滚并重建反向索引 | 是(需 confirmExecution) |
49
+ | `microi_delete_blueprint` | 软删除蓝图 | 是 |
50
+ | `microi_validate_blueprint` | 漂移检测:所有 refs 是否仍存在 | 否 |
51
+
52
+ 保存前必须从详情或历史列表取得当前哈希,并把它作为蓝图对象的 `ExpectedCurrentHash`。哈希冲突时先比较版本再合并,不得移除并发保护强行覆盖。回滚会先保存回滚前快照,再在同一事务中恢复目标内容并重建反向索引;历史不会被删除。
53
+
54
+ ## AI 工作流(强制约定)
55
+
56
+ ### 场景 A:用户提需求让 AI 生成新系统
57
+
58
+ ```
59
+ 1. microi_list_blueprints # 看是否已有相关蓝图
60
+ 2. microi_get_blueprint(id) # 有则读取作为上下文
61
+ 3. microi_get_manifest_schema # 读 manifest 协议
62
+ 4. microi_plan_system / generate_system
63
+ 5. microi_get_table_indexes / microi_create_table_index
64
+ # 按蓝图查询与业务不变量创建并回读索引
65
+ 6. microi_save_blueprint # 同步写入/更新蓝图(含本次新增的表/引擎/菜单引用)
66
+ 7. microi_validate_blueprint # 验收
67
+ ```
68
+
69
+ ### 场景 B:用户让 AI 修改某张表 / 加字段 / 改接口引擎
70
+
71
+ ```
72
+ 1. microi_list_blueprints + 文本搜索目标 table/engine 名
73
+ 2. 命中蓝图 → microi_get_blueprint 读取
74
+ 3. 根据蓝图理解上下文(这张表属于哪个业务流?哪些节点引用它?)
75
+ 4. 执行修改(add_field / upsert_engine / save_event_code 等)
76
+ 5. microi_validate_blueprint # 检查引用是否漂移
77
+ 6. 若蓝图内容变化(如字段重命名)→ microi_save_blueprint 同步
78
+ ```
79
+
80
+ ### 场景 C:用户问"这张表是干什么的 / 哪个接口在用它"
81
+
82
+ ```
83
+ 1. microi_list_blueprints
84
+ 2. 通过反向索引 sys_blueprint_relation 查 → 后端会自动用,AI 不直接读
85
+ 实际操作:microi_get_blueprint 找节点 refs 包含该资源的节点
86
+ 3. 把节点的 label / 所属 diagram / 上下游 edges 反馈给用户
87
+ ```
88
+
89
+ ## BlueprintData 协议(写入时关键)
90
+
91
+ 参考 `microi_get_blueprint_schema` 工具返回。最小可用结构:
92
+
93
+ ```json
94
+ {
95
+ "diagrams": [
96
+ {
97
+ "id": "diag_main",
98
+ "type": "process",
99
+ "name": "总流程",
100
+ "nodes": [
101
+ {
102
+ "id": "n1",
103
+ "shape": "task",
104
+ "label": "客户建档",
105
+ "x": 100, "y": 200,
106
+ "refs": {
107
+ "tables": ["crm_customer"],
108
+ "engines": ["api_customer_create"],
109
+ "v8Events": ["crm_customer:SubmitBeforeServerV8"]
110
+ }
111
+ }
112
+ ],
113
+ "edges": [
114
+ { "source": "n1", "target": "n2", "label": "审核通过" }
115
+ ]
116
+ }
117
+ ],
118
+ "domainModel": {
119
+ "entities": [
120
+ { "table": "crm_customer", "x": 50, "y": 50,
121
+ "relations": [{ "to": "crm_contact", "type": "1:N", "via": "CustomerId" }],
122
+ "indexes": [
123
+ { "name": "uk_crm_customer_osclient_code", "columns": ["OsClient", "Code"], "unique": true, "purpose": "租户内客户编码唯一" },
124
+ { "name": "idx_crm_customer_osclient_status_createtime", "columns": ["OsClient", "Status", "CreateTime"], "unique": false, "purpose": "客户状态列表" }
125
+ ] }
126
+ ]
127
+ },
128
+ "menuTree": {
129
+ "requiredDepth": 2,
130
+ "groups": [
131
+ { "name": "客户中心", "children": ["客户管理", "联系人管理"] },
132
+ { "name": "业务运营", "children": ["工单管理", "服务记录"] },
133
+ { "name": "报表中心", "children": ["检测报告", "阅读日志"] }
134
+ ]
135
+ }
136
+ }
137
+ ```
138
+
139
+ `refs` 内可填的资源类型:`tables` `fields`("table.field")`engines` `menus` `v8Events`("table:eventType")`dataSources` `printTemplates` `workflows` `pages` `jobs`。
140
+
141
+ 领域层每张实体表还必须描述真实查询需要的 `indexes`(名称、有序字段、唯一性、用途)。关系的 `via` 外键、租户内业务唯一键、幂等键、待办/重试扫描字段都必须评估索引。蓝图或需求一旦明确索引,生成 Manifest 时不得遗漏 `tables[].indexes`,落地必须调用 `microi_create_table_index` 并以 `microi_get_table_indexes` 回读;禁止在 V8 中手写 DDL。
142
+
143
+ ### 关系基数先于表单控件(强制)
144
+
145
+ - 每条领域关系必须先写清 `1:1`、`N:1` 或 `1:N`,再决定控件。自然语言中的“子表、
146
+ 明细、清单、条目、行项目、多个记录”默认按 `1:N` 建模,除非用户明确说明只关联一条。
147
+ - `1:N` 的 `via` 必须是**子表上的真实外键**,例如
148
+ `order -> order_detail, type: 1:N, via: OrderId`;Manifest 同时生成子表外键、
149
+ `(OsClient, OrderId)` 回查索引、隐藏子菜单和主表 `TableChild` 控件。
150
+ - `JoinForm` 只映射“主表保存一个目标 Id,并内嵌一条独立目标记录”的 `N:1`/`1:1`
151
+ 关系。禁止把 `1:N` 蓝图映射为 `JoinForm`,禁止让 `JoinForm` 指向当前表。
152
+ - 如果蓝图写了 `1:N`,而 Manifest 只有主表 `XxxId`/`JoinForm`,或缺少子表 `via`
153
+ 外键、子菜单、回查索引,蓝图检查必须失败,不能进入 `dryRun:false`。
154
+ - 基数仍有歧义时,在任何 MCP 写入前询问用户;不得为了避免询问而选择 `JoinForm`。
155
+
156
+ 后台菜单必须在蓝图阶段规划为至少两级结构。客户、设备、工单、报告、日志、配置等业务域应先形成父级菜单,再把具体 CRUD/报表/日志页面作为子菜单写入 Manifest/MCP;不要把所有模块平铺为一级菜单。
157
+
158
+ 如果是改造已生成系统,蓝图不能停留在建议层。必须列出现有一级菜单、目标父级菜单、每个子菜单的 `ParentId` 迁移关系,并通过 MCP 回读 `sys_menu` 验证迁移完成。
159
+
160
+ ## 角色与权限蓝图
161
+
162
+ 从自然语言需求生成 Microi 业务系统时,必须把角色、菜单权限、移动端能力和数据范围写进蓝图,而不是只建表和菜单。
163
+
164
+ 要求:
165
+
166
+ - 内部账号默认使用 `sys_user`,角色来源为 `sys_user.RoleIds` 关联 `sys_role`。移动端和接口引擎都应按 `RoleIds` / `V8.CurrentUser` 判断能力。
167
+ - 蓝图中至少列出角色矩阵:角色名、使用端、后台菜单范围、移动端可见页面、关键动作、数据范围。常见角色如超级管理员、客服、售后师傅、客户账号。
168
+ - 多角色账号按能力并集处理;只有服务端已确认的超级管理员(`Level>=9999`)默认拥有全部内部能力。前端角色名、“超级管理员”文案和 `_IsAdmin` 只能控制展示,不能代替后端授权。
169
+ - 客户账号不能简单获得后台客户、工单、报告全量菜单。客户侧数据应通过客户手机号登录 token、客户绑定表和接口行级过滤提供。
170
+ - 菜单权限使用 `sys_rolelimit` 控制入口;接口引擎仍要做业务级权限和行级数据过滤,不能只依赖菜单是否可见。
171
+ - Manifest/MCP 交付后必须回读 `sys_role`、`sys_menu`、`sys_rolelimit`,验证角色存在、菜单授权正确。
172
+ - 如果 MCP 的通用角色写入工具因 `UpdateTime cannot be null` 等系统字段问题失败,要记录工具缺口并使用平台修复后的专用角色工具。临时迁移可用一次性接口引擎和参数化 `V8.Db` 补建角色,但必须回读验证,且不要把临时接口作为长期业务接口。
173
+
174
+ 角色矩阵示例:
175
+
176
+ | 角色 | 后台菜单 | 移动端能力 | 数据范围 |
177
+ |---|---|---|---|
178
+ | 售后师傅 | 维保运营、工单、维保记录、检测报告 | 查看工单、接单、到场、提交记录、生成报告 | 分配给自己或待接单工单 |
179
+ | 客服 | 客户中心、维保运营、客户报修、报告中心、资讯 | 查看客户与报修、调度工单、查看报告 | 公司内部客户服务数据 |
180
+ | 客户账号 | 默认无后台菜单 | 查看绑定客户的计划、记录、报告,提交报修 | 仅绑定客户 |
181
+
182
+ ## 不要做的事
183
+
184
+ - ❌ 不要把蓝图当成运行时执行器(它不会自动跑接口、不会调度任务)
185
+ - ❌ 不要在审批工作流(jsPlumb / wf_flowdesign)里用蓝图替代 — 两者并存,蓝图是设计图,工作流是执行图
186
+ - ❌ 不要跳过 `microi_get_blueprint` 直接生成代码 — 会产生幻觉(编造字段名、引用不存在的引擎)
187
+ - ❌ 写入 BlueprintData 必须是合法 JSON 字符串(后端会用 JObject.Parse 校验)
188
+
189
+ ## 边界
190
+
191
+ - 蓝图 SaaS 隔离:`sys_business_blueprint.OsClient` + `sys_blueprint_relation.OsClient` 联合索引,不会跨租户
192
+ - 多人协作:当前 v1 用最后写入覆盖;后续 v2 计划加 `LockedBy/LockedAt` + diff 合并
193
+ - 历史快照:每次 SaveBlueprint 都自动落 `sys_blueprint_history`,可通过 BlueprintId 时序回溯
@@ -1,93 +1,93 @@
1
- ---
2
- name: datasource-engine
3
- description: Microi 数据源引擎设计、调用与安全规范。用于配置 sys_datasource 的 SQL、V8、JSON 数据源,为表单选项、报表、接口或远程搜索供数,以及通过前后端 V8.DataSourceEngine.Run 调用和验收。
4
- ---
5
-
6
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
-
8
- # Microi 数据源引擎
9
-
10
- ## 适用边界
11
-
12
- 数据源引擎适合复用“只读或计算型数据获取”,支持 `SQL`、`V8`、`JSON`。需要跨表事务、状态推进、扣减库存或外部副作用时应创建接口引擎,不要把数据源当业务命令。
13
-
14
- 数据源定义保存在 `sys_datasource`,属于平台控制面:创建、修改、删除、匿名开关和角色配置只允许 `Level >= 9999` 的可信管理链路。普通角色只能调用已经授权的数据源。
15
-
16
- 兼容 HTTP 入口为 `POST /api/DataSourceEngine/GetData` 与 `POST /api/DataSourceEngine/Run`;新代码优先使用前后端类型化的 `V8.DataSourceEngine.Run/RunAsync`,兼容路由仍必须执行当前租户、角色和数据源权限校验。
17
-
18
- ## 标准调用
19
-
20
- 前端 V8:
21
-
22
- ```js
23
- var result = await V8.DataSourceEngine.Run('product_options', {
24
- Keyword: V8.Form.Keyword || ''
25
- });
26
- if (result.Code !== 1) V8.Tips(result.Msg || '加载数据失败', false);
27
- ```
28
-
29
- 后端 V8:
30
-
31
- ```js
32
- var result = await V8.DataSourceEngine.RunAsync({
33
- DataSourceKey: 'product_options',
34
- Keyword: V8.Param.Keyword || ''
35
- });
36
- return result;
37
- ```
38
-
39
- 兼容代码可以使用 callback;新代码优先 `await`。`DataSourceKey` 也兼容数据源 Id,但发布配置应使用稳定、可读且租户内唯一的 Key。
40
-
41
- ## SQL 数据源
42
-
43
- - 动态值必须参数化;禁止拼接用户输入、Token、排序字段或原始 `_Where`。
44
- - 默认仅查询当前租户数据库,查询中必须保留 `OsClient` 隔离;扩展库由可信配置引用,不能让客户端传连接串。
45
- - 只选择需要的列并设置结果上限。下拉远程搜索必须分页,不能一次返回整张大表。
46
- - `$CurrentUser.*$` 等平台替换变量只能用于服务端已验证的当前用户,不能把客户端对象当身份。
47
- - 菜单数据范围不是任意数据源 SQL 的自动授权。涉及客户、订单、合同等受限数据时,应在 SQL/V8 中显式应用当前用户范围,或改为受菜单授权的 FormEngine/接口引擎。
48
- - 第三方数据库结构先通过 `microi_inspect_external_database` 发现;数据源只引用已保存的可信 DbKey,不能把浏览器或普通调用者传入的连接字符串交给 `V8.Dbs.Open`。
49
-
50
- ## V8 与 JSON 数据源
51
-
52
- - V8 数据源按接口引擎安全标准处理:校验参数、限制返回字段、避免泄露堆栈和密钥。
53
- - JSON 数据源只存非敏感静态枚举。密钥、连接串和 Token 不得放入 JSON 或返回给浏览器。
54
- - 数据源 V8 在 `V8TenantContext` 中只能使用当前租户。普通租户伪造 `OsClient` 不会获得跨租户权限。
55
- - 匿名数据源必须是无身份、无敏感数据、有限结果且可限流的公开能力;不能因为“只读”就默认匿名。
56
-
57
- ## 表单字段配置
58
-
59
- 选择类字段使用数据源引擎时,至少配置:
60
-
61
- ```json
62
- {
63
- "DataSource": "DataSource",
64
- "DataSourceId": "product_options",
65
- "SelectLabel": "Name",
66
- "SelectSaveField": "Id",
67
- "DataSourceSqlRemote": true
68
- }
69
- ```
70
-
71
- 保存后回读 `diy_field.Component/Data/Config`,刷新字段/菜单缓存,再从真实表单验证显示值、保存值、搜索、清空和权限。
72
-
73
- ## MCP 工作流
74
-
75
- 1. `microi_get_db_schema` 读取 `sys_datasource`、目标表和菜单关系。
76
- 2. 使用 `microi_save_data_source` 保存;写入必须有用户确认。
77
- 3. 回读数据源定义,确认 Key、类型、匿名、角色和代码/SQL。
78
- 4. 用普通角色、无权限角色和管理员分别调用。
79
- 5. 对 SQL 注入、超大分页、跨租户 `OsClient` 和匿名访问做负向测试。
80
-
81
- ## 缓存与分布式
82
-
83
- 结果缓存 Key 至少包含 `OsClient + DataSourceKey + 权限主体/角色版本 + 参数哈希`。权限相关结果不能只按数据源 Key 缓存。缓存是优化,不是授权事实源;配置更新后使用共享版本或发布订阅让所有节点失效,不能依赖单机静态字典。
84
-
85
- ## 验收清单
86
-
87
- - [ ] 普通用户不能维护 `sys_datasource`
88
- - [ ] 调用只在当前租户执行,伪造 `OsClient` 失败
89
- - [ ] SQL 参数化、有列清单、分页和上限
90
- - [ ] 敏感数据应用真实业务权限/数据范围
91
- - [ ] 匿名、角色和错误响应不泄露内部配置
92
- - [ ] 字段显示值与保存值真实回读通过
93
- - [ ] 多节点配置更新后无需逐节点重启
1
+ ---
2
+ name: datasource-engine
3
+ description: Microi 数据源引擎设计、调用与安全规范。用于配置 sys_datasource 的 SQL、V8、JSON 数据源,为表单选项、报表、接口或远程搜索供数,以及通过前后端 V8.DataSourceEngine.Run 调用和验收。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # Microi 数据源引擎
9
+
10
+ ## 适用边界
11
+
12
+ 数据源引擎适合复用“只读或计算型数据获取”,支持 `SQL`、`V8`、`JSON`。需要跨表事务、状态推进、扣减库存或外部副作用时应创建接口引擎,不要把数据源当业务命令。
13
+
14
+ 数据源定义保存在 `sys_datasource`,属于平台控制面:创建、修改、删除、匿名开关和角色配置只允许 `Level >= 9999` 的可信管理链路。普通角色只能调用已经授权的数据源。
15
+
16
+ 兼容 HTTP 入口为 `POST /api/DataSourceEngine/GetData` 与 `POST /api/DataSourceEngine/Run`;新代码优先使用前后端类型化的 `V8.DataSourceEngine.Run/RunAsync`,兼容路由仍必须执行当前租户、角色和数据源权限校验。
17
+
18
+ ## 标准调用
19
+
20
+ 前端 V8:
21
+
22
+ ```js
23
+ var result = await V8.DataSourceEngine.Run('product_options', {
24
+ Keyword: V8.Form.Keyword || ''
25
+ });
26
+ if (result.Code !== 1) V8.Tips(result.Msg || '加载数据失败', false);
27
+ ```
28
+
29
+ 后端 V8:
30
+
31
+ ```js
32
+ var result = await V8.DataSourceEngine.RunAsync({
33
+ DataSourceKey: 'product_options',
34
+ Keyword: V8.Param.Keyword || ''
35
+ });
36
+ return result;
37
+ ```
38
+
39
+ 兼容代码可以使用 callback;新代码优先 `await`。`DataSourceKey` 也兼容数据源 Id,但发布配置应使用稳定、可读且租户内唯一的 Key。
40
+
41
+ ## SQL 数据源
42
+
43
+ - 动态值必须参数化;禁止拼接用户输入、Token、排序字段或原始 `_Where`。
44
+ - 默认仅查询当前租户数据库,查询中必须保留 `OsClient` 隔离;扩展库由可信配置引用,不能让客户端传连接串。
45
+ - 只选择需要的列并设置结果上限。下拉远程搜索必须分页,不能一次返回整张大表。
46
+ - `$CurrentUser.*$` 等平台替换变量只能用于服务端已验证的当前用户,不能把客户端对象当身份。
47
+ - 菜单数据范围不是任意数据源 SQL 的自动授权。涉及客户、订单、合同等受限数据时,应在 SQL/V8 中显式应用当前用户范围,或改为受菜单授权的 FormEngine/接口引擎。
48
+ - 第三方数据库结构先通过 `microi_inspect_external_database` 发现;数据源只引用已保存的可信 DbKey,不能把浏览器或普通调用者传入的连接字符串交给 `V8.Dbs.Open`。
49
+
50
+ ## V8 与 JSON 数据源
51
+
52
+ - V8 数据源按接口引擎安全标准处理:校验参数、限制返回字段、避免泄露堆栈和密钥。
53
+ - JSON 数据源只存非敏感静态枚举。密钥、连接串和 Token 不得放入 JSON 或返回给浏览器。
54
+ - 数据源 V8 在 `V8TenantContext` 中只能使用当前租户。普通租户伪造 `OsClient` 不会获得跨租户权限。
55
+ - 匿名数据源必须是无身份、无敏感数据、有限结果且可限流的公开能力;不能因为“只读”就默认匿名。
56
+
57
+ ## 表单字段配置
58
+
59
+ 选择类字段使用数据源引擎时,至少配置:
60
+
61
+ ```json
62
+ {
63
+ "DataSource": "DataSource",
64
+ "DataSourceId": "product_options",
65
+ "SelectLabel": "Name",
66
+ "SelectSaveField": "Id",
67
+ "DataSourceSqlRemote": true
68
+ }
69
+ ```
70
+
71
+ 保存后回读 `diy_field.Component/Data/Config`,刷新字段/菜单缓存,再从真实表单验证显示值、保存值、搜索、清空和权限。
72
+
73
+ ## MCP 工作流
74
+
75
+ 1. `microi_get_db_schema` 读取 `sys_datasource`、目标表和菜单关系。
76
+ 2. 使用 `microi_save_data_source` 保存;写入必须有用户确认。
77
+ 3. 回读数据源定义,确认 Key、类型、匿名、角色和代码/SQL。
78
+ 4. 用普通角色、无权限角色和管理员分别调用。
79
+ 5. 对 SQL 注入、超大分页、跨租户 `OsClient` 和匿名访问做负向测试。
80
+
81
+ ## 缓存与分布式
82
+
83
+ 结果缓存 Key 至少包含 `OsClient + DataSourceKey + 权限主体/角色版本 + 参数哈希`。权限相关结果不能只按数据源 Key 缓存。缓存是优化,不是授权事实源;配置更新后使用共享版本或发布订阅让所有节点失效,不能依赖单机静态字典。
84
+
85
+ ## 验收清单
86
+
87
+ - [ ] 普通用户不能维护 `sys_datasource`
88
+ - [ ] 调用只在当前租户执行,伪造 `OsClient` 失败
89
+ - [ ] SQL 参数化、有列清单、分页和上限
90
+ - [ ] 敏感数据应用真实业务权限/数据范围
91
+ - [ ] 匿名、角色和错误响应不泄露内部配置
92
+ - [ ] 字段显示值与保存值真实回读通过
93
+ - [ ] 多节点配置更新后无需逐节点重启
@@ -1,4 +1,4 @@
1
- interface:
2
- display_name: "数据源引擎"
3
- short_description: "配置和调用数据源引擎,落实租户、参数、权限、缓存与结果安全"
4
- default_prompt: "使用 $datasource-engine 设计并验收当前 Microi 数据源。"
1
+ interface:
2
+ display_name: "数据源引擎"
3
+ short_description: "配置和调用数据源引擎,落实租户、参数、权限、缓存与结果安全"
4
+ default_prompt: "使用 $datasource-engine 设计并验收当前 Microi 数据源。"