@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,122 +1,122 @@
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)}`,不得写死真实租户。
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)}`,不得写死真实租户。