@microi.net/cli 5.8.5 → 5.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/LICENSE +21 -21
  7. package/README.md +71 -71
  8. package/assets/build-meta.json +7 -7
  9. package/assets/feature-matrix.json +138 -138
  10. package/assets/logo.svg +4 -4
  11. package/cordis.patch.yml +1 -1
  12. package/package.json +1 -1
  13. package/scripts/mcp-codex-stdio-adapter.js +0 -0
  14. package/scripts/mcp-server.js +1 -1
  15. package/scripts/microi-cli.js +66 -65
  16. package/scripts/microi-codex-broker.js +450 -450
  17. package/scripts/microi-codex-router.js +618 -618
  18. package/scripts/microi-skills.meta.json +384 -384
  19. package/skills/.microi-skills-version.json +2 -2
  20. package/skills/.progressive-disclosure-manifest.json +21 -21
  21. package/skills/README.md +287 -287
  22. package/skills/ai-engine/SKILL.md +269 -265
  23. package/skills/ai-engine/agents/openai.yaml +4 -4
  24. package/skills/ai-engine/references/ai-employees.md +48 -48
  25. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  26. package/skills/ai-platform-governance/SKILL.md +177 -177
  27. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  28. package/skills/app-store/SKILL.md +525 -525
  29. package/skills/app-store/agents/openai.yaml +4 -4
  30. package/skills/business-blueprint/SKILL.md +193 -193
  31. package/skills/datasource-engine/SKILL.md +93 -93
  32. package/skills/datasource-engine/agents/openai.yaml +4 -4
  33. package/skills/dos-orm/SKILL.md +97 -95
  34. package/skills/dos-orm/references/api-reference.md +229 -229
  35. package/skills/email-engine/SKILL.md +81 -81
  36. package/skills/email-engine/references/v8-email.md +34 -34
  37. package/skills/job-engine/SKILL.md +176 -176
  38. package/skills/job-engine/agents/openai.yaml +4 -4
  39. package/skills/message-notification/SKILL.md +156 -156
  40. package/skills/message-notification/agents/openai.yaml +5 -5
  41. package/skills/message-notification/references/contracts.md +102 -102
  42. package/skills/microi/SKILL.md +14 -14
  43. package/skills/microi-ai-app-auth.js +652 -652
  44. package/skills/microi-ai-application/SKILL.md +115 -115
  45. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  46. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  47. package/skills/microi-client-frontend/SKILL.md +246 -244
  48. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
  49. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
  50. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
  51. package/skills/microi-codex/SKILL.md +102 -100
  52. package/skills/microi-codex-installer/SKILL.md +231 -231
  53. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  54. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  55. package/skills/microi-db-schema/SKILL.md +175 -175
  56. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  57. package/skills/microi-db-schema/references/core-tables.md +695 -695
  58. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  59. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  60. package/skills/microi-db-schema/references/schema.md +646 -646
  61. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  62. package/skills/microi-deployment/SKILL.md +222 -220
  63. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  64. package/skills/microi-docs-coverage/SKILL.md +133 -133
  65. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  66. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  67. package/skills/microi-form-engine/SKILL.md +333 -333
  68. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  69. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  70. package/skills/microi-form-layout/SKILL.md +205 -205
  71. package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
  72. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  73. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
  74. package/skills/microi-left-right-layout/SKILL.md +141 -141
  75. package/skills/microi-microservice/SKILL.md +328 -326
  76. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  77. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  78. package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
  79. package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
  80. package/skills/microi-solution-quotation/SKILL.md +78 -78
  81. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  82. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  83. package/skills/microi-sso/SKILL.md +96 -90
  84. package/skills/microi-sso/references/acceptance.md +49 -49
  85. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  86. package/skills/microi-sso/references/inbound.md +53 -53
  87. package/skills/microi-sso/references/outbound.md +39 -39
  88. package/skills/microi-system-delivery/SKILL.md +137 -137
  89. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
  90. package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
  91. package/skills/microi-ui/SKILL.md +192 -192
  92. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
  93. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  94. package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
  95. package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
  96. package/skills/microi.v8.js +1921 -1921
  97. package/skills/module-engine/SKILL.md +255 -255
  98. package/skills/module-engine/references/module-config.md +204 -204
  99. package/skills/ocr-engine/SKILL.md +113 -113
  100. package/skills/ocr-engine/agents/openai.yaml +4 -4
  101. package/skills/page-engine/SKILL.md +206 -206
  102. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  103. package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
  104. package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
  105. package/skills/performance-testing/SKILL.md +221 -221
  106. package/skills/playwright-e2e/SKILL.md +196 -196
  107. package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
  108. package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
  109. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  110. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  111. package/skills/print-engine/SKILL.md +259 -259
  112. package/skills/production-readonly-audit/SKILL.md +41 -41
  113. package/skills/report-engine/SKILL.md +71 -71
  114. package/skills/report-engine/agents/openai.yaml +4 -4
  115. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  116. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  117. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  118. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  119. package/skills/search-engine/SKILL.md +75 -75
  120. package/skills/search-engine/agents/openai.yaml +4 -4
  121. package/skills/spider-engine/SKILL.md +190 -190
  122. package/skills/system-observability/SKILL.md +249 -246
  123. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  124. package/skills/translate-engine/SKILL.md +140 -140
  125. package/skills/translate-engine/agents/openai.yaml +4 -4
  126. package/skills/ui-design/SKILL.md +223 -223
  127. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  128. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  129. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  130. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  131. package/skills/ui-design/references/design-pattern-library.md +184 -184
  132. package/skills/ui-design/references/mci-design-contract.md +163 -163
  133. package/skills/ui-design/references/motion-and-media.md +78 -78
  134. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  135. package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
  136. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  137. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
  138. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
  139. package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
  140. package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
  141. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
  142. package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
  143. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  144. package/skills/unity-integration/SKILL.md +171 -171
  145. package/skills/unity-integration/agents/openai.yaml +4 -4
  146. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  147. package/skills/unity-integration/references/sdk-api.md +82 -82
  148. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  149. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  150. package/skills/v8-api-config/SKILL.md +388 -388
  151. package/skills/v8-cache-pattern/SKILL.md +312 -312
  152. package/skills/v8-crud-api/SKILL.md +178 -178
  153. package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
  154. package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
  155. package/skills/v8-debugging/SKILL.md +284 -284
  156. package/skills/v8-explorer-tree/SKILL.md +228 -228
  157. package/skills/v8-export-import/SKILL.md +219 -219
  158. package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
  159. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  160. package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
  161. package/skills/v8-file-upload/SKILL.md +284 -284
  162. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
  163. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
  164. package/skills/v8-formengine-http/SKILL.md +238 -238
  165. package/skills/v8-frontend-events/SKILL.md +180 -180
  166. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  167. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  168. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  169. package/skills/v8-http-integration/SKILL.md +182 -182
  170. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  171. package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
  172. package/skills/v8-image-processing/SKILL.md +190 -190
  173. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  174. package/skills/v8-image-processing/references/api-reference.md +623 -623
  175. package/skills/v8-menu-buttons/SKILL.md +186 -186
  176. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
  177. package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
  178. package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
  179. package/skills/v8-mongodb/SKILL.md +200 -200
  180. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  181. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  182. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  183. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  184. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  185. package/skills/v8-security/SKILL.md +210 -210
  186. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  187. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  188. package/skills/v8-sql-query/SKILL.md +302 -302
  189. package/skills/v8-table-event/SKILL.md +176 -176
  190. package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
  191. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
  192. package/skills/v8-tcp-integration/SKILL.md +147 -147
  193. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  194. package/skills/v8-template-engine/SKILL.md +167 -167
  195. package/skills/v8-utilities/SKILL.md +104 -104
  196. package/skills/v8-utilities/references/client-api-index.md +143 -143
  197. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  198. package/skills/v8-utilities/references/server-api-index.md +188 -188
  199. package/skills/v8-workflow/SKILL.md +252 -252
  200. package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
  201. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  202. package/skills/vision-engine/SKILL.md +160 -160
  203. package/skills/vision-engine/agents/openai.yaml +4 -4
  204. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  205. package/skills/workspace-conventions/SKILL.md +273 -273
  206. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
  207. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
  208. package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
@@ -1,128 +1,128 @@
1
- # microi-mobile-app-quality 详细参考 2
2
-
3
- > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
-
5
- <!-- microi-progressive:chunk id=microi-mobile-app-quality-018 sha256=b6e3138b7f398fad5b03253d07c1eb30e26da5c3df8ff1975117e5a3a282fd58 -->
6
- ## 9. 主题切换必须真实且全局生效
7
-
8
- 当客户要求增加另一种视觉风格时,除非用户明确要求删除,否则要把当前已认可设计保留为一个命名主题,而不是直接覆盖。
9
-
10
- 要求:
11
- - 主题命名要表达视觉意图,不要沿用临时客户措辞。例如:`清新绿红`、`品牌经典`、`专业深色`。
12
- - 用 `uni.setStorageSync` 或项目主题运行时持久化主题选择。
13
- - 如果产品有未登录也可打开的我的/个人中心/设置页,主题切换必须在登录前可用。
14
- - 主题切换应是紧凑的“切换主题”操作,打开弹窗或底部面板;除非页面明确是完整设置页,否则不要把所有主题选项直接堆在我的/个人中心首页。
15
- - 主题状态要作用到每个页面根节点、固定底部导航、空状态、骨架屏、加载过渡、按钮、卡片、报告详情和 H5 桌面手机壳。只改变当前页的主题是不完整的。
16
- - 小程序构建不能只依赖 `document.documentElement`;应使用页面根类、CSS 变量或跨端主题服务。
17
- - H5 uni-app 主题服务只能修改安全外壳:`html`、`body` 的 `data-*` 属性、主题 class 和 CSS 变量。不要通过 `querySelectorAll('.mci-page')`、`MutationObserver` 或定时扫描去改 `.mci-page`、`uni-page-body`、`uni-page`、`RouterView` 下的 Vue/uni 托管节点 class,否则容易触发 Vue 内部只读字段和空 vnode 错误。
18
- - 固定底部导航、固定提交栏、悬浮操作条等 fixed 组件在 H5 中优先继承 `html/body` 上的 `--mci-*` 主题变量,避免因为组件自己订阅 theme store 或动态绑定 `bottom-nav--theme` class 导致导航时重渲染。小程序端可在组件根节点绑定稳定主题 class,但不要在 H5 路由切换过程中改变 Vue 托管根节点结构。
19
- - 如果页面局部 scoped CSS 写死颜色,要增加主题覆盖或重构为 `--mci-*` 变量;骨架屏、加载流光、页面过渡遮罩、报告封面、英文小标题、印章/水印、摘要卡和富文本容器也必须使用主题变量。
20
- - H5 主题变化不能破坏 uni-app 路由补丁。如果切主题后点击导航出现 `Cannot assign to read only property '_'`、`Cannot read properties of null (reading 'type')`、`parentNode`、`scheduler flush`、`updateSlots` 等错误,必须先移除对 Vue/uni 托管节点的 DOM 改写,保持页面 class 稳定,并改用 `html/body` 变量驱动主题。
21
- - 底部导航必须防止重复点击当前路由、对连续点击做防抖,并在主题切换后略微延迟路由跳转,确保 DOM/主题更新先于 `uni.reLaunch` 完成。
22
-
23
- 禁止:
24
- - 新增客户偏好主题时删除此前已认可设计。
25
- - 主题切换效果在导航或重启后消失。
26
- - 主题卡片/选项使用纯文字假图标。
27
- - 主题切换破坏底部导航或产生 Vue scheduler 错误。
28
- - 为了补主题而直接改 `.mci-page`、`uni-page-body`、`uni-page` 等运行时节点 class。
29
- - 只让首页和列表页换主题,详情页、骨架屏、加载过渡或报告页仍残留旧主题。
30
-
31
- 验收:
32
- - 在未登录的我的/个人中心页切换主题,并导航到首页、登录页、列表页、详情页和表单页。
33
- - 确认底部导航、主按钮、卡片、空状态和页面背景都一致变化。
34
- - 刷新 H5 页面或重启小程序后确认已选主题恢复。
35
- - 对 `pages.json` 中每个路由、每个命名主题做截图验证。重点检查文字对比度,尤其是快捷卡片、报告卡片、空状态、底部导航、首屏文字和弹窗/底部面板内容。
36
- - 主题切换后必须额外截图或断言:底部导航容器背景、未选中项文字、选中项文字、选中图标圆底、首页快捷入口图标颜色都已经切到当前主题,而不是残留旧主题。
37
- - 主题切换后必须继续点击每个底部导航项,并打开至少一个详情路由(例如报告详情),断言控制台没有 `read only property '_'`、`null (reading 'type')`、`parentNode`、`scheduler flush` 等错误。
38
- - 骨架屏和加载过渡要在切换主题后重新触发一次;颜色、流光、遮罩和空态不能残留上一个主题。
39
- - 报告详情页必须逐主题截图,检查 `INSPECTION REPORT`、状态胶囊、封面标题、摘要卡、报告正文和富文本在当前主题下都有足够对比度。
40
-
41
- <!-- /microi-progressive:chunk -->
42
- <!-- microi-progressive:chunk id=microi-mobile-app-quality-019 sha256=f2ca99aebb70273d991f5142e88bd1e02ff42782df5a8e7e180de297fba0faac -->
43
- ## 10. 报告/列表详情必须保留用户身份
44
-
45
- 从列表进入详情时必须保留调用者身份模型。即使打开的是同一个视觉报告详情页,员工、客户和公开/分享路线也可能需要不同接口。
46
-
47
- 要求:
48
- - 如果员工通过已鉴权 FormEngine 或后台账号接口能看到报告列表,报告详情必须使用同样的员工鉴权路径或传有效员工 token。
49
- - 客户打开报告时,使用客户 token 或感知绑定关系的接口引擎。
50
- - 外部用户打开分享报告时,使用分享 token 路由,不要求员工/客户登录。
51
- - 不要给员工用户发送空 `CustomerToken`,然后把后端响应解释为“未登录”。
52
- - 打开详情页前保留当前会话;除非员工鉴权端点真实返回登录过期码,否则不要清除员工 token。
53
-
54
- 禁止:
55
- - 员工列表点击时,直接复用客户匿名报告详情引擎且没有员工凭证路径。
56
- - 登录用户点击已经可见的报告/列表项后被重定向到登录页。
57
-
58
- 验收:
59
- - 分别测试员工列表 -> 报告详情、客户列表 -> 报告详情、分享 token 详情。
60
- - 确认点击可见卡片后不会发生意外登录跳转。
61
-
62
- <!-- /microi-progressive:chunk -->
63
- <!-- microi-progressive:chunk id=microi-mobile-app-quality-020 sha256=95487284aa5f9b1b3a0fb557845b3400af0355e4b2ebf6abebbef461e8ec8485 -->
64
- ## 11. 角色与权限必须基于 sys_user.RoleIds 建模
65
-
66
- 移动端和后台不能只区分“已登录/未登录”。企业应用通常至少有内部员工、售后师傅、客服、客户账号等角色,必须在建模阶段明确角色、菜单权限和数据权限。
67
-
68
- 要求:
69
- - 内部账号统一使用 `sys_user` 登录,身份可从 `RoleIds`、`_Roles`、`Roles`、`RoleName` 和 `Level` 推导展示能力;只有服务端已确认的 `Level>=9999` 才视为平台超级管理员。角色名和前端 `_IsAdmin` 不能代替接口授权。
70
- - 角色能力要在统一 session/capability store 中计算,例如 `isTechnician`、`isServiceAgent`、`isCustomerAccount`、`canAcceptOrders`、`canManageCustomers`、`canViewReports`。一个人有多个角色时取能力并集。
71
- - 客户账号角色要精确判断,不能把“客户管理”这类内部后台角色误判为客户账号。建议只把“客户”“客户账号”“客户用户”或明确包含“客户账号”的角色当作客户侧账号。
72
- - 后台通过 `sys_role` + `sys_rolelimit` 建角色和菜单权限。售后师傅通常能看维保计划、工单、维保记录、报修和检测报告;客服通常能看客户中心、工单、报修、报告和资讯;客户账号默认不直接授予后台菜单,客户侧数据通过绑定关系和接口数据过滤提供。
73
- - 移动端按钮和数据必须按 capability 控制:接单按钮只给售后师傅/超级管理员,客户资料管理只给客服/超级管理员,客户账号只能看自己绑定客户的数据。
74
- - 菜单权限只是粗粒度入口控制,接口引擎和 FormEngine 查询仍必须按角色、`V8.CurrentUser`、客户绑定关系做行级过滤。
75
- - 微信小程序手机号授权登录后,如果当前 OpenId/小程序用户还没有绑定客户或内部 `sys_user` 身份,移动端不能只显示“联系管理员”。必须提供“申请绑定身份”入口,允许用户申请绑定客户、售后师傅或客服等角色,并把申请写入独立审核表;后台审核通过后才写客户绑定表或 `Sys_User.MiniProgramOpenId` 等正式身份字段。
76
- - 身份绑定申请必须显示审核状态:待审核、已通过、已驳回。待审核期间不要提前开放客户数据、接单、工单处理等能力;已驳回要展示原因或允许重新提交。
77
- - 后台审核必须由有权限的内部账号执行。审核客户申请时应由后台选择真实客户 Id 后再写绑定关系,不能只相信用户填写的客户名称;审核售后师傅/客服申请时应由后台选择真实 `sys_user.Id` 后再绑定 OpenId。
78
- - 使用 MCP 建角色前先回读 `sys_role` 和 `sys_menu`。如果 `microi_save_role` 或通用 `add_form_data('sys_role')` 因 `UpdateTime cannot be null` 等系统字段问题失败,要使用平台修复后的专用角色工具;临时迁移可用一次性接口引擎和参数化 `V8.Db` 补建角色,但必须回读验证并删除或禁用临时入口。
79
-
80
- 禁止:
81
- - 只做前端显示区分,后台角色和菜单权限不落库。
82
- - 把客户账号当作普通后台用户直接开放客户、报告、工单全量菜单。
83
- - 客户授权手机号登录后没有绑定关系时,只提示“联系管理员”,却没有申请、审核、状态回显闭环。
84
- - 审核绑定时只按用户填写的客户名或姓名自动匹配,未由后台确认真实 `CustomerId` / `Sys_User.Id`。
85
- - 多角色用户只按第一个角色判断,导致能力丢失。
86
- - 登录状态、角色文本和页面权限由多个页面各自读取缓存,造成互相矛盾。
87
-
88
- 验收:
89
- - 用超级管理员、售后师傅、客服、客户账号分别登录截图,确认姓名、角色、按钮和数据范围一致。
90
- - 用多角色账号登录,确认能力取并集。
91
- - 回读 `sys_role`、`sys_rolelimit`、关键接口返回数据,确认角色存在、菜单授权正确、客户数据没有越权。
92
- - 使用真实账号登录后刷新 H5 或重启小程序,不能出现缓存用户名但状态未登录的半登录状态。
93
- - 用未绑定的小程序手机号账号登录,截图确认“我的”页出现申请绑定身份入口;提交申请后后台能看到待审核记录;通过审核前数据权限不提前开放,通过审核后对应客户数据或内部工作台能力才出现。
94
-
95
- <!-- /microi-progressive:chunk -->
96
- <!-- microi-progressive:chunk id=microi-mobile-app-quality-021 sha256=13405c8ce231e9db8920cd8e1c4e0db26a32c1b5ac967113abee1391985ebfcd -->
97
- ## 审核后的会话与角色同步(强制)
98
-
99
- - 审核通过后的数据库角色、服务端 DiyToken 身份投影、SDK 用户缓存、页面 capability 和申请状态必须一致,禁止以“退出重登后正常”作为验收成功。
100
- - `RefreshLoginUser` 必须检查返回值和真实授权边界。普通审核员能审核业务申请,不代表其能刷新任意用户 Token;不得伪造管理员身份、手写登录 Redis 或扩大跨用户会话权限。
101
- - 已授权的刷新应在角色事务提交后执行。平台仅允许普通用户刷新本人会话时,审核接口提交后发送定向身份变更通知,接收方调用固定的本人上下文接口,从主库重算角色并刷新本人全部有效终端会话;通知不能携带可直接采信的角色、Token 或权限。
102
- - SignalR 推送只作加速。应用前台恢复、实时重连及有界前台校验必须能从权威数据恢复离线期间的审批;后台停止轮询。不得要求审核者与申请者位于同一 API 节点。
103
- - 应用级会话同步实行 single-flight,刷新结果同时替换 SDK 和 store 用户缓存。退出或切换账号递增 generation,拒绝前一身份的迟到响应,不能让旧请求把旧角色写回来。
104
- - 比较身份投影时排除 `$authenticated` 等调用级虚拟角色;它们不能保存为业务角色,也不能导致每次查询重复刷新会话。
105
- - 带 `OnlyGet` 的客户角色需要调用身份申请等窄业务入口时,只为已经做服务端用户隔离的接口配置明确 `ApiRole`,不得移除客户角色的全局只读保护。
106
- - 必测:两个独立登录上下文,一方保持原登录状态,另一方以真实审核员权限通过申请;前者不重登、不刷新页面获得新角色。继续验证原 Token、另一终端有效 Token、SDK 缓存、断网恢复、降权、退出时在途请求及未经授权的审核拒绝。
107
-
108
- ## 最终交付清单
109
-
110
- 移动端项目标记完成前必须确认:
111
- - 图标:底部导航、首页快捷入口、个人中心快捷项、主按钮。
112
- - 登录:H5/App 只有一条账号/手机号 + 密码路径;微信手机号授权是小程序默认路径;没有并列重复登录系统,没有租户/版本/调试块;SDK 接口已核验。
113
- - 登录状态:成功登录必须同时有 token 和用户 `Id`;刷新、切换导航和进入“我的”页后,不得出现缓存用户名但仍提示未登录。
114
- - 按钮:图标 + 文字、按下态、加载态。
115
- - 菜单:后台规划为至少两级树。
116
- - 请求头:`osclient` 是唯一标准请求头值,没有因大小写重复。
117
- - 未登录态:授权/登录提示卡片和主按钮在可用内容区上下左右居中,不贴顶部。
118
- - 首屏:首屏文字和悬浮快捷面板已截图检查,无裁切或重叠。
119
- - 动效:入场、点击、骨架屏动画存在且克制。
120
- - 主题:命名主题可持久化,未登录可切换,并影响所有页面和底部导航。
121
- - 主题质检:每个 `pages.json` 路由在每个命名主题下都截图检查;切换主题再导航后,没有低对比文字,也没有 Vue scheduler/router 错误。
122
- - 图标对比:首页快捷入口、底部导航、我的快捷入口在每个主题下都清晰可见;不得出现绿色圆底配绿色图标、灰色圆底配低对比图标等情况。
123
- - 鉴权质检:列表到详情路由保留员工/客户/分享身份,不会把已可见项目重定向回登录页。
124
- - 分享:`pages.json` 中每个页面都已注册好友转发和朋友圈生命周期;登录/受保护页面也可分享,接收者进入后再鉴权。
125
- - 登录诊断:体验版手机号登录失败时显示阶段、原因和追踪号;后台系统日志可按追踪号查到脱敏错误上下文。
126
- - 角色权限:`sys_user.RoleIds`、`sys_role`、`sys_rolelimit`、前端 capability 和接口行级过滤已联动验证。
127
- - 验证:脚本存在时运行 `build:h5`、`build:mp-weixin` 和 `build:app`;执行 H5 路由冒烟测试和控制台检查。
128
- <!-- /microi-progressive:chunk -->
1
+ # microi-mobile-app-quality 详细参考 2
2
+
3
+ > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
+
5
+ <!-- microi-progressive:chunk id=microi-mobile-app-quality-018 sha256=b6e3138b7f398fad5b03253d07c1eb30e26da5c3df8ff1975117e5a3a282fd58 -->
6
+ ## 9. 主题切换必须真实且全局生效
7
+
8
+ 当客户要求增加另一种视觉风格时,除非用户明确要求删除,否则要把当前已认可设计保留为一个命名主题,而不是直接覆盖。
9
+
10
+ 要求:
11
+ - 主题命名要表达视觉意图,不要沿用临时客户措辞。例如:`清新绿红`、`品牌经典`、`专业深色`。
12
+ - 用 `uni.setStorageSync` 或项目主题运行时持久化主题选择。
13
+ - 如果产品有未登录也可打开的我的/个人中心/设置页,主题切换必须在登录前可用。
14
+ - 主题切换应是紧凑的“切换主题”操作,打开弹窗或底部面板;除非页面明确是完整设置页,否则不要把所有主题选项直接堆在我的/个人中心首页。
15
+ - 主题状态要作用到每个页面根节点、固定底部导航、空状态、骨架屏、加载过渡、按钮、卡片、报告详情和 H5 桌面手机壳。只改变当前页的主题是不完整的。
16
+ - 小程序构建不能只依赖 `document.documentElement`;应使用页面根类、CSS 变量或跨端主题服务。
17
+ - H5 uni-app 主题服务只能修改安全外壳:`html`、`body` 的 `data-*` 属性、主题 class 和 CSS 变量。不要通过 `querySelectorAll('.mci-page')`、`MutationObserver` 或定时扫描去改 `.mci-page`、`uni-page-body`、`uni-page`、`RouterView` 下的 Vue/uni 托管节点 class,否则容易触发 Vue 内部只读字段和空 vnode 错误。
18
+ - 固定底部导航、固定提交栏、悬浮操作条等 fixed 组件在 H5 中优先继承 `html/body` 上的 `--mci-*` 主题变量,避免因为组件自己订阅 theme store 或动态绑定 `bottom-nav--theme` class 导致导航时重渲染。小程序端可在组件根节点绑定稳定主题 class,但不要在 H5 路由切换过程中改变 Vue 托管根节点结构。
19
+ - 如果页面局部 scoped CSS 写死颜色,要增加主题覆盖或重构为 `--mci-*` 变量;骨架屏、加载流光、页面过渡遮罩、报告封面、英文小标题、印章/水印、摘要卡和富文本容器也必须使用主题变量。
20
+ - H5 主题变化不能破坏 uni-app 路由补丁。如果切主题后点击导航出现 `Cannot assign to read only property '_'`、`Cannot read properties of null (reading 'type')`、`parentNode`、`scheduler flush`、`updateSlots` 等错误,必须先移除对 Vue/uni 托管节点的 DOM 改写,保持页面 class 稳定,并改用 `html/body` 变量驱动主题。
21
+ - 底部导航必须防止重复点击当前路由、对连续点击做防抖,并在主题切换后略微延迟路由跳转,确保 DOM/主题更新先于 `uni.reLaunch` 完成。
22
+
23
+ 禁止:
24
+ - 新增客户偏好主题时删除此前已认可设计。
25
+ - 主题切换效果在导航或重启后消失。
26
+ - 主题卡片/选项使用纯文字假图标。
27
+ - 主题切换破坏底部导航或产生 Vue scheduler 错误。
28
+ - 为了补主题而直接改 `.mci-page`、`uni-page-body`、`uni-page` 等运行时节点 class。
29
+ - 只让首页和列表页换主题,详情页、骨架屏、加载过渡或报告页仍残留旧主题。
30
+
31
+ 验收:
32
+ - 在未登录的我的/个人中心页切换主题,并导航到首页、登录页、列表页、详情页和表单页。
33
+ - 确认底部导航、主按钮、卡片、空状态和页面背景都一致变化。
34
+ - 刷新 H5 页面或重启小程序后确认已选主题恢复。
35
+ - 对 `pages.json` 中每个路由、每个命名主题做截图验证。重点检查文字对比度,尤其是快捷卡片、报告卡片、空状态、底部导航、首屏文字和弹窗/底部面板内容。
36
+ - 主题切换后必须额外截图或断言:底部导航容器背景、未选中项文字、选中项文字、选中图标圆底、首页快捷入口图标颜色都已经切到当前主题,而不是残留旧主题。
37
+ - 主题切换后必须继续点击每个底部导航项,并打开至少一个详情路由(例如报告详情),断言控制台没有 `read only property '_'`、`null (reading 'type')`、`parentNode`、`scheduler flush` 等错误。
38
+ - 骨架屏和加载过渡要在切换主题后重新触发一次;颜色、流光、遮罩和空态不能残留上一个主题。
39
+ - 报告详情页必须逐主题截图,检查 `INSPECTION REPORT`、状态胶囊、封面标题、摘要卡、报告正文和富文本在当前主题下都有足够对比度。
40
+
41
+ <!-- /microi-progressive:chunk -->
42
+ <!-- microi-progressive:chunk id=microi-mobile-app-quality-019 sha256=f2ca99aebb70273d991f5142e88bd1e02ff42782df5a8e7e180de297fba0faac -->
43
+ ## 10. 报告/列表详情必须保留用户身份
44
+
45
+ 从列表进入详情时必须保留调用者身份模型。即使打开的是同一个视觉报告详情页,员工、客户和公开/分享路线也可能需要不同接口。
46
+
47
+ 要求:
48
+ - 如果员工通过已鉴权 FormEngine 或后台账号接口能看到报告列表,报告详情必须使用同样的员工鉴权路径或传有效员工 token。
49
+ - 客户打开报告时,使用客户 token 或感知绑定关系的接口引擎。
50
+ - 外部用户打开分享报告时,使用分享 token 路由,不要求员工/客户登录。
51
+ - 不要给员工用户发送空 `CustomerToken`,然后把后端响应解释为“未登录”。
52
+ - 打开详情页前保留当前会话;除非员工鉴权端点真实返回登录过期码,否则不要清除员工 token。
53
+
54
+ 禁止:
55
+ - 员工列表点击时,直接复用客户匿名报告详情引擎且没有员工凭证路径。
56
+ - 登录用户点击已经可见的报告/列表项后被重定向到登录页。
57
+
58
+ 验收:
59
+ - 分别测试员工列表 -> 报告详情、客户列表 -> 报告详情、分享 token 详情。
60
+ - 确认点击可见卡片后不会发生意外登录跳转。
61
+
62
+ <!-- /microi-progressive:chunk -->
63
+ <!-- microi-progressive:chunk id=microi-mobile-app-quality-020 sha256=95487284aa5f9b1b3a0fb557845b3400af0355e4b2ebf6abebbef461e8ec8485 -->
64
+ ## 11. 角色与权限必须基于 sys_user.RoleIds 建模
65
+
66
+ 移动端和后台不能只区分“已登录/未登录”。企业应用通常至少有内部员工、售后师傅、客服、客户账号等角色,必须在建模阶段明确角色、菜单权限和数据权限。
67
+
68
+ 要求:
69
+ - 内部账号统一使用 `sys_user` 登录,身份可从 `RoleIds`、`_Roles`、`Roles`、`RoleName` 和 `Level` 推导展示能力;只有服务端已确认的 `Level>=9999` 才视为平台超级管理员。角色名和前端 `_IsAdmin` 不能代替接口授权。
70
+ - 角色能力要在统一 session/capability store 中计算,例如 `isTechnician`、`isServiceAgent`、`isCustomerAccount`、`canAcceptOrders`、`canManageCustomers`、`canViewReports`。一个人有多个角色时取能力并集。
71
+ - 客户账号角色要精确判断,不能把“客户管理”这类内部后台角色误判为客户账号。建议只把“客户”“客户账号”“客户用户”或明确包含“客户账号”的角色当作客户侧账号。
72
+ - 后台通过 `sys_role` + `sys_rolelimit` 建角色和菜单权限。售后师傅通常能看维保计划、工单、维保记录、报修和检测报告;客服通常能看客户中心、工单、报修、报告和资讯;客户账号默认不直接授予后台菜单,客户侧数据通过绑定关系和接口数据过滤提供。
73
+ - 移动端按钮和数据必须按 capability 控制:接单按钮只给售后师傅/超级管理员,客户资料管理只给客服/超级管理员,客户账号只能看自己绑定客户的数据。
74
+ - 菜单权限只是粗粒度入口控制,接口引擎和 FormEngine 查询仍必须按角色、`V8.CurrentUser`、客户绑定关系做行级过滤。
75
+ - 微信小程序手机号授权登录后,如果当前 OpenId/小程序用户还没有绑定客户或内部 `sys_user` 身份,移动端不能只显示“联系管理员”。必须提供“申请绑定身份”入口,允许用户申请绑定客户、售后师傅或客服等角色,并把申请写入独立审核表;后台审核通过后才写客户绑定表或 `Sys_User.MiniProgramOpenId` 等正式身份字段。
76
+ - 身份绑定申请必须显示审核状态:待审核、已通过、已驳回。待审核期间不要提前开放客户数据、接单、工单处理等能力;已驳回要展示原因或允许重新提交。
77
+ - 后台审核必须由有权限的内部账号执行。审核客户申请时应由后台选择真实客户 Id 后再写绑定关系,不能只相信用户填写的客户名称;审核售后师傅/客服申请时应由后台选择真实 `sys_user.Id` 后再绑定 OpenId。
78
+ - 使用 MCP 建角色前先回读 `sys_role` 和 `sys_menu`。如果 `microi_save_role` 或通用 `add_form_data('sys_role')` 因 `UpdateTime cannot be null` 等系统字段问题失败,要使用平台修复后的专用角色工具;临时迁移可用一次性接口引擎和参数化 `V8.Db` 补建角色,但必须回读验证并删除或禁用临时入口。
79
+
80
+ 禁止:
81
+ - 只做前端显示区分,后台角色和菜单权限不落库。
82
+ - 把客户账号当作普通后台用户直接开放客户、报告、工单全量菜单。
83
+ - 客户授权手机号登录后没有绑定关系时,只提示“联系管理员”,却没有申请、审核、状态回显闭环。
84
+ - 审核绑定时只按用户填写的客户名或姓名自动匹配,未由后台确认真实 `CustomerId` / `Sys_User.Id`。
85
+ - 多角色用户只按第一个角色判断,导致能力丢失。
86
+ - 登录状态、角色文本和页面权限由多个页面各自读取缓存,造成互相矛盾。
87
+
88
+ 验收:
89
+ - 用超级管理员、售后师傅、客服、客户账号分别登录截图,确认姓名、角色、按钮和数据范围一致。
90
+ - 用多角色账号登录,确认能力取并集。
91
+ - 回读 `sys_role`、`sys_rolelimit`、关键接口返回数据,确认角色存在、菜单授权正确、客户数据没有越权。
92
+ - 使用真实账号登录后刷新 H5 或重启小程序,不能出现缓存用户名但状态未登录的半登录状态。
93
+ - 用未绑定的小程序手机号账号登录,截图确认“我的”页出现申请绑定身份入口;提交申请后后台能看到待审核记录;通过审核前数据权限不提前开放,通过审核后对应客户数据或内部工作台能力才出现。
94
+
95
+ <!-- /microi-progressive:chunk -->
96
+ <!-- microi-progressive:chunk id=microi-mobile-app-quality-021 sha256=13405c8ce231e9db8920cd8e1c4e0db26a32c1b5ac967113abee1391985ebfcd -->
97
+ ## 审核后的会话与角色同步(强制)
98
+
99
+ - 审核通过后的数据库角色、服务端 DiyToken 身份投影、SDK 用户缓存、页面 capability 和申请状态必须一致,禁止以“退出重登后正常”作为验收成功。
100
+ - `RefreshLoginUser` 必须检查返回值和真实授权边界。普通审核员能审核业务申请,不代表其能刷新任意用户 Token;不得伪造管理员身份、手写登录 Redis 或扩大跨用户会话权限。
101
+ - 已授权的刷新应在角色事务提交后执行。平台仅允许普通用户刷新本人会话时,审核接口提交后发送定向身份变更通知,接收方调用固定的本人上下文接口,从主库重算角色并刷新本人全部有效终端会话;通知不能携带可直接采信的角色、Token 或权限。
102
+ - SignalR 推送只作加速。应用前台恢复、实时重连及有界前台校验必须能从权威数据恢复离线期间的审批;后台停止轮询。不得要求审核者与申请者位于同一 API 节点。
103
+ - 应用级会话同步实行 single-flight,刷新结果同时替换 SDK 和 store 用户缓存。退出或切换账号递增 generation,拒绝前一身份的迟到响应,不能让旧请求把旧角色写回来。
104
+ - 比较身份投影时排除 `$authenticated` 等调用级虚拟角色;它们不能保存为业务角色,也不能导致每次查询重复刷新会话。
105
+ - 带 `OnlyGet` 的客户角色需要调用身份申请等窄业务入口时,只为已经做服务端用户隔离的接口配置明确 `ApiRole`,不得移除客户角色的全局只读保护。
106
+ - 必测:两个独立登录上下文,一方保持原登录状态,另一方以真实审核员权限通过申请;前者不重登、不刷新页面获得新角色。继续验证原 Token、另一终端有效 Token、SDK 缓存、断网恢复、降权、退出时在途请求及未经授权的审核拒绝。
107
+
108
+ ## 最终交付清单
109
+
110
+ 移动端项目标记完成前必须确认:
111
+ - 图标:底部导航、首页快捷入口、个人中心快捷项、主按钮。
112
+ - 登录:H5/App 只有一条账号/手机号 + 密码路径;微信手机号授权是小程序默认路径;没有并列重复登录系统,没有租户/版本/调试块;SDK 接口已核验。
113
+ - 登录状态:成功登录必须同时有 token 和用户 `Id`;刷新、切换导航和进入“我的”页后,不得出现缓存用户名但仍提示未登录。
114
+ - 按钮:图标 + 文字、按下态、加载态。
115
+ - 菜单:后台规划为至少两级树。
116
+ - 请求头:`osclient` 是唯一标准请求头值,没有因大小写重复。
117
+ - 未登录态:授权/登录提示卡片和主按钮在可用内容区上下左右居中,不贴顶部。
118
+ - 首屏:首屏文字和悬浮快捷面板已截图检查,无裁切或重叠。
119
+ - 动效:入场、点击、骨架屏动画存在且克制。
120
+ - 主题:命名主题可持久化,未登录可切换,并影响所有页面和底部导航。
121
+ - 主题质检:每个 `pages.json` 路由在每个命名主题下都截图检查;切换主题再导航后,没有低对比文字,也没有 Vue scheduler/router 错误。
122
+ - 图标对比:首页快捷入口、底部导航、我的快捷入口在每个主题下都清晰可见;不得出现绿色圆底配绿色图标、灰色圆底配低对比图标等情况。
123
+ - 鉴权质检:列表到详情路由保留员工/客户/分享身份,不会把已可见项目重定向回登录页。
124
+ - 分享:`pages.json` 中每个页面都已注册好友转发和朋友圈生命周期;登录/受保护页面也可分享,接收者进入后再鉴权。
125
+ - 登录诊断:体验版手机号登录失败时显示阶段、原因和追踪号;后台系统日志可按追踪号查到脱敏错误上下文。
126
+ - 角色权限:`sys_user.RoleIds`、`sys_role`、`sys_rolelimit`、前端 capability 和接口行级过滤已联动验证。
127
+ - 验证:脚本存在时运行 `build:h5`、`build:mp-weixin` 和 `build:app`;执行 H5 路由冒烟测试和控制台检查。
128
+ <!-- /microi-progressive:chunk -->
@@ -1,78 +1,78 @@
1
- ---
2
- name: microi-solution-quotation
3
- description: Create or revise compact professional Microi吾码 system solution and quotation Word documents. Use when a user asks for a Microi吾码 解决方案、项目建议书、技术路线、实施周期、市场预估价、优惠报价或一页式 DOCX 报价,尤其适用于低代码、V8引擎、PC/UniApp/微信小程序、物联网和系统集成项目。
4
- ---
5
-
6
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
-
8
- # Microi吾码解决方案与报价
9
-
10
- 生成客户可直接查看或发送的 `.docx` 方案报价。先基于真实需求和资料确定技术边界,再用紧凑商务版式呈现价值、技术路线、总价、周期和限制条件。
11
-
12
- ## 工作流程
13
-
14
- 1. 读取需求、PDF、截图、现有 Word 和项目资料;不把尚未确认的硬件协议、第三方接口或平台能力写成已具备。
15
- 2. 提炼项目目标、核心范围、Microi吾码实现方式、关键技术路线、交付物、风险与前置条件。
16
- 3. 确定项目名称、版本、日期、开发周期、市场预估价、优惠报价和报价有效期。用户已给值时必须原样采用。
17
- 4. 使用 `scripts/build_solution_quote.py` 生成 Word;复杂项目可按同一视觉规范扩展。
18
- 5. 把 DOCX 渲染为 PNG,检查页数、字体、表格、换行和溢出;修正后再交付。缺少 LibreOffice/soffice 时做结构检查,并在交付说明中明确未完成视觉渲染。
19
-
20
- ## 固定版式
21
-
22
- - 页面:A4 纵向。
23
- - 页边距:Word“窄”,上、下、左、右均为 `0.5 in / 1.27 cm / 720 DXA`。
24
- - 布局:紧凑、商务、可快速扫读。小项目默认一页;不要用缩小到 9pt 以下正文的方式硬塞内容。
25
- - 字体:中文优先 `Microsoft YaHei`,正文 9-10pt;标题 20-22pt;章节标题 10.5-12pt。
26
- - 大标题:`Microi吾码 {系统名称} 解决方案与报价`。
27
- - 副标题必须为:`AI 深度融合 V8引擎 的低代码平台,官网:https://microi.net`。
28
- - 标题下方放置版本、日期、开发周期、报价有效期;默认版本 `v1.0.0`,默认有效期 15 天。
29
- - 使用克制的吾码蓝色系;表格必须固定 DXA 宽度并设置单元格内边距,禁止依赖自动调整。
30
- - 页脚可放版本、日期和官网,不重复正文报价。
31
-
32
- ## 内容结构
33
-
34
- 按项目规模裁剪,但至少包含:
35
-
36
- 1. 项目目标:1 段说明客户要解决的问题和最终结果。
37
- 2. 解决方案:3-5 个具体范围,明确 Microi 表单引擎、V8 接口/事件、权限、PC 或移动端、第三方/硬件集成的分工。
38
- 3. 技术路线:用一行可读链路表达核心数据流;物联网项目必须区分“手机本地直连”和“公网云控”。
39
- 4. 交付范围:源代码/低代码元数据、接口、部署配置、联调、测试和简要操作说明。
40
- 5. 总价与周期:只展示市场预估总价、优惠总价和开发周期,不列模块价格明细。
41
- 6. 商务与技术边界:列出需求变更、第三方费用、硬件/云资源、协议资料、样机、账号资质等前置条件。
42
-
43
- ## 报价规则
44
-
45
- - 不生成模块级价格表,不把各功能拆分报价。
46
- - 同时展示:`市场预估价`、`优惠报价`、`开发周期`。
47
- - 优惠报价应比市场预估价低;所有金额使用人民币并明确“总价”。
48
- - 用户未提供价格时,可根据范围给出合理市场预估并标注为参考;硬件改造、协议逆向和第三方服务等不确定成本必须排除或写为“另行评估”。
49
- - 不猜测含税状态、付款比例、质保年限或合同条款;用户未指定时写“以正式合同/确认需求清单为准”。
50
-
51
- ## Microi吾码技术表达
52
-
53
- - 后台管理:优先使用表单引擎、菜单/权限和低代码元数据。
54
- - 业务逻辑:使用 V8 接口引擎、表单事件、定时任务和缓存,不把项目专属逻辑写入平台通用层。
55
- - 移动端:根据需求选择 UniApp/H5/微信小程序,并通过 HTTPS 调用后端接口。
56
- - 物联网:推荐 `小程序 -> HTTPS -> Microi V8 API -> MQTT/TLS -> 网关 -> 设备协议`;保留设备本地安全联锁、离线保护和操作审计。
57
- - 权限:菜单权限与接口业务权限同时设计;设备/客户数据必须做归属与行级校验。
58
-
59
- ## 生成脚本
60
-
61
- 准备 UTF-8 JSON 配置并运行:
62
-
63
- ```powershell
64
- uv run --with python-docx -- python microi.skills/microi-solution-quotation/scripts/build_solution_quote.py `
65
- --input .tmp/solution-quote.json `
66
- --output "AI-Project/客户/项目/Microi吾码系统解决方案与报价.docx"
67
- ```
68
-
69
- JSON 常用字段:`system_name`、`project_goal`、`solution_items`、`technical_route`、`deliverables`、`market_price`、`preferential_price`、`development_cycle`、`version`、`date`、`validity_days`、`boundary_note`。
70
-
71
- ## 工作区与交付检查
72
-
73
- - 临时脚本、JSON、渲染图和 QA 产物必须写入仓库根目录 `.tmp/`,禁止创建根目录 `tmp/`。
74
- - 用户认为提取结果有长期价值时,将其整理到用户指定的项目目录,不留在临时目录。
75
- - 大标题、副标题、版本、日期、周期、市场预估价和优惠报价全部存在。
76
- - 没有模块明细价格,没有占位符,没有把未确认能力写成已交付。
77
- - 小项目只有一页;无截断、重叠、孤行、超宽表格和过小字体。
78
- - 最终回复仅链接正式 DOCX,不链接临时 JSON、生成脚本、PNG 或 PDF QA 文件。
1
+ ---
2
+ name: microi-solution-quotation
3
+ description: Create or revise compact professional Microi吾码 system solution and quotation Word documents. Use when a user asks for a Microi吾码 解决方案、项目建议书、技术路线、实施周期、市场预估价、优惠报价或一页式 DOCX 报价,尤其适用于低代码、V8引擎、PC/UniApp/微信小程序、物联网和系统集成项目。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # Microi吾码解决方案与报价
9
+
10
+ 生成客户可直接查看或发送的 `.docx` 方案报价。先基于真实需求和资料确定技术边界,再用紧凑商务版式呈现价值、技术路线、总价、周期和限制条件。
11
+
12
+ ## 工作流程
13
+
14
+ 1. 读取需求、PDF、截图、现有 Word 和项目资料;不把尚未确认的硬件协议、第三方接口或平台能力写成已具备。
15
+ 2. 提炼项目目标、核心范围、Microi吾码实现方式、关键技术路线、交付物、风险与前置条件。
16
+ 3. 确定项目名称、版本、日期、开发周期、市场预估价、优惠报价和报价有效期。用户已给值时必须原样采用。
17
+ 4. 使用 `scripts/build_solution_quote.py` 生成 Word;复杂项目可按同一视觉规范扩展。
18
+ 5. 把 DOCX 渲染为 PNG,检查页数、字体、表格、换行和溢出;修正后再交付。缺少 LibreOffice/soffice 时做结构检查,并在交付说明中明确未完成视觉渲染。
19
+
20
+ ## 固定版式
21
+
22
+ - 页面:A4 纵向。
23
+ - 页边距:Word“窄”,上、下、左、右均为 `0.5 in / 1.27 cm / 720 DXA`。
24
+ - 布局:紧凑、商务、可快速扫读。小项目默认一页;不要用缩小到 9pt 以下正文的方式硬塞内容。
25
+ - 字体:中文优先 `Microsoft YaHei`,正文 9-10pt;标题 20-22pt;章节标题 10.5-12pt。
26
+ - 大标题:`Microi吾码 {系统名称} 解决方案与报价`。
27
+ - 副标题必须为:`AI 深度融合 V8引擎 的低代码平台,官网:https://microi.net`。
28
+ - 标题下方放置版本、日期、开发周期、报价有效期;默认版本 `v1.0.0`,默认有效期 15 天。
29
+ - 使用克制的吾码蓝色系;表格必须固定 DXA 宽度并设置单元格内边距,禁止依赖自动调整。
30
+ - 页脚可放版本、日期和官网,不重复正文报价。
31
+
32
+ ## 内容结构
33
+
34
+ 按项目规模裁剪,但至少包含:
35
+
36
+ 1. 项目目标:1 段说明客户要解决的问题和最终结果。
37
+ 2. 解决方案:3-5 个具体范围,明确 Microi 表单引擎、V8 接口/事件、权限、PC 或移动端、第三方/硬件集成的分工。
38
+ 3. 技术路线:用一行可读链路表达核心数据流;物联网项目必须区分“手机本地直连”和“公网云控”。
39
+ 4. 交付范围:源代码/低代码元数据、接口、部署配置、联调、测试和简要操作说明。
40
+ 5. 总价与周期:只展示市场预估总价、优惠总价和开发周期,不列模块价格明细。
41
+ 6. 商务与技术边界:列出需求变更、第三方费用、硬件/云资源、协议资料、样机、账号资质等前置条件。
42
+
43
+ ## 报价规则
44
+
45
+ - 不生成模块级价格表,不把各功能拆分报价。
46
+ - 同时展示:`市场预估价`、`优惠报价`、`开发周期`。
47
+ - 优惠报价应比市场预估价低;所有金额使用人民币并明确“总价”。
48
+ - 用户未提供价格时,可根据范围给出合理市场预估并标注为参考;硬件改造、协议逆向和第三方服务等不确定成本必须排除或写为“另行评估”。
49
+ - 不猜测含税状态、付款比例、质保年限或合同条款;用户未指定时写“以正式合同/确认需求清单为准”。
50
+
51
+ ## Microi吾码技术表达
52
+
53
+ - 后台管理:优先使用表单引擎、菜单/权限和低代码元数据。
54
+ - 业务逻辑:使用 V8 接口引擎、表单事件、定时任务和缓存,不把项目专属逻辑写入平台通用层。
55
+ - 移动端:根据需求选择 UniApp/H5/微信小程序,并通过 HTTPS 调用后端接口。
56
+ - 物联网:推荐 `小程序 -> HTTPS -> Microi V8 API -> MQTT/TLS -> 网关 -> 设备协议`;保留设备本地安全联锁、离线保护和操作审计。
57
+ - 权限:菜单权限与接口业务权限同时设计;设备/客户数据必须做归属与行级校验。
58
+
59
+ ## 生成脚本
60
+
61
+ 准备 UTF-8 JSON 配置并运行:
62
+
63
+ ```powershell
64
+ uv run --with python-docx -- python microi.skills/microi-solution-quotation/scripts/build_solution_quote.py `
65
+ --input .tmp/solution-quote.json `
66
+ --output "AI-Project/客户/项目/Microi吾码系统解决方案与报价.docx"
67
+ ```
68
+
69
+ JSON 常用字段:`system_name`、`project_goal`、`solution_items`、`technical_route`、`deliverables`、`market_price`、`preferential_price`、`development_cycle`、`version`、`date`、`validity_days`、`boundary_note`。
70
+
71
+ ## 工作区与交付检查
72
+
73
+ - 临时脚本、JSON、渲染图和 QA 产物必须写入仓库根目录 `.tmp/`,禁止创建根目录 `tmp/`。
74
+ - 用户认为提取结果有长期价值时,将其整理到用户指定的项目目录,不留在临时目录。
75
+ - 大标题、副标题、版本、日期、周期、市场预估价和优惠报价全部存在。
76
+ - 没有模块明细价格,没有占位符,没有把未确认能力写成已交付。
77
+ - 小项目只有一页;无截断、重叠、孤行、超宽表格和过小字体。
78
+ - 最终回复仅链接正式 DOCX,不链接临时 JSON、生成脚本、PNG 或 PDF QA 文件。
@@ -1,4 +1,4 @@
1
- interface:
2
- display_name: "Microi吾码解决方案与报价"
3
- short_description: "生成紧凑专业的吾码解决方案、周期与总价报价 Word"
4
- default_prompt: "使用 $microi-solution-quotation 生成一份紧凑的一页 Microi吾码系统解决方案与报价 Word。"
1
+ interface:
2
+ display_name: "Microi吾码解决方案与报价"
3
+ short_description: "生成紧凑专业的吾码解决方案、周期与总价报价 Word"
4
+ default_prompt: "使用 $microi-solution-quotation 生成一份紧凑的一页 Microi吾码系统解决方案与报价 Word。"