@microi.net/cli 5.8.5 → 5.8.6

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 (211) 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/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/LICENSE +21 -21
  8. package/README.md +71 -71
  9. package/assets/build-meta.json +6 -6
  10. package/assets/feature-matrix.json +138 -138
  11. package/assets/logo.svg +4 -4
  12. package/cordis.patch.yml +1 -1
  13. package/package.json +1 -1
  14. package/scripts/codex-marketplace.json +20 -20
  15. package/scripts/mcp-codex-stdio-adapter.js +189 -189
  16. package/scripts/mcp-trae-windows-launcher.cmd +21 -21
  17. package/scripts/microi-cli-mcp.js +7 -7
  18. package/scripts/microi-cli.js +66 -65
  19. package/scripts/microi-codex-broker.js +450 -450
  20. package/scripts/microi-codex-router.js +618 -618
  21. package/scripts/microi-skills.meta.json +384 -384
  22. package/skills/.microi-skills-version.json +2 -2
  23. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  24. package/skills/README.md +287 -287
  25. package/skills/ai-engine/SKILL.md +269 -265
  26. package/skills/ai-engine/agents/openai.yaml +4 -4
  27. package/skills/ai-engine/references/ai-employees.md +48 -48
  28. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  29. package/skills/ai-platform-governance/SKILL.md +177 -177
  30. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  31. package/skills/app-store/SKILL.md +525 -525
  32. package/skills/app-store/agents/openai.yaml +4 -4
  33. package/skills/business-blueprint/SKILL.md +193 -193
  34. package/skills/datasource-engine/SKILL.md +93 -93
  35. package/skills/datasource-engine/agents/openai.yaml +4 -4
  36. package/skills/dos-orm/SKILL.md +97 -97
  37. package/skills/dos-orm/references/api-reference.md +229 -229
  38. package/skills/email-engine/SKILL.md +81 -81
  39. package/skills/email-engine/references/v8-email.md +34 -34
  40. package/skills/job-engine/SKILL.md +176 -176
  41. package/skills/job-engine/agents/openai.yaml +4 -4
  42. package/skills/message-notification/SKILL.md +156 -156
  43. package/skills/message-notification/agents/openai.yaml +5 -5
  44. package/skills/message-notification/references/contracts.md +102 -102
  45. package/skills/microi/SKILL.md +14 -14
  46. package/skills/microi-ai-app-auth.js +652 -652
  47. package/skills/microi-ai-application/SKILL.md +115 -115
  48. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  49. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  50. package/skills/microi-client-frontend/SKILL.md +244 -244
  51. 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
  52. 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
  53. 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
  54. package/skills/microi-codex/SKILL.md +102 -102
  55. package/skills/microi-codex-installer/SKILL.md +231 -231
  56. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  57. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  58. package/skills/microi-db-schema/SKILL.md +175 -175
  59. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  60. package/skills/microi-db-schema/references/core-tables.md +695 -695
  61. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  62. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  63. package/skills/microi-db-schema/references/schema.md +646 -646
  64. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  65. package/skills/microi-deployment/SKILL.md +221 -221
  66. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  67. package/skills/microi-docs-coverage/SKILL.md +133 -133
  68. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  69. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  70. package/skills/microi-form-engine/SKILL.md +333 -333
  71. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  72. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  73. package/skills/microi-form-layout/SKILL.md +205 -205
  74. 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
  75. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  76. 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
  77. package/skills/microi-left-right-layout/SKILL.md +141 -141
  78. package/skills/microi-microservice/SKILL.md +326 -324
  79. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  80. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  81. 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
  82. 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
  83. package/skills/microi-solution-quotation/SKILL.md +78 -78
  84. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  85. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  86. package/skills/microi-sso/SKILL.md +92 -92
  87. package/skills/microi-sso/references/acceptance.md +49 -49
  88. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  89. package/skills/microi-sso/references/inbound.md +53 -53
  90. package/skills/microi-sso/references/outbound.md +39 -39
  91. package/skills/microi-system-delivery/SKILL.md +137 -137
  92. 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
  93. 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
  94. package/skills/microi-ui/SKILL.md +192 -192
  95. 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
  96. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  97. 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
  98. 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
  99. package/skills/microi.v8.js +1921 -1921
  100. package/skills/module-engine/SKILL.md +255 -255
  101. package/skills/module-engine/references/module-config.md +204 -204
  102. package/skills/ocr-engine/SKILL.md +113 -113
  103. package/skills/ocr-engine/agents/openai.yaml +4 -4
  104. package/skills/page-engine/SKILL.md +206 -206
  105. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  106. 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
  107. 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
  108. package/skills/performance-testing/SKILL.md +221 -221
  109. package/skills/playwright-e2e/SKILL.md +196 -196
  110. 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
  111. 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
  112. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  113. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  114. package/skills/print-engine/SKILL.md +259 -259
  115. package/skills/production-readonly-audit/SKILL.md +41 -41
  116. package/skills/report-engine/SKILL.md +71 -71
  117. package/skills/report-engine/agents/openai.yaml +4 -4
  118. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  119. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  120. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  121. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  122. package/skills/search-engine/SKILL.md +75 -75
  123. package/skills/search-engine/agents/openai.yaml +4 -4
  124. package/skills/spider-engine/SKILL.md +190 -190
  125. package/skills/system-observability/SKILL.md +248 -248
  126. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  127. package/skills/translate-engine/SKILL.md +140 -140
  128. package/skills/translate-engine/agents/openai.yaml +4 -4
  129. package/skills/ui-design/SKILL.md +223 -223
  130. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  131. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  132. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  133. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  134. package/skills/ui-design/references/design-pattern-library.md +184 -184
  135. package/skills/ui-design/references/mci-design-contract.md +163 -163
  136. package/skills/ui-design/references/motion-and-media.md +78 -78
  137. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  138. 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
  139. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  140. 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
  141. 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
  142. 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
  143. 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
  144. 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
  145. 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
  146. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  147. package/skills/unity-integration/SKILL.md +171 -171
  148. package/skills/unity-integration/agents/openai.yaml +4 -4
  149. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  150. package/skills/unity-integration/references/sdk-api.md +82 -82
  151. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  152. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  153. package/skills/v8-api-config/SKILL.md +388 -388
  154. package/skills/v8-cache-pattern/SKILL.md +312 -312
  155. package/skills/v8-crud-api/SKILL.md +178 -178
  156. 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
  157. 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
  158. package/skills/v8-debugging/SKILL.md +284 -284
  159. package/skills/v8-explorer-tree/SKILL.md +228 -228
  160. package/skills/v8-export-import/SKILL.md +219 -219
  161. 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
  162. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  163. 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
  164. package/skills/v8-file-upload/SKILL.md +284 -284
  165. 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
  166. 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
  167. package/skills/v8-formengine-http/SKILL.md +238 -238
  168. package/skills/v8-frontend-events/SKILL.md +180 -180
  169. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  170. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  171. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  172. package/skills/v8-http-integration/SKILL.md +182 -182
  173. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  174. 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
  175. package/skills/v8-image-processing/SKILL.md +190 -190
  176. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  177. package/skills/v8-image-processing/references/api-reference.md +623 -623
  178. package/skills/v8-menu-buttons/SKILL.md +186 -186
  179. 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
  180. 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
  181. 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
  182. package/skills/v8-mongodb/SKILL.md +200 -200
  183. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  184. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  185. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  186. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  187. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  188. package/skills/v8-security/SKILL.md +210 -210
  189. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  190. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  191. package/skills/v8-sql-query/SKILL.md +302 -302
  192. package/skills/v8-table-event/SKILL.md +176 -176
  193. 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
  194. 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
  195. package/skills/v8-tcp-integration/SKILL.md +147 -147
  196. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  197. package/skills/v8-template-engine/SKILL.md +167 -167
  198. package/skills/v8-utilities/SKILL.md +104 -104
  199. package/skills/v8-utilities/references/client-api-index.md +143 -143
  200. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  201. package/skills/v8-utilities/references/server-api-index.md +188 -188
  202. package/skills/v8-workflow/SKILL.md +252 -252
  203. 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
  204. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  205. package/skills/vision-engine/SKILL.md +160 -160
  206. package/skills/vision-engine/agents/openai.yaml +4 -4
  207. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  208. package/skills/workspace-conventions/SKILL.md +273 -273
  209. 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
  210. 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
  211. 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 数据源。"