@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.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/LICENSE +21 -21
- package/README.md +71 -71
- package/assets/build-meta.json +6 -6
- package/assets/feature-matrix.json +138 -138
- package/assets/logo.svg +4 -4
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/codex-marketplace.json +20 -20
- package/scripts/mcp-codex-stdio-adapter.js +189 -189
- package/scripts/mcp-trae-windows-launcher.cmd +21 -21
- package/scripts/microi-cli-mcp.js +7 -7
- package/scripts/microi-cli.js +66 -65
- package/scripts/microi-codex-broker.js +450 -450
- package/scripts/microi-codex-router.js +618 -618
- package/scripts/microi-skills.meta.json +384 -384
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +3566 -3566
- package/skills/README.md +287 -287
- package/skills/ai-engine/SKILL.md +269 -265
- package/skills/ai-engine/agents/openai.yaml +4 -4
- package/skills/ai-engine/references/ai-employees.md +48 -48
- package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
- package/skills/ai-platform-governance/SKILL.md +177 -177
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
- package/skills/app-store/SKILL.md +525 -525
- package/skills/app-store/agents/openai.yaml +4 -4
- package/skills/business-blueprint/SKILL.md +193 -193
- package/skills/datasource-engine/SKILL.md +93 -93
- package/skills/datasource-engine/agents/openai.yaml +4 -4
- package/skills/dos-orm/SKILL.md +97 -97
- package/skills/dos-orm/references/api-reference.md +229 -229
- package/skills/email-engine/SKILL.md +81 -81
- package/skills/email-engine/references/v8-email.md +34 -34
- package/skills/job-engine/SKILL.md +176 -176
- package/skills/job-engine/agents/openai.yaml +4 -4
- package/skills/message-notification/SKILL.md +156 -156
- package/skills/message-notification/agents/openai.yaml +5 -5
- package/skills/message-notification/references/contracts.md +102 -102
- package/skills/microi/SKILL.md +14 -14
- package/skills/microi-ai-app-auth.js +652 -652
- package/skills/microi-ai-application/SKILL.md +115 -115
- package/skills/microi-ai-application/agents/openai.yaml +4 -4
- package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
- package/skills/microi-client-frontend/SKILL.md +244 -244
- 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
- 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
- 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
- package/skills/microi-codex/SKILL.md +102 -102
- package/skills/microi-codex-installer/SKILL.md +231 -231
- package/skills/microi-codex-installer/agents/openai.yaml +7 -7
- package/skills/microi-datasource-mapping/SKILL.md +122 -122
- package/skills/microi-db-schema/SKILL.md +175 -175
- package/skills/microi-db-schema/agents/openai.yaml +4 -4
- package/skills/microi-db-schema/references/core-tables.md +695 -695
- package/skills/microi-db-schema/references/form-component-options.md +256 -256
- package/skills/microi-db-schema/references/schema-overview.md +202 -202
- package/skills/microi-db-schema/references/schema.md +646 -646
- package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
- package/skills/microi-deployment/SKILL.md +221 -221
- package/skills/microi-deployment/references/deployment-matrix.md +109 -109
- package/skills/microi-docs-coverage/SKILL.md +133 -133
- package/skills/microi-docs-coverage/references/capability-map.md +91 -91
- package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
- package/skills/microi-form-engine/SKILL.md +333 -333
- package/skills/microi-form-engine/references/component-catalog.md +218 -218
- package/skills/microi-form-engine/references/data-source-events.md +124 -124
- package/skills/microi-form-layout/SKILL.md +205 -205
- 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
- package/skills/microi-frontend-sdk/SKILL.md +194 -194
- 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
- package/skills/microi-left-right-layout/SKILL.md +141 -141
- package/skills/microi-microservice/SKILL.md +326 -324
- package/skills/microi-microservice/references/runtime-delivery.md +278 -278
- package/skills/microi-mobile-app-quality/SKILL.md +185 -185
- 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
- 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
- package/skills/microi-solution-quotation/SKILL.md +78 -78
- package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
- package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
- package/skills/microi-sso/SKILL.md +92 -92
- package/skills/microi-sso/references/acceptance.md +49 -49
- package/skills/microi-sso/references/configuration-and-security.md +53 -53
- package/skills/microi-sso/references/inbound.md +53 -53
- package/skills/microi-sso/references/outbound.md +39 -39
- package/skills/microi-system-delivery/SKILL.md +137 -137
- 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
- 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
- package/skills/microi-ui/SKILL.md +192 -192
- 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
- package/skills/microi-uniapp-frontend/SKILL.md +193 -193
- 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
- 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
- package/skills/microi.v8.js +1921 -1921
- package/skills/module-engine/SKILL.md +255 -255
- package/skills/module-engine/references/module-config.md +204 -204
- package/skills/ocr-engine/SKILL.md +113 -113
- package/skills/ocr-engine/agents/openai.yaml +4 -4
- package/skills/page-engine/SKILL.md +206 -206
- package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
- 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
- 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
- package/skills/performance-testing/SKILL.md +221 -221
- package/skills/playwright-e2e/SKILL.md +196 -196
- 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
- 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
- package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
- package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
- package/skills/print-engine/SKILL.md +259 -259
- package/skills/production-readonly-audit/SKILL.md +41 -41
- package/skills/report-engine/SKILL.md +71 -71
- package/skills/report-engine/agents/openai.yaml +4 -4
- package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
- package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
- package/skills/scripts/sync-embedded-skills.mjs +46 -46
- package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
- package/skills/search-engine/SKILL.md +75 -75
- package/skills/search-engine/agents/openai.yaml +4 -4
- package/skills/spider-engine/SKILL.md +190 -190
- package/skills/system-observability/SKILL.md +248 -248
- package/skills/system-observability/references/memory-incident-triage.md +77 -77
- package/skills/translate-engine/SKILL.md +140 -140
- package/skills/translate-engine/agents/openai.yaml +4 -4
- package/skills/ui-design/SKILL.md +223 -223
- package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
- package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
- package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
- package/skills/ui-design/references/design-pattern-library.md +184 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/motion-and-media.md +78 -78
- package/skills/ui-design/references/product-flow-recipes.md +94 -94
- 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
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
- 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
- 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
- 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
- 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
- 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
- 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
- package/skills/uniapp-mall-assets/SKILL.md +176 -176
- package/skills/unity-integration/SKILL.md +171 -171
- package/skills/unity-integration/agents/openai.yaml +4 -4
- package/skills/unity-integration/references/ai-app-delivery.md +119 -119
- package/skills/unity-integration/references/sdk-api.md +82 -82
- package/skills/unity-integration/references/toolbox-migration.md +66 -66
- package/skills/unity-integration/references/webgl-hosting.md +57 -57
- package/skills/v8-api-config/SKILL.md +388 -388
- package/skills/v8-cache-pattern/SKILL.md +312 -312
- package/skills/v8-crud-api/SKILL.md +178 -178
- 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
- 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
- package/skills/v8-debugging/SKILL.md +284 -284
- package/skills/v8-explorer-tree/SKILL.md +228 -228
- package/skills/v8-export-import/SKILL.md +219 -219
- 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
- package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
- 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
- package/skills/v8-file-upload/SKILL.md +284 -284
- 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
- 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
- package/skills/v8-formengine-http/SKILL.md +238 -238
- package/skills/v8-frontend-events/SKILL.md +180 -180
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
- package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
- package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
- package/skills/v8-http-integration/SKILL.md +182 -182
- package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
- 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
- package/skills/v8-image-processing/SKILL.md +190 -190
- package/skills/v8-image-processing/agents/openai.yaml +4 -4
- package/skills/v8-image-processing/references/api-reference.md +623 -623
- package/skills/v8-menu-buttons/SKILL.md +186 -186
- 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
- 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
- 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
- package/skills/v8-mongodb/SKILL.md +200 -200
- package/skills/v8-mq-mqtt/SKILL.md +176 -176
- package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
- package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
- package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
- package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
- package/skills/v8-security/SKILL.md +210 -210
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
- package/skills/v8-sql-query/SKILL.md +302 -302
- package/skills/v8-table-event/SKILL.md +176 -176
- 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
- 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
- package/skills/v8-tcp-integration/SKILL.md +147 -147
- package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
- package/skills/v8-template-engine/SKILL.md +167 -167
- package/skills/v8-utilities/SKILL.md +104 -104
- package/skills/v8-utilities/references/client-api-index.md +143 -143
- package/skills/v8-utilities/references/platform-http-routes.md +83 -83
- package/skills/v8-utilities/references/server-api-index.md +188 -188
- package/skills/v8-workflow/SKILL.md +252 -252
- 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
- package/skills/v8-workflow/references/workflow-configuration.md +49 -49
- package/skills/vision-engine/SKILL.md +160 -160
- package/skills/vision-engine/agents/openai.yaml +4 -4
- package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
- package/skills/workspace-conventions/SKILL.md +273 -273
- 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
- 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
- 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,193 +1,193 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: microi-uniapp-frontend
|
|
3
|
-
description: Microi 吾码 UniApp/H5 前端通用规范。用于构建或修复任何 Microi uni-app/移动端 H5 项目,覆盖上传资源渲染、头像、骨架屏、移动安全区、tabBar、固定底栏和明确业务素材选择。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
-
|
|
8
|
-
# Microi UniApp 前端通用规范
|
|
9
|
-
|
|
10
|
-
本 Skill 适用于任何 Microi 吾码 UniApp/H5 项目,包括商城、OA、ERP、MES、CRM、互联网项目、预约项目等。不要把规则写成某一个业务应用专属规范。
|
|
11
|
-
|
|
12
|
-
## 图片上传默认参数(强制)
|
|
13
|
-
|
|
14
|
-
UniApp/H5/小程序必须通过项目统一 `microi.v8.js` 的 `V8.uploadFile` / `V8.uploadFiles` 上传图片。调用方省略 `options.preview` 时,SDK 必须发送 `Preview=true` 并默认使用 `img` 路径;只有显式 `preview:false` 才允许关闭。服务端仍是最终事实源:即使旧客户端完全不传该字段,也要默认压缩到约 `500 KB`、最长边约 `1920 px`,并在 HDFS 私有桶保留一份 `_origin` 原图。页面不得为了“上传成功”自行改成 `preview:false`,也不得把私有原图或临时签名地址保存进业务字段。
|
|
15
|
-
|
|
16
|
-
动态表单上传还必须把控件已有的文件访问上下文透传为 `formFieldContext`:至少包含 `FormEngineKey + FieldId + SysMenuId`,编辑时再带 `FormDataId`,TableChild 再带 `_TableChildAuth`。后端回读 `diy_field.Config` 后决定“禁止匿名访问”与真实桶;普通用户不能被一刀切为私有桶,客户端自己传 `Limit=false` 也不能放宽私有字段。没有字段上下文的聊天、打卡、临时业务上传仍按普通私有上传处理。
|
|
17
|
-
|
|
18
|
-
## 平台方通用 App 登录连接器(明确例外)
|
|
19
|
-
|
|
20
|
-
登录页默认不得展示 ApiBase、OsClient 或调试配置;但用户明确要求、且安装包由 Microi 平台方作为多租户聚合客户端发布时,允许仅在 `APP-PLUS` 登录页提供通用连接器。协议必须使用固定 `https://` / `http://` 下拉框,地址框禁止重复输入协议,HTTPS 默认,HTTP 显示明文风险并二次确认;H5、小程序和客户专属包不得因此自动开放。候选地址先匿名读取 `GetSysConfig`,验证成功后再持久化。真正切换时必须清除旧 DiyToken、用户、SignalR、菜单/元数据/页面缓存,按 `ApiBase + OsClient` 隔离记住的账号及 RSA 密文,并用端点代次拒绝切换前的迟到响应。支持任意 HTTP 时,最终 IPA 必须显式包含 ATS 例外,Android 安装包必须显式包含 cleartext 例外;不需要任意 HTTP 的正式包应保持平台默认安全策略,iOS ATS 例外还必须在 App Store 审核中说明。
|
|
21
|
-
|
|
22
|
-
<!-- microi-progressive:begin -->
|
|
23
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-000 sha256=ecb0fc85b5c3b15ac79c9049ca86de8c586d4ce3a6c975255464069d89f87ac4 -->
|
|
24
|
-
## 移动端质量门禁必须先读
|
|
25
|
-
|
|
26
|
-
创建、重构或修复任何 Microi 移动端项目前,必须同时应用 `microi.skills/microi-mobile-app-quality/SKILL.md`。该 Skill 中的底部导航真实图标、重要按钮图标化、登录 API 校验、微信手机号快捷登录、后台二级菜单和页面动效要求,属于交付验收条件,不是可选优化。
|
|
27
|
-
|
|
28
|
-
<!-- /microi-progressive:chunk -->
|
|
29
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=b195b92de6175b7f184257a0ba3b53b94b8a6aaee7ab42fbb05fe1f5338ba097 -->
|
|
30
|
-
## 标准产品、视图协议与租户扩展
|
|
31
|
-
|
|
32
|
-
动态表单的组织/树字段优先复用原生 `mci-native-field` 树形下拉与 `native-tree-options.mjs`,无需为小程序把后台 `Department` 改为普通 Select。读取 `Config.<Component>.Multiple/EmitPath`:组织单选叶值保存 Id,多选叶值保存 Id 数组,路径模式保存完整路径/路径数组,数组统一 JSON 序列化。支持祖先展开、搜索、清空、禁用、重试和只读回显;数据源旧模板不能代替当前授权组织树。业务字段联动放租户扩展,不执行任意前端 V8;验收覆盖保存格式、旧数据回显、失败/迟到响应及最近公司祖先联动。
|
|
33
|
-
|
|
34
|
-
Microi 标准小程序必须采用“平台内核 + 版本化元数据 + Profile + 租户插件”架构,不能把某个交付项目直接写死成平台产品:
|
|
35
|
-
|
|
36
|
-
- `src/platform/`、通用 `mci-*` 组件、动态模块页和动态表单页只实现平台能力,不得出现租户表名、字段名、品牌文案、素材或客户路由。
|
|
37
|
-
- `src/tenants/<tenant>/` 存放客户专属业务组合、首页统计、表单联动、子表规则、扫码/定位/相机和复杂原生流程;`profiles/<id>/` 管理 OsClient、API、品牌、功能开关、路由和真实编译范围。
|
|
38
|
-
- `src/generated/`、`pages.json`、`manifest.json` 等 Profile 产物由脚本生成,不能作为人工定制入口。多人合并冲突时以 Profile 与租户源码为准重新生成。
|
|
39
|
-
- 普通 CRUD 必须优先使用授权后的 `sys_menu + diy_table + diy_field` 动态渲染;只有原生能力或客户独有的复杂组合才增加租户扩展。
|
|
40
|
-
|
|
41
|
-
统一视图协议归属 `sys_menu`。使用 `EnableViewSchema`、`ViewSchema`、`ViewSchemaVersion`、`ViewConfigVersion` 等明确物理字段保存 `List/Card/Detail/Edit`、`PC/Mobile/All`、角色视图、Hero、MetricStrip、ActionGrid 和 ResponsiveSection。`diy_table/diy_field/sys_menu.DiyConfig` 已废弃,禁止继续读取或写入。
|
|
42
|
-
|
|
43
|
-
- 后台新增字段或修改名称、顺序、显隐、组件、校验、数据源和分组后,客户端必须通过版本指纹刷新定义,无需重新发版。
|
|
44
|
-
- 表单元数据必须通过 `V8.FormEngine.GetDiyTableModel/GetDiyFieldList` 访问当前 FormEngine 缓存入口,并携带真实菜单授权上下文;页面和控件不得用普通 `GetFormData/GetTableData` 直查受保护的 `diy_table/diy_field`,也不得散落裸元数据接口 URL。
|
|
45
|
-
- ViewSchema 未配置、配置不完整或网络暂时失败时,必须回退到菜单移动字段和完整 `diy_field` 定义;定制详情还必须把未显式编排的新字段追加到折叠分组,不能静默丢字段。
|
|
46
|
-
- 列表、详情、编辑和保存请求应携带真实授权 `_SysMenuId`;客户端不能自行声明角色、数据范围或表权限,服务端仍是最终权限边界。
|
|
47
|
-
- 小程序不得下载或执行任意前端 V8,不得使用 `eval/new Function`。字段显隐和联动使用白名单声明式规则,按钮使用 ActionSchema,复杂事务和校验进入 ApiEngine 或后端表单事件。
|
|
48
|
-
- ActionSchema 只能描述文字、图标、颜色、确认提示、参数映射、ApiEngineKey、原生 ActionType 和成功后的刷新/跳转;扫码、定位、拍照、拨号、导航等由受控原生适配器执行。
|
|
49
|
-
|
|
50
|
-
仓库必须提供 AI 与人工协作约束文件、租户脚手架、Profile 构建/同步命令和架构检查。平台层改动至少同时构建标准 Profile 与默认交付 Profile;租户视觉改动还要执行多视口截图回归。这样其他同事使用 Codex、Claude、Copilot、Cursor 等工具继续开发时,会先读取相同规则,而不是依赖某次对话记忆。
|
|
51
|
-
|
|
52
|
-
<!-- /microi-progressive:chunk -->
|
|
53
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-002 sha256=76ebf3985d21fbbc5d86093b95bdf348e526e3670da9bb6827b5e1a7184e617b -->
|
|
54
|
-
## H5 预览壳与底部导航强制规则
|
|
55
|
-
|
|
56
|
-
- 桌面浏览器允许使用 `Microi UniApp H5 Preview` 手机壳帮助用户理解移动端比例。
|
|
57
|
-
- 真机、窄屏浏览器以及 PC DevTools 移动设备仿真(视口宽度小于等于 `767px`)必须自动去掉手机壳标题、外边距、圆角、边框和阴影,内容铺满 `100vw × 100vh`;不得在手机屏幕里再套一层模拟手机。
|
|
58
|
-
- AI 应用预览编译器必须为每个底部菜单渲染真实 SVG/本地图标和文字,不能只输出文字、单汉字、emoji 或空白占位。原生 uni-app `tabBar` 仍使用纳入版本管理的本地 PNG `iconPath / selectedIconPath`。
|
|
59
|
-
- 自动化验收必须同时使用桌面视口与移动视口截图:桌面端断言手机壳存在,移动端断言 `.phone-status` 隐藏且 `.phone` 无圆角、无边框、宽高铺满;每个底部菜单的图标元素和文字都必须可见、可点击。
|
|
60
|
-
|
|
61
|
-
<!-- /microi-progressive:chunk -->
|
|
62
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-003 sha256=5cedd05cb29746019a92db56a21123718fde23d5d9df4b8064dfc260bc89ee05 -->
|
|
63
|
-
## 登录页与手机号快捷登录
|
|
64
|
-
|
|
65
|
-
- 登录页必须是直接登录面,不要默认做“员工登录 / 客户登录”身份 Tab 切换,除非用户明确要求。默认展示系统账号密码登录,同时提供客户手机号快捷登录入口。
|
|
66
|
-
- 账号密码登录必须先检查项目本地 SDK 实际导出,常见是 `V8.Login(param)` 或 `/api/SysUser/Login`。禁止凭空写 `V8.Login.Login(...)` 这类未验证子对象。
|
|
67
|
-
- 登录、接口引擎、FormEngine、上传等所有请求头必须做大小写不敏感去重;`osclient` 只能发送一个运行期值,例如 `demo`,禁止同时传 `OsClient` 与 `osclient` 导致网络面板出现 `demo, demo`。
|
|
68
|
-
- 账号密码登录只有在同时拿到成功码、有效 token 和有效用户 `Id` 时才算成功。Microi 登录 token 可能在响应头 `authorization`,用户信息可能在响应体 `Data`;两者任一缺失都要清理 SDK token、本地用户缓存和 session。
|
|
69
|
-
- 恢复本地会话时必须重新校验 token 和用户 `Id`,禁止出现页面显示 `admin` 但状态仍是“未登录”的半登录状态。
|
|
70
|
-
- 账号密码登录调用 `/api/SysUser/login`、`/api/SysUser/Login` 或 `V8.Login(param)` 前,必须读取 `/apiengine/platform-sys-config` 或 `V8.GetSysConfig(true)`,并根据 `Sys_Config.EnableCaptcha` 决定是否显示图形验证码。判断函数必须兼容 `1`、`true`、`'1'`、`'true'`,不要直接 `!!cfg.EnableCaptcha`。
|
|
71
|
-
- 开启验证码时,页面必须通过 `GET /api/Captcha/GetCaptcha` 获取验证码图片,读取响应头 `captchaid`,提交账号登录时传 `_CaptchaId` 和 `_CaptchaValue`;登录失败后清空输入并刷新验证码。未开启验证码时不显示验证码,不传空验证码字段。
|
|
72
|
-
- 微信小程序手机号快捷登录必须使用 `<button open-type="getPhoneNumber">`,通过 `@getphonenumber` 获取 `detail.code`,并重新调用 `uni.login({ provider:'weixin' })` 获取新的 `LoginCode`。前端不能假设能直接拿到手机号明文。
|
|
73
|
-
- H5/App 可提供手机号输入兜底,但必须确认后端接口支持 `Phone` 登录;微信小程序优先走 `Code + LoginCode`。
|
|
74
|
-
- 登录按钮、去登录按钮、手机号授权按钮必须是图标 + 文案按钮,具备 loading、disabled/pressed 反馈,且原生 button 默认边框要清掉。
|
|
75
|
-
- 体验版授权登录必须保留可诊断错误:请求层归一化 `uni.request.fail.errMsg`、HTTP 状态和接口 `Msg`,登录页用模态框完整展示“阶段 + 原因 + 追踪号”。后端接口引擎按阶段写脱敏系统日志;不能只在前端 catch 后显示固定“手机号登录失败”。
|
|
76
|
-
- 小程序调用手机号快速验证组件的前置页、按钮、弹窗、分享标题和失败提示不得出现“微信”“微信官方”“微信登录”“一键登录”等可能混淆腾讯官方的文案,也不得展示微信官方 Logo、相似绿色气泡图标或仿官方品牌元素。统一使用“手机号快捷登录”“手机号快速验证”等中性业务文案,只展示应用自身品牌 Logo。
|
|
77
|
-
- 微信小程序构建后必须扫描登录页源码以及 `dist/build/mp-weixin/pages/login/` 产物,并截图核对手机号快速验证前置页;命中上述混淆文案、官方图形或近似元素时必须阻止上传和提审,不能只检查按钮主文案而漏掉说明文字、错误弹窗或分享标题。
|
|
78
|
-
|
|
79
|
-
<!-- /microi-progressive:chunk -->
|
|
80
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-004 sha256=cc25e3d896e6f7349a7a7e93b8025ee797bf9810e60214eb95e41d75aa083422 -->
|
|
81
|
-
## 微信小程序全页面分享
|
|
82
|
-
|
|
83
|
-
- 创建或维护 UniApp 微信小程序时,默认把好友转发与朋友圈分享视为页面基础能力;按 `pages.json` 全量路由逐页接入,不等待用户额外提出。
|
|
84
|
-
- Vue3 `<script setup>` 页面直接导入 `onShareAppMessage`、`onShareTimeline` 并注册处理函数。可以复用项目级 payload 工具,但生命周期导入必须出现在页面源码中,确保 uni-app 编译器注册页面能力。
|
|
85
|
-
- `onShareAppMessage` 返回业务标题和完整页面 `path`;`onShareTimeline` 返回业务标题和当前页 `query`。资讯、报告等内容页可返回符合平台尺寸要求的 `imageUrl`。
|
|
86
|
-
- 分享参数保留页面定位所需的 Id、分类和公开 ShareToken,统一过滤 Authorization、AccessToken、CustomerToken、手机号授权码、LoginCode、OpenId、验证码等敏感参数。
|
|
87
|
-
- 登录页、员工页、管理页等受保护页面同样可分享。接收者打开后由 session/角色守卫展示登录或无权限提示,不得因页面需要登录就调用 `hideShareMenu`。
|
|
88
|
-
- 验收不能只看首页右上角。用脚本比较 `pages.json` 路由数量与源码/微信构建产物中的两种分享生命周期数量,并在体验版抽测公开页、登录页和受保护详情页。
|
|
89
|
-
|
|
90
|
-
<!-- /microi-progressive:chunk -->
|
|
91
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-005 sha256=d6f78d95dc0b0b042f0d0c525a9cb5295a0324f1c70d6f480c93f2e03d315cec -->
|
|
92
|
-
## 首屏 Hero 与浮动面板验收
|
|
93
|
-
|
|
94
|
-
- 移动端首屏 Hero 标题必须按真实中文文案调字号和行高,不能为了“震撼”把业务入口标题做得过大,导致一行半、孤字换行或压住按钮。
|
|
95
|
-
- Hero 下方如果有浮动快捷入口面板,必须给 Hero 底部预留按钮安全区,并控制面板负 margin;面板只能覆盖装饰留白,不能盖住“立即登录 / 查看报告 / 提交”等主按钮的圆角、阴影或点击区域。
|
|
96
|
-
- 交付前至少检查 375px 与 430px 宽度首屏截图,确认标题、主按钮、次按钮、浮动面板、第二块内容没有重叠、裁切或不美观换行。
|
|
97
|
-
|
|
98
|
-
<!-- /microi-progressive:chunk -->
|
|
99
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-006 sha256=a39f7e4fb42c6d290463a9e40eed03235e4afe063d60208b5a3e73a170fbc39f -->
|
|
100
|
-
## 资源 URL 必须集中解析
|
|
101
|
-
|
|
102
|
-
数据库中的图片、附件、头像、Logo、卡面图、单据图片等字段常见保存形式:
|
|
103
|
-
|
|
104
|
-
- 绝对地址:`https://...`
|
|
105
|
-
- API 本地文件路由:`/file/...`
|
|
106
|
-
- 对象存储相对路径:`/tenant/module/file.jpg` 或 `tenant/module/file.jpg`
|
|
107
|
-
- 上传组件 JSON:`[{"Path":"..."}]`、`{"Path":"..."}`、`{"FilePathName":"..."}`,也可能已经是对象/数组而不是字符串
|
|
108
|
-
- 历史脏数据或第三方占位图
|
|
109
|
-
|
|
110
|
-
页面模板不能直接写 `<image :src="row.Avatar">`、`<image :src="row.MainImg">`。必须在项目的 API/资源工具模块里提供统一解析函数,例如 `resolveAssetUrl`、`sanitizeAssetUrl`、`resolveFileUrl`、`resolveAvatarUrl`,并让页面只绑定已经归一化后的最终 URL。
|
|
111
|
-
|
|
112
|
-
资源解析函数必须先按 `microi.skills/v8-file-upload/SKILL.md` 的 `normalizeUploadValue` 思路处理 `ImgUpload` / `FileUpload` 字段:空值、`正在上传中...`、旧字符串路径、JSON 字符串对象、JSON 字符串数组、运行时对象、运行时数组都要兼容;取出 `Path` 后再进入 FileServer/API/私有签名 URL 逻辑。
|
|
113
|
-
|
|
114
|
-
推荐规则:
|
|
115
|
-
|
|
116
|
-
- `http(s)://`、`data:`、`blob:` 原样返回。
|
|
117
|
-
- `/file/...` 走 API 服务。
|
|
118
|
-
- `/tenant/...`、`tenant/...` 等对象存储路径走 `V8.SysConfig.FileServer` 对应的文件服务器/CDN。
|
|
119
|
-
- 私有文件使用后端签名 URL,例如 `V8.Method.GetPrivateFileUrl({ FilePathName })`,失败时再回退到公开文件服务器路径。
|
|
120
|
-
- 第三方占位图、已失效临时地址、空字符串统一清理为空,交给 UI 占位态。
|
|
121
|
-
|
|
122
|
-
<!-- /microi-progressive:chunk -->
|
|
123
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-007 sha256=3894454672b6bde6f4a7b329103c9418804f4594b7e3505617590ebea5f136ab -->
|
|
124
|
-
## 移动端大资源优先使用租户 HDFS/CDN
|
|
125
|
-
|
|
126
|
-
定制 UniApp/H5/小程序中的大图、视频、音频、字体和大型第三方静态文件,默认不要塞进主包。应先确认目标 `OsClient`,通过该租户 MCP/HDFS 上传,再以 `sys_config.FileServer + Path` 的 CDN/公有桶地址引用;合同、证件等敏感资源仍必须使用私有桶和临时签名 URL。
|
|
127
|
-
|
|
128
|
-
- 首页 Hero、商品占位图、活动 Banner、引导音频、演示视频等公开资源使用 `Limit:false`,上传后必须以匿名请求验证最终 URL 返回 `200`、正确 `Content-Type` 和非空内容。
|
|
129
|
-
- tabBar 图标、返回/关闭等小型交互图标、启动阶段必须离线可用的关键素材可以留在主包;不能为了远程化导致断网时连导航和基本操作都不可识别。
|
|
130
|
-
- 上传前按场景做适度压缩和尺寸裁剪,同时保存原始素材或可重复生成源;禁止为了通过包体扫描而盲目把图片、音频压到明显失真、文字模糊或播放体验受损。
|
|
131
|
-
- 压缩后必须在至少 375px、430px 和目标小程序设备截图中核对清晰度、裁切、首屏加载与失败占位;音视频还要抽听/抽播。质量不合格时优先调整编码、分辨率和缓存策略,而不是继续极端压缩。
|
|
132
|
-
- 项目只能通过统一配置或资源解析器保存 CDN 地址,页面不得散落硬编码 FileServer;切换环境或租户时必须能整体替换。
|
|
133
|
-
- CDN 资源必须设置加载失败占位或降级路径。构建验收同时检查小程序主包资源总量、单资源大小、远程域名白名单和真实 CDN 可达性,不能只看源码文件大小。
|
|
134
|
-
- 小程序发布前必须扫描实际构建目录,而不只扫描 `src`:单个非离线关键资源超过 `256 KB` 时默认迁移 HDFS/CDN;主包静态资源达到 `1.5 MB` 或距离平台硬上限不足 `300 KB` 时必须停止上传,先瘦身或分包。确需本地保留的例外要记录离线必要性、大小和验证证据。
|
|
135
|
-
- HDFS 迁移顺序固定为“保留/归档原始素材 -> 按真实展示尺寸压缩 -> 上传当前租户公有 HDFS -> 保存相对 `Path` -> 运行期通过 `SysConfig.FileServer` 解析 -> 匿名 GET 回读”。回读必须断言 `200`、正确 `Content-Type`、非空大小,重要资源再比对 SHA-256;不能把上传接口返回成功当成完成。
|
|
136
|
-
- 原始高清图、视频母版、设计源文件不得继续放在会被 UniApp 收集的 `src/static`、分包目录或其它构建入口中;应移到项目资料/设计源目录。主包仅保留小于门禁的轻量失败占位图和离线关键图标。
|
|
137
|
-
|
|
138
|
-
<!-- /microi-progressive:chunk -->
|
|
139
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-008 sha256=d7b2b5c8ffe5c1dd8f51eb7d5e8368dba6813c2fa25d39dd3fb8f6659922b5b9 -->
|
|
140
|
-
## 头像必须异步统一解析
|
|
141
|
-
|
|
142
|
-
头像字段比普通图片更容易混合出现上传 JSON、私有路径、相对路径、历史字段名和脏数据。列表页、详情页、业务记录、审批记录、团队/会员卡片、聊天/消息等头像场景都必须走同一个头像解析入口。
|
|
143
|
-
|
|
144
|
-
正确模式:
|
|
145
|
-
|
|
146
|
-
```js
|
|
147
|
-
const rawAvatar = row.OwnerAvatar || row.UserAvatar || row.Avatar || member.Avatar || '';
|
|
148
|
-
row.OwnerAvatarUrl = await resolveAvatarUrl(rawAvatar);
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
模板只绑定最终字段:
|
|
152
|
-
|
|
153
|
-
```vue
|
|
154
|
-
<image v-if="row.OwnerAvatarUrl" :src="row.OwnerAvatarUrl" mode="aspectFill" />
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
禁止在模板中临时拼接文件服务器,禁止每个页面各写一套头像解析,禁止只在能查到关联用户时才解析接口已经返回的头像字段。
|
|
158
|
-
|
|
159
|
-
<!-- /microi-progressive:chunk -->
|
|
160
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-009 sha256=0270fbc5a2ee0d20a4d1d2f2a9c7fc7304e18402d282e1efcf860bd31db9fcb0 -->
|
|
161
|
-
## 移动端富文本图文排版
|
|
162
|
-
|
|
163
|
-
商品详情、公告详情、活动说明、文章正文、协议说明等富文本在移动端渲染时,图片和文字不能使用同一套留白规则。
|
|
164
|
-
|
|
165
|
-
- 主图、详情长图、海报图可以 `width:100%` / `display:block` 满宽展示,不额外加左右 padding,避免图片显得缩小或边缘参差。
|
|
166
|
-
- 文字内容必须有独立容器,设置 `padding: 16px 18px`(或项目设计体系中的等价间距)、`box-sizing:border-box`、稳定 `line-height`,不能让标题、段落贴着卡片或屏幕边缘。
|
|
167
|
-
- 富文本生成器输出 HTML 时,推荐结构是“图片块 + 文本块”:图片块只包图片,文本块包标题、段落、规格说明、温馨提示。
|
|
168
|
-
- 段落使用 `margin:0 0 6px` 或相近节奏,最后一段可以去掉底部 margin;不要靠 `<br>` 堆间距。
|
|
169
|
-
- 移动端截图验收必须看文字是否贴边、是否横向溢出、是否被底部固定按钮遮挡。
|
|
170
|
-
|
|
171
|
-
参考结构:
|
|
172
|
-
|
|
173
|
-
```html
|
|
174
|
-
<section class="mci-rich-detail" style="background:#fff;overflow:hidden;">
|
|
175
|
-
<p style="margin:0;text-align:center;">
|
|
176
|
-
<img src="..." style="display:block;width:100%;max-width:100%;height:auto;" />
|
|
177
|
-
</p>
|
|
178
|
-
<div style="padding:16px 18px 18px;box-sizing:border-box;line-height:1.7;color:#1f2937;font-size:15px;">
|
|
179
|
-
<h2 style="margin:0 0 10px;font-size:22px;line-height:1.28;">商品标题</h2>
|
|
180
|
-
<p style="margin:0 0 6px;">所属专区:精选专区</p>
|
|
181
|
-
<p style="margin:0;">商品图片与规格信息以实际维护为准。</p>
|
|
182
|
-
</div>
|
|
183
|
-
</section>
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
<!-- /microi-progressive:chunk -->
|
|
187
|
-
## 详细参考路由(渐进披露)
|
|
188
|
-
|
|
189
|
-
仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
|
|
190
|
-
|
|
191
|
-
- [references/progressive-01-移动端分类-双栏列表独立滚动.md](references/progressive-01-移动端分类-双栏列表独立滚动.md):移动端分类/双栏列表独立滚动;数据页必须使用骨架屏 Loading;移动端安全区必须兼容 iOS 与 Android;微信自定义组件的点击与拖动事件必须真机链路验收;列表型资料页必须提供完整管理动作;移动端资产/奖励流水展示;H5 在 PC 浏览器必须自动模拟移动端
|
|
192
|
-
- [references/progressive-02-关键业务资产不得默认选中.md](references/progressive-02-关键业务资产不得默认选中.md):关键业务资产不得默认选中;账号角色与会话状态;数字、主题、上传与消息;图片上传必须支持替换与预览;组件复用与页面去重;验收要求;Microi 前端 SDK 必须接入;MCI-UI Mobile 必须优先使用;登录、图标与主题补充规范;UniApp 上传路径与 Header 规则
|
|
193
|
-
<!-- microi-progressive:end -->
|
|
1
|
+
---
|
|
2
|
+
name: microi-uniapp-frontend
|
|
3
|
+
description: Microi 吾码 UniApp/H5 前端通用规范。用于构建或修复任何 Microi uni-app/移动端 H5 项目,覆盖上传资源渲染、头像、骨架屏、移动安全区、tabBar、固定底栏和明确业务素材选择。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
+
|
|
8
|
+
# Microi UniApp 前端通用规范
|
|
9
|
+
|
|
10
|
+
本 Skill 适用于任何 Microi 吾码 UniApp/H5 项目,包括商城、OA、ERP、MES、CRM、互联网项目、预约项目等。不要把规则写成某一个业务应用专属规范。
|
|
11
|
+
|
|
12
|
+
## 图片上传默认参数(强制)
|
|
13
|
+
|
|
14
|
+
UniApp/H5/小程序必须通过项目统一 `microi.v8.js` 的 `V8.uploadFile` / `V8.uploadFiles` 上传图片。调用方省略 `options.preview` 时,SDK 必须发送 `Preview=true` 并默认使用 `img` 路径;只有显式 `preview:false` 才允许关闭。服务端仍是最终事实源:即使旧客户端完全不传该字段,也要默认压缩到约 `500 KB`、最长边约 `1920 px`,并在 HDFS 私有桶保留一份 `_origin` 原图。页面不得为了“上传成功”自行改成 `preview:false`,也不得把私有原图或临时签名地址保存进业务字段。
|
|
15
|
+
|
|
16
|
+
动态表单上传还必须把控件已有的文件访问上下文透传为 `formFieldContext`:至少包含 `FormEngineKey + FieldId + SysMenuId`,编辑时再带 `FormDataId`,TableChild 再带 `_TableChildAuth`。后端回读 `diy_field.Config` 后决定“禁止匿名访问”与真实桶;普通用户不能被一刀切为私有桶,客户端自己传 `Limit=false` 也不能放宽私有字段。没有字段上下文的聊天、打卡、临时业务上传仍按普通私有上传处理。
|
|
17
|
+
|
|
18
|
+
## 平台方通用 App 登录连接器(明确例外)
|
|
19
|
+
|
|
20
|
+
登录页默认不得展示 ApiBase、OsClient 或调试配置;但用户明确要求、且安装包由 Microi 平台方作为多租户聚合客户端发布时,允许仅在 `APP-PLUS` 登录页提供通用连接器。协议必须使用固定 `https://` / `http://` 下拉框,地址框禁止重复输入协议,HTTPS 默认,HTTP 显示明文风险并二次确认;H5、小程序和客户专属包不得因此自动开放。候选地址先匿名读取 `GetSysConfig`,验证成功后再持久化。真正切换时必须清除旧 DiyToken、用户、SignalR、菜单/元数据/页面缓存,按 `ApiBase + OsClient` 隔离记住的账号及 RSA 密文,并用端点代次拒绝切换前的迟到响应。支持任意 HTTP 时,最终 IPA 必须显式包含 ATS 例外,Android 安装包必须显式包含 cleartext 例外;不需要任意 HTTP 的正式包应保持平台默认安全策略,iOS ATS 例外还必须在 App Store 审核中说明。
|
|
21
|
+
|
|
22
|
+
<!-- microi-progressive:begin -->
|
|
23
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-000 sha256=ecb0fc85b5c3b15ac79c9049ca86de8c586d4ce3a6c975255464069d89f87ac4 -->
|
|
24
|
+
## 移动端质量门禁必须先读
|
|
25
|
+
|
|
26
|
+
创建、重构或修复任何 Microi 移动端项目前,必须同时应用 `microi.skills/microi-mobile-app-quality/SKILL.md`。该 Skill 中的底部导航真实图标、重要按钮图标化、登录 API 校验、微信手机号快捷登录、后台二级菜单和页面动效要求,属于交付验收条件,不是可选优化。
|
|
27
|
+
|
|
28
|
+
<!-- /microi-progressive:chunk -->
|
|
29
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=b195b92de6175b7f184257a0ba3b53b94b8a6aaee7ab42fbb05fe1f5338ba097 -->
|
|
30
|
+
## 标准产品、视图协议与租户扩展
|
|
31
|
+
|
|
32
|
+
动态表单的组织/树字段优先复用原生 `mci-native-field` 树形下拉与 `native-tree-options.mjs`,无需为小程序把后台 `Department` 改为普通 Select。读取 `Config.<Component>.Multiple/EmitPath`:组织单选叶值保存 Id,多选叶值保存 Id 数组,路径模式保存完整路径/路径数组,数组统一 JSON 序列化。支持祖先展开、搜索、清空、禁用、重试和只读回显;数据源旧模板不能代替当前授权组织树。业务字段联动放租户扩展,不执行任意前端 V8;验收覆盖保存格式、旧数据回显、失败/迟到响应及最近公司祖先联动。
|
|
33
|
+
|
|
34
|
+
Microi 标准小程序必须采用“平台内核 + 版本化元数据 + Profile + 租户插件”架构,不能把某个交付项目直接写死成平台产品:
|
|
35
|
+
|
|
36
|
+
- `src/platform/`、通用 `mci-*` 组件、动态模块页和动态表单页只实现平台能力,不得出现租户表名、字段名、品牌文案、素材或客户路由。
|
|
37
|
+
- `src/tenants/<tenant>/` 存放客户专属业务组合、首页统计、表单联动、子表规则、扫码/定位/相机和复杂原生流程;`profiles/<id>/` 管理 OsClient、API、品牌、功能开关、路由和真实编译范围。
|
|
38
|
+
- `src/generated/`、`pages.json`、`manifest.json` 等 Profile 产物由脚本生成,不能作为人工定制入口。多人合并冲突时以 Profile 与租户源码为准重新生成。
|
|
39
|
+
- 普通 CRUD 必须优先使用授权后的 `sys_menu + diy_table + diy_field` 动态渲染;只有原生能力或客户独有的复杂组合才增加租户扩展。
|
|
40
|
+
|
|
41
|
+
统一视图协议归属 `sys_menu`。使用 `EnableViewSchema`、`ViewSchema`、`ViewSchemaVersion`、`ViewConfigVersion` 等明确物理字段保存 `List/Card/Detail/Edit`、`PC/Mobile/All`、角色视图、Hero、MetricStrip、ActionGrid 和 ResponsiveSection。`diy_table/diy_field/sys_menu.DiyConfig` 已废弃,禁止继续读取或写入。
|
|
42
|
+
|
|
43
|
+
- 后台新增字段或修改名称、顺序、显隐、组件、校验、数据源和分组后,客户端必须通过版本指纹刷新定义,无需重新发版。
|
|
44
|
+
- 表单元数据必须通过 `V8.FormEngine.GetDiyTableModel/GetDiyFieldList` 访问当前 FormEngine 缓存入口,并携带真实菜单授权上下文;页面和控件不得用普通 `GetFormData/GetTableData` 直查受保护的 `diy_table/diy_field`,也不得散落裸元数据接口 URL。
|
|
45
|
+
- ViewSchema 未配置、配置不完整或网络暂时失败时,必须回退到菜单移动字段和完整 `diy_field` 定义;定制详情还必须把未显式编排的新字段追加到折叠分组,不能静默丢字段。
|
|
46
|
+
- 列表、详情、编辑和保存请求应携带真实授权 `_SysMenuId`;客户端不能自行声明角色、数据范围或表权限,服务端仍是最终权限边界。
|
|
47
|
+
- 小程序不得下载或执行任意前端 V8,不得使用 `eval/new Function`。字段显隐和联动使用白名单声明式规则,按钮使用 ActionSchema,复杂事务和校验进入 ApiEngine 或后端表单事件。
|
|
48
|
+
- ActionSchema 只能描述文字、图标、颜色、确认提示、参数映射、ApiEngineKey、原生 ActionType 和成功后的刷新/跳转;扫码、定位、拍照、拨号、导航等由受控原生适配器执行。
|
|
49
|
+
|
|
50
|
+
仓库必须提供 AI 与人工协作约束文件、租户脚手架、Profile 构建/同步命令和架构检查。平台层改动至少同时构建标准 Profile 与默认交付 Profile;租户视觉改动还要执行多视口截图回归。这样其他同事使用 Codex、Claude、Copilot、Cursor 等工具继续开发时,会先读取相同规则,而不是依赖某次对话记忆。
|
|
51
|
+
|
|
52
|
+
<!-- /microi-progressive:chunk -->
|
|
53
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-002 sha256=76ebf3985d21fbbc5d86093b95bdf348e526e3670da9bb6827b5e1a7184e617b -->
|
|
54
|
+
## H5 预览壳与底部导航强制规则
|
|
55
|
+
|
|
56
|
+
- 桌面浏览器允许使用 `Microi UniApp H5 Preview` 手机壳帮助用户理解移动端比例。
|
|
57
|
+
- 真机、窄屏浏览器以及 PC DevTools 移动设备仿真(视口宽度小于等于 `767px`)必须自动去掉手机壳标题、外边距、圆角、边框和阴影,内容铺满 `100vw × 100vh`;不得在手机屏幕里再套一层模拟手机。
|
|
58
|
+
- AI 应用预览编译器必须为每个底部菜单渲染真实 SVG/本地图标和文字,不能只输出文字、单汉字、emoji 或空白占位。原生 uni-app `tabBar` 仍使用纳入版本管理的本地 PNG `iconPath / selectedIconPath`。
|
|
59
|
+
- 自动化验收必须同时使用桌面视口与移动视口截图:桌面端断言手机壳存在,移动端断言 `.phone-status` 隐藏且 `.phone` 无圆角、无边框、宽高铺满;每个底部菜单的图标元素和文字都必须可见、可点击。
|
|
60
|
+
|
|
61
|
+
<!-- /microi-progressive:chunk -->
|
|
62
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-003 sha256=5cedd05cb29746019a92db56a21123718fde23d5d9df4b8064dfc260bc89ee05 -->
|
|
63
|
+
## 登录页与手机号快捷登录
|
|
64
|
+
|
|
65
|
+
- 登录页必须是直接登录面,不要默认做“员工登录 / 客户登录”身份 Tab 切换,除非用户明确要求。默认展示系统账号密码登录,同时提供客户手机号快捷登录入口。
|
|
66
|
+
- 账号密码登录必须先检查项目本地 SDK 实际导出,常见是 `V8.Login(param)` 或 `/api/SysUser/Login`。禁止凭空写 `V8.Login.Login(...)` 这类未验证子对象。
|
|
67
|
+
- 登录、接口引擎、FormEngine、上传等所有请求头必须做大小写不敏感去重;`osclient` 只能发送一个运行期值,例如 `demo`,禁止同时传 `OsClient` 与 `osclient` 导致网络面板出现 `demo, demo`。
|
|
68
|
+
- 账号密码登录只有在同时拿到成功码、有效 token 和有效用户 `Id` 时才算成功。Microi 登录 token 可能在响应头 `authorization`,用户信息可能在响应体 `Data`;两者任一缺失都要清理 SDK token、本地用户缓存和 session。
|
|
69
|
+
- 恢复本地会话时必须重新校验 token 和用户 `Id`,禁止出现页面显示 `admin` 但状态仍是“未登录”的半登录状态。
|
|
70
|
+
- 账号密码登录调用 `/api/SysUser/login`、`/api/SysUser/Login` 或 `V8.Login(param)` 前,必须读取 `/apiengine/platform-sys-config` 或 `V8.GetSysConfig(true)`,并根据 `Sys_Config.EnableCaptcha` 决定是否显示图形验证码。判断函数必须兼容 `1`、`true`、`'1'`、`'true'`,不要直接 `!!cfg.EnableCaptcha`。
|
|
71
|
+
- 开启验证码时,页面必须通过 `GET /api/Captcha/GetCaptcha` 获取验证码图片,读取响应头 `captchaid`,提交账号登录时传 `_CaptchaId` 和 `_CaptchaValue`;登录失败后清空输入并刷新验证码。未开启验证码时不显示验证码,不传空验证码字段。
|
|
72
|
+
- 微信小程序手机号快捷登录必须使用 `<button open-type="getPhoneNumber">`,通过 `@getphonenumber` 获取 `detail.code`,并重新调用 `uni.login({ provider:'weixin' })` 获取新的 `LoginCode`。前端不能假设能直接拿到手机号明文。
|
|
73
|
+
- H5/App 可提供手机号输入兜底,但必须确认后端接口支持 `Phone` 登录;微信小程序优先走 `Code + LoginCode`。
|
|
74
|
+
- 登录按钮、去登录按钮、手机号授权按钮必须是图标 + 文案按钮,具备 loading、disabled/pressed 反馈,且原生 button 默认边框要清掉。
|
|
75
|
+
- 体验版授权登录必须保留可诊断错误:请求层归一化 `uni.request.fail.errMsg`、HTTP 状态和接口 `Msg`,登录页用模态框完整展示“阶段 + 原因 + 追踪号”。后端接口引擎按阶段写脱敏系统日志;不能只在前端 catch 后显示固定“手机号登录失败”。
|
|
76
|
+
- 小程序调用手机号快速验证组件的前置页、按钮、弹窗、分享标题和失败提示不得出现“微信”“微信官方”“微信登录”“一键登录”等可能混淆腾讯官方的文案,也不得展示微信官方 Logo、相似绿色气泡图标或仿官方品牌元素。统一使用“手机号快捷登录”“手机号快速验证”等中性业务文案,只展示应用自身品牌 Logo。
|
|
77
|
+
- 微信小程序构建后必须扫描登录页源码以及 `dist/build/mp-weixin/pages/login/` 产物,并截图核对手机号快速验证前置页;命中上述混淆文案、官方图形或近似元素时必须阻止上传和提审,不能只检查按钮主文案而漏掉说明文字、错误弹窗或分享标题。
|
|
78
|
+
|
|
79
|
+
<!-- /microi-progressive:chunk -->
|
|
80
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-004 sha256=cc25e3d896e6f7349a7a7e93b8025ee797bf9810e60214eb95e41d75aa083422 -->
|
|
81
|
+
## 微信小程序全页面分享
|
|
82
|
+
|
|
83
|
+
- 创建或维护 UniApp 微信小程序时,默认把好友转发与朋友圈分享视为页面基础能力;按 `pages.json` 全量路由逐页接入,不等待用户额外提出。
|
|
84
|
+
- Vue3 `<script setup>` 页面直接导入 `onShareAppMessage`、`onShareTimeline` 并注册处理函数。可以复用项目级 payload 工具,但生命周期导入必须出现在页面源码中,确保 uni-app 编译器注册页面能力。
|
|
85
|
+
- `onShareAppMessage` 返回业务标题和完整页面 `path`;`onShareTimeline` 返回业务标题和当前页 `query`。资讯、报告等内容页可返回符合平台尺寸要求的 `imageUrl`。
|
|
86
|
+
- 分享参数保留页面定位所需的 Id、分类和公开 ShareToken,统一过滤 Authorization、AccessToken、CustomerToken、手机号授权码、LoginCode、OpenId、验证码等敏感参数。
|
|
87
|
+
- 登录页、员工页、管理页等受保护页面同样可分享。接收者打开后由 session/角色守卫展示登录或无权限提示,不得因页面需要登录就调用 `hideShareMenu`。
|
|
88
|
+
- 验收不能只看首页右上角。用脚本比较 `pages.json` 路由数量与源码/微信构建产物中的两种分享生命周期数量,并在体验版抽测公开页、登录页和受保护详情页。
|
|
89
|
+
|
|
90
|
+
<!-- /microi-progressive:chunk -->
|
|
91
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-005 sha256=d6f78d95dc0b0b042f0d0c525a9cb5295a0324f1c70d6f480c93f2e03d315cec -->
|
|
92
|
+
## 首屏 Hero 与浮动面板验收
|
|
93
|
+
|
|
94
|
+
- 移动端首屏 Hero 标题必须按真实中文文案调字号和行高,不能为了“震撼”把业务入口标题做得过大,导致一行半、孤字换行或压住按钮。
|
|
95
|
+
- Hero 下方如果有浮动快捷入口面板,必须给 Hero 底部预留按钮安全区,并控制面板负 margin;面板只能覆盖装饰留白,不能盖住“立即登录 / 查看报告 / 提交”等主按钮的圆角、阴影或点击区域。
|
|
96
|
+
- 交付前至少检查 375px 与 430px 宽度首屏截图,确认标题、主按钮、次按钮、浮动面板、第二块内容没有重叠、裁切或不美观换行。
|
|
97
|
+
|
|
98
|
+
<!-- /microi-progressive:chunk -->
|
|
99
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-006 sha256=a39f7e4fb42c6d290463a9e40eed03235e4afe063d60208b5a3e73a170fbc39f -->
|
|
100
|
+
## 资源 URL 必须集中解析
|
|
101
|
+
|
|
102
|
+
数据库中的图片、附件、头像、Logo、卡面图、单据图片等字段常见保存形式:
|
|
103
|
+
|
|
104
|
+
- 绝对地址:`https://...`
|
|
105
|
+
- API 本地文件路由:`/file/...`
|
|
106
|
+
- 对象存储相对路径:`/tenant/module/file.jpg` 或 `tenant/module/file.jpg`
|
|
107
|
+
- 上传组件 JSON:`[{"Path":"..."}]`、`{"Path":"..."}`、`{"FilePathName":"..."}`,也可能已经是对象/数组而不是字符串
|
|
108
|
+
- 历史脏数据或第三方占位图
|
|
109
|
+
|
|
110
|
+
页面模板不能直接写 `<image :src="row.Avatar">`、`<image :src="row.MainImg">`。必须在项目的 API/资源工具模块里提供统一解析函数,例如 `resolveAssetUrl`、`sanitizeAssetUrl`、`resolveFileUrl`、`resolveAvatarUrl`,并让页面只绑定已经归一化后的最终 URL。
|
|
111
|
+
|
|
112
|
+
资源解析函数必须先按 `microi.skills/v8-file-upload/SKILL.md` 的 `normalizeUploadValue` 思路处理 `ImgUpload` / `FileUpload` 字段:空值、`正在上传中...`、旧字符串路径、JSON 字符串对象、JSON 字符串数组、运行时对象、运行时数组都要兼容;取出 `Path` 后再进入 FileServer/API/私有签名 URL 逻辑。
|
|
113
|
+
|
|
114
|
+
推荐规则:
|
|
115
|
+
|
|
116
|
+
- `http(s)://`、`data:`、`blob:` 原样返回。
|
|
117
|
+
- `/file/...` 走 API 服务。
|
|
118
|
+
- `/tenant/...`、`tenant/...` 等对象存储路径走 `V8.SysConfig.FileServer` 对应的文件服务器/CDN。
|
|
119
|
+
- 私有文件使用后端签名 URL,例如 `V8.Method.GetPrivateFileUrl({ FilePathName })`,失败时再回退到公开文件服务器路径。
|
|
120
|
+
- 第三方占位图、已失效临时地址、空字符串统一清理为空,交给 UI 占位态。
|
|
121
|
+
|
|
122
|
+
<!-- /microi-progressive:chunk -->
|
|
123
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-007 sha256=3894454672b6bde6f4a7b329103c9418804f4594b7e3505617590ebea5f136ab -->
|
|
124
|
+
## 移动端大资源优先使用租户 HDFS/CDN
|
|
125
|
+
|
|
126
|
+
定制 UniApp/H5/小程序中的大图、视频、音频、字体和大型第三方静态文件,默认不要塞进主包。应先确认目标 `OsClient`,通过该租户 MCP/HDFS 上传,再以 `sys_config.FileServer + Path` 的 CDN/公有桶地址引用;合同、证件等敏感资源仍必须使用私有桶和临时签名 URL。
|
|
127
|
+
|
|
128
|
+
- 首页 Hero、商品占位图、活动 Banner、引导音频、演示视频等公开资源使用 `Limit:false`,上传后必须以匿名请求验证最终 URL 返回 `200`、正确 `Content-Type` 和非空内容。
|
|
129
|
+
- tabBar 图标、返回/关闭等小型交互图标、启动阶段必须离线可用的关键素材可以留在主包;不能为了远程化导致断网时连导航和基本操作都不可识别。
|
|
130
|
+
- 上传前按场景做适度压缩和尺寸裁剪,同时保存原始素材或可重复生成源;禁止为了通过包体扫描而盲目把图片、音频压到明显失真、文字模糊或播放体验受损。
|
|
131
|
+
- 压缩后必须在至少 375px、430px 和目标小程序设备截图中核对清晰度、裁切、首屏加载与失败占位;音视频还要抽听/抽播。质量不合格时优先调整编码、分辨率和缓存策略,而不是继续极端压缩。
|
|
132
|
+
- 项目只能通过统一配置或资源解析器保存 CDN 地址,页面不得散落硬编码 FileServer;切换环境或租户时必须能整体替换。
|
|
133
|
+
- CDN 资源必须设置加载失败占位或降级路径。构建验收同时检查小程序主包资源总量、单资源大小、远程域名白名单和真实 CDN 可达性,不能只看源码文件大小。
|
|
134
|
+
- 小程序发布前必须扫描实际构建目录,而不只扫描 `src`:单个非离线关键资源超过 `256 KB` 时默认迁移 HDFS/CDN;主包静态资源达到 `1.5 MB` 或距离平台硬上限不足 `300 KB` 时必须停止上传,先瘦身或分包。确需本地保留的例外要记录离线必要性、大小和验证证据。
|
|
135
|
+
- HDFS 迁移顺序固定为“保留/归档原始素材 -> 按真实展示尺寸压缩 -> 上传当前租户公有 HDFS -> 保存相对 `Path` -> 运行期通过 `SysConfig.FileServer` 解析 -> 匿名 GET 回读”。回读必须断言 `200`、正确 `Content-Type`、非空大小,重要资源再比对 SHA-256;不能把上传接口返回成功当成完成。
|
|
136
|
+
- 原始高清图、视频母版、设计源文件不得继续放在会被 UniApp 收集的 `src/static`、分包目录或其它构建入口中;应移到项目资料/设计源目录。主包仅保留小于门禁的轻量失败占位图和离线关键图标。
|
|
137
|
+
|
|
138
|
+
<!-- /microi-progressive:chunk -->
|
|
139
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-008 sha256=d7b2b5c8ffe5c1dd8f51eb7d5e8368dba6813c2fa25d39dd3fb8f6659922b5b9 -->
|
|
140
|
+
## 头像必须异步统一解析
|
|
141
|
+
|
|
142
|
+
头像字段比普通图片更容易混合出现上传 JSON、私有路径、相对路径、历史字段名和脏数据。列表页、详情页、业务记录、审批记录、团队/会员卡片、聊天/消息等头像场景都必须走同一个头像解析入口。
|
|
143
|
+
|
|
144
|
+
正确模式:
|
|
145
|
+
|
|
146
|
+
```js
|
|
147
|
+
const rawAvatar = row.OwnerAvatar || row.UserAvatar || row.Avatar || member.Avatar || '';
|
|
148
|
+
row.OwnerAvatarUrl = await resolveAvatarUrl(rawAvatar);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
模板只绑定最终字段:
|
|
152
|
+
|
|
153
|
+
```vue
|
|
154
|
+
<image v-if="row.OwnerAvatarUrl" :src="row.OwnerAvatarUrl" mode="aspectFill" />
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
禁止在模板中临时拼接文件服务器,禁止每个页面各写一套头像解析,禁止只在能查到关联用户时才解析接口已经返回的头像字段。
|
|
158
|
+
|
|
159
|
+
<!-- /microi-progressive:chunk -->
|
|
160
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-009 sha256=0270fbc5a2ee0d20a4d1d2f2a9c7fc7304e18402d282e1efcf860bd31db9fcb0 -->
|
|
161
|
+
## 移动端富文本图文排版
|
|
162
|
+
|
|
163
|
+
商品详情、公告详情、活动说明、文章正文、协议说明等富文本在移动端渲染时,图片和文字不能使用同一套留白规则。
|
|
164
|
+
|
|
165
|
+
- 主图、详情长图、海报图可以 `width:100%` / `display:block` 满宽展示,不额外加左右 padding,避免图片显得缩小或边缘参差。
|
|
166
|
+
- 文字内容必须有独立容器,设置 `padding: 16px 18px`(或项目设计体系中的等价间距)、`box-sizing:border-box`、稳定 `line-height`,不能让标题、段落贴着卡片或屏幕边缘。
|
|
167
|
+
- 富文本生成器输出 HTML 时,推荐结构是“图片块 + 文本块”:图片块只包图片,文本块包标题、段落、规格说明、温馨提示。
|
|
168
|
+
- 段落使用 `margin:0 0 6px` 或相近节奏,最后一段可以去掉底部 margin;不要靠 `<br>` 堆间距。
|
|
169
|
+
- 移动端截图验收必须看文字是否贴边、是否横向溢出、是否被底部固定按钮遮挡。
|
|
170
|
+
|
|
171
|
+
参考结构:
|
|
172
|
+
|
|
173
|
+
```html
|
|
174
|
+
<section class="mci-rich-detail" style="background:#fff;overflow:hidden;">
|
|
175
|
+
<p style="margin:0;text-align:center;">
|
|
176
|
+
<img src="..." style="display:block;width:100%;max-width:100%;height:auto;" />
|
|
177
|
+
</p>
|
|
178
|
+
<div style="padding:16px 18px 18px;box-sizing:border-box;line-height:1.7;color:#1f2937;font-size:15px;">
|
|
179
|
+
<h2 style="margin:0 0 10px;font-size:22px;line-height:1.28;">商品标题</h2>
|
|
180
|
+
<p style="margin:0 0 6px;">所属专区:精选专区</p>
|
|
181
|
+
<p style="margin:0;">商品图片与规格信息以实际维护为准。</p>
|
|
182
|
+
</div>
|
|
183
|
+
</section>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
<!-- /microi-progressive:chunk -->
|
|
187
|
+
## 详细参考路由(渐进披露)
|
|
188
|
+
|
|
189
|
+
仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
|
|
190
|
+
|
|
191
|
+
- [references/progressive-01-移动端分类-双栏列表独立滚动.md](references/progressive-01-移动端分类-双栏列表独立滚动.md):移动端分类/双栏列表独立滚动;数据页必须使用骨架屏 Loading;移动端安全区必须兼容 iOS 与 Android;微信自定义组件的点击与拖动事件必须真机链路验收;列表型资料页必须提供完整管理动作;移动端资产/奖励流水展示;H5 在 PC 浏览器必须自动模拟移动端
|
|
192
|
+
- [references/progressive-02-关键业务资产不得默认选中.md](references/progressive-02-关键业务资产不得默认选中.md):关键业务资产不得默认选中;账号角色与会话状态;数字、主题、上传与消息;图片上传必须支持替换与预览;组件复用与页面去重;验收要求;Microi 前端 SDK 必须接入;MCI-UI Mobile 必须优先使用;登录、图标与主题补充规范;UniApp 上传路径与 Header 规则
|
|
193
|
+
<!-- microi-progressive:end -->
|