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