@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,122 +1,122 @@
1
- ---
2
- name: microi-datasource-mapping
3
- description: Microi 选项类字段的数据源 Key/Value 映射规范。用于 Select、Radio、Checkbox、UniApp 枚举显示、KeyValue 配置、数据迁移和接口返回标签映射。
4
- ---
5
-
6
- > **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
7
-
8
- # microi-datasource-mapping — 数据源 Key/Value 映射规范
9
-
10
- ## 一、后台字段数据源的两种模式
11
-
12
- Microi 低代码平台中,`Select / Radio / Checkbox` 等选项组件支持两种数据源配置方式:
13
-
14
- | 模式 | 格式 | DB 存储值 | 前端显示值 | 示例 |
15
- |------|------|-----------|-----------|------|
16
- | **Key ≠ Value**(推荐) | `"key1\|label1,key2\|label2"` | key (如 `"VIP"`) | label (如 `"VIP会员"`) | `"VIP\|VIP会员,普通会员\|普通会员"` |
17
- | **Key = Value**(简单) | `"值1,值2,值3"` | 原始值 (如 `"普通会员"`) | 原始值 (如 `"普通会员"`) | `"普通会员,VIP"` |
18
-
19
- > ⚠️ 注意:若误将 Key 与 Value 设置为相同中文,后台和 DB 中存的就是中文字符串(如 `Level='普通会员'`)。
20
-
21
- ### 字段 V8 必须按保存格式读取选中值
22
-
23
- `SelectSaveFormat='Text'` 时,`V8.Form.<字段>` 可以是保存字段的原始文本;旧配置可能仍为对象或 JSON 文本。按钮不能无条件读取 `.TableName`、`.Id` 等对象属性。先按真实 Config 提取值并校验非空,再调用接口;接口失败和网络异常均在 `finally` 恢复 Loading。验收须覆盖文本、旧对象、JSON 文本和空选项。
24
-
25
- ---
26
-
27
- ## 二、移动端前端显示枚举值的规范
28
-
29
- 移动端(UniApp)不应假定页面已经加载后台 `diy_field.Config`。优先由接口返回当前租户可用的 `Key/Value` 选项,或复用项目内的共享字典模块;只有不会被租户配置动态修改的协议枚举,才适合在前端维护映射函数:
30
-
31
- ```js
32
- // ✅ 正确做法:手写完整的枚举映射
33
- function statusLabel(status) {
34
- return ({
35
- Draft: '草稿',
36
- Enabled: '启用',
37
- Disabled: '停用'
38
- })[status] || status; // 未知值显示原始 key
39
- }
40
-
41
- // ✅ 动态选项:后端返回 [{ Key, Value }] 后建立映射
42
- export function createOptionLabel(options = []) {
43
- const map = new Map(options.map(x => [String(x.Key), x.Value]));
44
- return key => map.get(String(key ?? '')) || String(key ?? '');
45
- }
46
- ```
47
-
48
- **原则**:
49
- - 映射函数兜底返回原始 key,方便发现新枚举值或配置漂移
50
- - **不要** 用 `|| '未知'` 作为兜底,否则后台新增类型后移动端会显示"未知"而不是英文 key(更难排查)
51
- - 租户可配置的 Select/Radio/Checkbox 选项不得复制成官方 Skill 中的固定业务字典
52
-
53
- ---
54
-
55
- ### 原生详情与异步关联回显
56
-
57
- - `View` 只读表单可能使用静态展示器,不挂载 `Select`。数据库Id会先成为 `{Key: Id, Value: Id}` 占位对象;只更新字段 `Data` 不能保证该对象的显示名随之更新。
58
- - 通过已授权接口取得当前关联记录的名称后,同时更新字段选项和同Key显示对象。仅补名称时用 `V8.Form.字段名 = {Key, Value}` 静默赋值,避免 `FormSet` 触发部门/人员等字段的异步联动或把纯查看标记为业务修改。存储字段仍为原Key,不能改成名称或默认第一条。
59
- - 详情解析以持久主记录和真实权限为依据,不能靠请求传入的任意关联Id读取人员或外站资料。首屏之外的当前关联须单独授权解析,不扩大候选全集;返回仅包含选择器所需字段。
60
- - 异步回填前核对表单实例、记录Id、依赖值和当前选择;换记录、换部门、改选后的迟到响应丢弃。失败不得伪造名称或清空已有业务关联。
61
- - 验收覆盖新增检索、编辑、只读详情、首屏外已有值、停用/越权关联和迟到响应;必须实际截图核对可读名称,不能仅看控件类型或接口返回成功。
62
-
63
- ## 三、历史遗留数据迁移
64
-
65
- 从第三方数据库迁移枚举前,先用 `microi_inspect_external_database` 确认真实字段类型和说明,再用受限 `microi_query_external_database` 抽样唯一值。第三方显示文字不能直接成为吾码协议 Key;建立明确的“源值 -> 稳定 Key -> 展示 Value”映射,未识别值进入失败清单,禁止静默写成“未知”。持续同步应把映射版本写入任务配置,并保证同一源记录重投不会重复新增。
66
-
67
- 当后台 Select 字段的 Key 发生变更时(如从英文 `Normal` 改为中文 `普通会员`),DB 中已存入的旧 key 不会自动更新。需要手动执行迁移:
68
-
69
- ```js
70
- // 接口引擎:一次性数据迁移
71
- var affected = V8.Db.FromSql(
72
- 'UPDATE biz_member SET Level = @p0, UpdateTime = @p1 WHERE Level = @p2'
73
- )
74
- .AddInParameter('@p0', 'NormalMember')
75
- .AddInParameter('@p1', DateNow('yyyy-MM-dd HH:mm:ss'))
76
- .AddInParameter('@p2', 'Normal')
77
- .ExecuteNonQuery();
78
- return { Code: 1, Msg: '迁移完成,共更新 ' + affected + ' 条', Data: { Updated: affected } };
79
- ```
80
-
81
- **最佳实践**:
82
- 1. 执行前先 `SELECT COUNT(*)` 确认受影响行数
83
- 2. 迁移接口默认 `StopHttp=1`,仅管理员可运行;保留版本和审计记录
84
- 3. 新字段应从一开始就统一使用 Key≠Value 格式(英文 key + 中文 label),避免后续迁移
85
-
86
- ---
87
-
88
- ## 四、租户与项目映射隔离
89
-
90
- 官方 Skill 只维护平台通用机制,不记录任何客户名称、真实 `OsClient`、客户表名、接口 Key 或业务枚举。项目专有映射应保存在对应应用源码、租户私有配置或项目级 Skill 中,并遵循以下规则:
91
-
92
- 1. 每个映射注明事实源(字段 KeyValue、数据源引擎或接口引擎)和更新时间。
93
- 2. 动态选项优先实时读取;允许缓存时,缓存 Key 必须包含 `OsClient` 和配置版本。
94
- 3. 后台字段配置修改后刷新字段/数据源缓存,前端不得长期保留另一份无版本的硬编码字典。
95
- 4. 历史值兼容只放在受影响项目中;迁移完成后仍保留审计与回滚说明。
96
- 5. 示例统一使用 `demo`、`biz_*` 等虚构名称,禁止把客户项目复制进官方文档、官方 Skill 或平台 AI 公共知识库。
97
-
98
- ---
99
-
100
- ## 五、接口引擎 OsClient 传递规范
101
-
102
- ### UniApp 调用 `/apiengine/xxx` 时
103
-
104
- ```js
105
- // ✅ 正确:OsClient 通过请求头传递,URL 不需要附加 --OsClient-- 后缀
106
- function withOsClient(url) {
107
- if (url.includes('/apiengine/')) {
108
- return url; // OsClient 已在 header 中
109
- }
110
- const sep = url.includes('?') ? '&' : '?';
111
- return `${url}${sep}OsClient=${encodeURIComponent(OS_CLIENT)}`;
112
- }
113
-
114
- // 请求头中包含:
115
- // { OsClient: OS_CLIENT, Token: 'xxx', ... }
116
-
117
- // ❌ 不要在已经携带租户请求头时,再把租户写死到 URL
118
- // /apiengine/order-query--OsClient--demo--
119
- // 这种写法在路由匹配时可能出错,导致 404 或参数丢失
120
- ```
121
-
122
- **结论**:`callEngine()` 系列函数已在请求头中传递 `OsClient` 时,无需在 URL 中重复传递。对于需要 query 参数识别租户的端点,使用运行期变量 `?OsClient=${encodeURIComponent(OS_CLIENT)}`,不得写死真实租户。
1
+ ---
2
+ name: microi-datasource-mapping
3
+ description: Microi 选项类字段的数据源 Key/Value 映射规范。用于 Select、Radio、Checkbox、UniApp 枚举显示、KeyValue 配置、数据迁移和接口返回标签映射。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # microi-datasource-mapping — 数据源 Key/Value 映射规范
9
+
10
+ ## 一、后台字段数据源的两种模式
11
+
12
+ Microi 低代码平台中,`Select / Radio / Checkbox` 等选项组件支持两种数据源配置方式:
13
+
14
+ | 模式 | 格式 | DB 存储值 | 前端显示值 | 示例 |
15
+ |------|------|-----------|-----------|------|
16
+ | **Key ≠ Value**(推荐) | `"key1\|label1,key2\|label2"` | key (如 `"VIP"`) | label (如 `"VIP会员"`) | `"VIP\|VIP会员,普通会员\|普通会员"` |
17
+ | **Key = Value**(简单) | `"值1,值2,值3"` | 原始值 (如 `"普通会员"`) | 原始值 (如 `"普通会员"`) | `"普通会员,VIP"` |
18
+
19
+ > ⚠️ 注意:若误将 Key 与 Value 设置为相同中文,后台和 DB 中存的就是中文字符串(如 `Level='普通会员'`)。
20
+
21
+ ### 字段 V8 必须按保存格式读取选中值
22
+
23
+ `SelectSaveFormat='Text'` 时,`V8.Form.<字段>` 可以是保存字段的原始文本;旧配置可能仍为对象或 JSON 文本。按钮不能无条件读取 `.TableName`、`.Id` 等对象属性。先按真实 Config 提取值并校验非空,再调用接口;接口失败和网络异常均在 `finally` 恢复 Loading。验收须覆盖文本、旧对象、JSON 文本和空选项。
24
+
25
+ ---
26
+
27
+ ## 二、移动端前端显示枚举值的规范
28
+
29
+ 移动端(UniApp)不应假定页面已经加载后台 `diy_field.Config`。优先由接口返回当前租户可用的 `Key/Value` 选项,或复用项目内的共享字典模块;只有不会被租户配置动态修改的协议枚举,才适合在前端维护映射函数:
30
+
31
+ ```js
32
+ // ✅ 正确做法:手写完整的枚举映射
33
+ function statusLabel(status) {
34
+ return ({
35
+ Draft: '草稿',
36
+ Enabled: '启用',
37
+ Disabled: '停用'
38
+ })[status] || status; // 未知值显示原始 key
39
+ }
40
+
41
+ // ✅ 动态选项:后端返回 [{ Key, Value }] 后建立映射
42
+ export function createOptionLabel(options = []) {
43
+ const map = new Map(options.map(x => [String(x.Key), x.Value]));
44
+ return key => map.get(String(key ?? '')) || String(key ?? '');
45
+ }
46
+ ```
47
+
48
+ **原则**:
49
+ - 映射函数兜底返回原始 key,方便发现新枚举值或配置漂移
50
+ - **不要** 用 `|| '未知'` 作为兜底,否则后台新增类型后移动端会显示"未知"而不是英文 key(更难排查)
51
+ - 租户可配置的 Select/Radio/Checkbox 选项不得复制成官方 Skill 中的固定业务字典
52
+
53
+ ---
54
+
55
+ ### 原生详情与异步关联回显
56
+
57
+ - `View` 只读表单可能使用静态展示器,不挂载 `Select`。数据库Id会先成为 `{Key: Id, Value: Id}` 占位对象;只更新字段 `Data` 不能保证该对象的显示名随之更新。
58
+ - 通过已授权接口取得当前关联记录的名称后,同时更新字段选项和同Key显示对象。仅补名称时用 `V8.Form.字段名 = {Key, Value}` 静默赋值,避免 `FormSet` 触发部门/人员等字段的异步联动或把纯查看标记为业务修改。存储字段仍为原Key,不能改成名称或默认第一条。
59
+ - 详情解析以持久主记录和真实权限为依据,不能靠请求传入的任意关联Id读取人员或外站资料。首屏之外的当前关联须单独授权解析,不扩大候选全集;返回仅包含选择器所需字段。
60
+ - 异步回填前核对表单实例、记录Id、依赖值和当前选择;换记录、换部门、改选后的迟到响应丢弃。失败不得伪造名称或清空已有业务关联。
61
+ - 验收覆盖新增检索、编辑、只读详情、首屏外已有值、停用/越权关联和迟到响应;必须实际截图核对可读名称,不能仅看控件类型或接口返回成功。
62
+
63
+ ## 三、历史遗留数据迁移
64
+
65
+ 从第三方数据库迁移枚举前,先用 `microi_inspect_external_database` 确认真实字段类型和说明,再用受限 `microi_query_external_database` 抽样唯一值。第三方显示文字不能直接成为吾码协议 Key;建立明确的“源值 -> 稳定 Key -> 展示 Value”映射,未识别值进入失败清单,禁止静默写成“未知”。持续同步应把映射版本写入任务配置,并保证同一源记录重投不会重复新增。
66
+
67
+ 当后台 Select 字段的 Key 发生变更时(如从英文 `Normal` 改为中文 `普通会员`),DB 中已存入的旧 key 不会自动更新。需要手动执行迁移:
68
+
69
+ ```js
70
+ // 接口引擎:一次性数据迁移
71
+ var affected = V8.Db.FromSql(
72
+ 'UPDATE biz_member SET Level = @p0, UpdateTime = @p1 WHERE Level = @p2'
73
+ )
74
+ .AddInParameter('@p0', 'NormalMember')
75
+ .AddInParameter('@p1', DateNow('yyyy-MM-dd HH:mm:ss'))
76
+ .AddInParameter('@p2', 'Normal')
77
+ .ExecuteNonQuery();
78
+ return { Code: 1, Msg: '迁移完成,共更新 ' + affected + ' 条', Data: { Updated: affected } };
79
+ ```
80
+
81
+ **最佳实践**:
82
+ 1. 执行前先 `SELECT COUNT(*)` 确认受影响行数
83
+ 2. 迁移接口默认 `StopHttp=1`,仅管理员可运行;保留版本和审计记录
84
+ 3. 新字段应从一开始就统一使用 Key≠Value 格式(英文 key + 中文 label),避免后续迁移
85
+
86
+ ---
87
+
88
+ ## 四、租户与项目映射隔离
89
+
90
+ 官方 Skill 只维护平台通用机制,不记录任何客户名称、真实 `OsClient`、客户表名、接口 Key 或业务枚举。项目专有映射应保存在对应应用源码、租户私有配置或项目级 Skill 中,并遵循以下规则:
91
+
92
+ 1. 每个映射注明事实源(字段 KeyValue、数据源引擎或接口引擎)和更新时间。
93
+ 2. 动态选项优先实时读取;允许缓存时,缓存 Key 必须包含 `OsClient` 和配置版本。
94
+ 3. 后台字段配置修改后刷新字段/数据源缓存,前端不得长期保留另一份无版本的硬编码字典。
95
+ 4. 历史值兼容只放在受影响项目中;迁移完成后仍保留审计与回滚说明。
96
+ 5. 示例统一使用 `demo`、`biz_*` 等虚构名称,禁止把客户项目复制进官方文档、官方 Skill 或平台 AI 公共知识库。
97
+
98
+ ---
99
+
100
+ ## 五、接口引擎 OsClient 传递规范
101
+
102
+ ### UniApp 调用 `/apiengine/xxx` 时
103
+
104
+ ```js
105
+ // ✅ 正确:OsClient 通过请求头传递,URL 不需要附加 --OsClient-- 后缀
106
+ function withOsClient(url) {
107
+ if (url.includes('/apiengine/')) {
108
+ return url; // OsClient 已在 header 中
109
+ }
110
+ const sep = url.includes('?') ? '&' : '?';
111
+ return `${url}${sep}OsClient=${encodeURIComponent(OS_CLIENT)}`;
112
+ }
113
+
114
+ // 请求头中包含:
115
+ // { OsClient: OS_CLIENT, Token: 'xxx', ... }
116
+
117
+ // ❌ 不要在已经携带租户请求头时,再把租户写死到 URL
118
+ // /apiengine/order-query--OsClient--demo--
119
+ // 这种写法在路由匹配时可能出错,导致 404 或参数丢失
120
+ ```
121
+
122
+ **结论**:`callEngine()` 系列函数已在请求头中传递 `OsClient` 时,无需在 URL 中重复传递。对于需要 query 参数识别租户的端点,使用运行期变量 `?OsClient=${encodeURIComponent(OS_CLIENT)}`,不得写死真实租户。