@microi.net/cli 5.7.9 → 5.8.1

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 (106) 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/assets/build-meta.json +5 -5
  7. package/cordis.patch.yml +1 -1
  8. package/package.json +1 -1
  9. package/scripts/mcp-server.js +106 -106
  10. package/scripts/microi-skills.meta.json +293 -290
  11. package/skills/.microi-skills-version.json +2 -2
  12. package/skills/.progressive-disclosure-manifest.json +441 -441
  13. package/skills/README.md +2 -1
  14. package/skills/ai-engine/SKILL.md +1 -1
  15. package/skills/ai-engine/references/ai-employees.md +4 -0
  16. package/skills/ai-platform-governance/SKILL.md +8 -8
  17. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +9 -9
  18. package/skills/app-store/SKILL.md +58 -4
  19. package/skills/job-engine/SKILL.md +4 -3
  20. package/skills/message-notification/SKILL.md +2 -1
  21. package/skills/microi/SKILL.md +14 -0
  22. package/skills/microi-ai-application/SKILL.md +16 -3
  23. package/skills/microi-client-frontend/SKILL.md +10 -5
  24. 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 +3 -3
  25. 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 +4 -4
  26. 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 +3 -3
  27. package/skills/microi-codex/SKILL.md +15 -0
  28. package/skills/microi-datasource-mapping/SKILL.md +4 -0
  29. package/skills/microi-deployment/SKILL.md +7 -0
  30. package/skills/microi-deployment/references/deployment-matrix.md +8 -0
  31. package/skills/microi-docs-coverage/references/capability-map.md +1 -0
  32. package/skills/microi-form-layout/SKILL.md +6 -6
  33. 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 +3 -3
  34. package/skills/microi-frontend-sdk/SKILL.md +6 -6
  35. 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 +7 -7
  36. package/skills/microi-microservice/SKILL.md +1 -0
  37. package/skills/microi-mobile-app-quality/SKILL.md +12 -8
  38. 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 +10 -10
  39. 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 +4 -4
  40. package/skills/microi-system-delivery/SKILL.md +5 -5
  41. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +1 -1
  42. 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 +6 -4
  43. package/skills/microi-ui/SKILL.md +6 -6
  44. 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 +5 -5
  45. package/skills/microi-uniapp-frontend/SKILL.md +10 -10
  46. 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 +7 -7
  47. 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 +10 -10
  48. package/skills/module-engine/SKILL.md +13 -0
  49. package/skills/page-engine/SKILL.md +19 -8
  50. 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 +3 -3
  51. 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 +4 -4
  52. package/skills/playwright-e2e/SKILL.md +11 -11
  53. 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 +5 -5
  54. 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 +3 -3
  55. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +7 -7
  56. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +4 -4
  57. package/skills/system-observability/SKILL.md +3 -0
  58. package/skills/ui-design/SKILL.md +7 -7
  59. 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 +2 -2
  60. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +3 -3
  61. 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 +2 -2
  62. 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 +1 -1
  63. 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 +3 -3
  64. 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 +2 -2
  65. 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 +4 -4
  66. 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 +5 -5
  67. package/skills/unity-integration/references/ai-app-delivery.md +16 -0
  68. package/skills/v8-api-config/SKILL.md +6 -0
  69. package/skills/v8-crud-api/SKILL.md +9 -7
  70. 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 +8 -8
  71. 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 +2 -2
  72. package/skills/v8-explorer-tree/SKILL.md +2 -2
  73. package/skills/v8-export-import/SKILL.md +4 -4
  74. 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 +3 -3
  75. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +4 -4
  76. 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 +1 -1
  77. package/skills/v8-file-upload/SKILL.md +32 -4
  78. 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 +3 -3
  79. 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 +3 -3
  80. package/skills/v8-frontend-events/SKILL.md +6 -6
  81. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +5 -5
  82. package/skills/v8-http-integration/SKILL.md +4 -4
  83. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +7 -7
  84. 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 +2 -2
  85. package/skills/v8-image-processing/SKILL.md +1 -1
  86. package/skills/v8-menu-buttons/SKILL.md +4 -4
  87. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +4 -4
  88. 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 +5 -5
  89. 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 +3 -3
  90. package/skills/v8-mq-mqtt/SKILL.md +3 -2
  91. package/skills/v8-mq-mqtt/references/mqtt-production.md +1 -1
  92. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +1 -1
  93. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +1 -1
  94. package/skills/v8-security/SKILL.md +15 -5
  95. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +3 -3
  96. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +8 -6
  97. package/skills/v8-table-event/SKILL.md +5 -5
  98. 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 +6 -6
  99. 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 +2 -2
  100. package/skills/v8-tcp-integration/SKILL.md +2 -2
  101. package/skills/v8-workflow/SKILL.md +42 -7
  102. 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 +7 -7
  103. package/skills/workspace-conventions/SKILL.md +19 -10
  104. 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 +8 -7
  105. 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 +21 -21
  106. 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 +1 -1
@@ -7,7 +7,7 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
7
7
 
8
8
  # Microi 吾码 Playwright E2E 自动化测试
9
9
 
10
- > **2026-05 更新(重要)**:Microi.Code 插件生成的所有 E2E 产物现已统一隔离到 `<projectRoot>/.microi-e2e/` 目录,**不再**写入 `tests/e2e/`、根目录 `playwright.config.js` 或 `.env.e2e.example`。
10
+ > **2026-05 更新(重要)**:Microi.Agent 插件生成的所有 E2E 产物现已统一隔离到 `<projectRoot>/.microi-e2e/` 目录,**不再**写入 `tests/e2e/`、根目录 `playwright.config.js` 或 `.env.e2e.example`。
11
11
  > - `playwright.config.js` 位于 `.microi-e2e/playwright.config.js`,`testDir` 为 `./` (即 `.microi-e2e/specs/`)
12
12
  > - 报告路径 `.microi-e2e/report/`,截图 `.microi-e2e/screenshots/`
13
13
  > - 上下文 `.microi-e2e/.microi-playwright-context.json`
@@ -16,7 +16,7 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
16
16
  `E2E` 是 `End-to-End`,中文通常叫"端到端测试"。它强调从用户入口开始,穿过前端页面、接口引擎、表单引擎、权限、缓存、数据库等真实链路,验证一条业务路径是否真的可交付。
17
17
 
18
18
  <!-- microi-progressive:begin -->
19
- <!-- microi-progressive:chunk id=playwright-e2e-000 sha256=f04614f276c139cfa50b9e46e89857675c6dc5e7cf0cfbfde76d6e6dbe9746c9 -->
19
+ <!-- microi-progressive:chunk id=playwright-e2e-000 sha256=a6ef528a2a940fd0f58efaee6b73eb5dbc159db93d95afedf41c7b8642536d18 -->
20
20
  ## 是否需要 `-e2e` 后缀
21
21
 
22
22
  建议保留 `playwright-e2e` 这个 skill 名称。
@@ -26,7 +26,7 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
26
26
  - 如果未来要补更细的能力,可以新增 `playwright-api` 或 `visual-regression`,不要把当前 skill 改成泛泛的 `playwright`。
27
27
 
28
28
  <!-- /microi-progressive:chunk -->
29
- <!-- microi-progressive:chunk id=playwright-e2e-001 sha256=703786ae7a5a52cb39664f1c82de7fb7aa7dfece511046d3757da64918c23063 -->
29
+ <!-- microi-progressive:chunk id=playwright-e2e-001 sha256=b3970a9a4603447651520667c05ab4ecfae01b65b3f752e9f318007c5e2699c1 -->
30
30
  ## 适用范围
31
31
 
32
32
  - PC 管理端:`Microi.Client`、租户后台、运营后台。
@@ -38,7 +38,7 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
38
38
  不适合把 Playwright 用来替代 V8 单函数调试。单个接口引擎的入参输出优先用 VS Code 插件远程执行、MCP `microi_run_engine` 或后端单元测试。
39
39
 
40
40
  <!-- /microi-progressive:chunk -->
41
- <!-- microi-progressive:chunk id=playwright-e2e-002 sha256=639b5a0f2a7ced30cf682c71b260cbdeac2628bd939a33ea372e6834b7990874 -->
41
+ <!-- microi-progressive:chunk id=playwright-e2e-002 sha256=495c6f4b8388d94e16372d83c9e3ec3e6972112e03dba0adae413c8ac9d77232 -->
42
42
  ## 临时文件与产物放置规则(必须遵守)
43
43
 
44
44
  AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测试报告**等,**绝对不能放在工作区根目录**,必须放在以下指定位置:
@@ -47,7 +47,7 @@ AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测
47
47
  |------|---------|
48
48
  | 一次性 Python/JS/PS1 脚本 | `<workspace-root>/.tmp/` |
49
49
  | 诊断截图、调试输出 | `<workspace-root>/.tmp/screenshots/` 或子目录 |
50
- | E2E 测试产物(Microi.Code 插件生成) | `<workspace-root>/.microi-e2e/` |
50
+ | E2E 测试产物(Microi.Agent 插件生成) | `<workspace-root>/.microi-e2e/` |
51
51
  | AI 一次性 Playwright 脚本、截图、日志、报告 | `<workspace-root>/.tmp/`、`<workspace-root>/.tmp/screenshots/`、`<workspace-root>/.tmp/reports/` |
52
52
  | 性能测试报告 | `<workspace-root>/.microi-performance/`(仅限此目录) |
53
53
 
@@ -55,10 +55,10 @@ AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测
55
55
 
56
56
  `.tmp/` 目录已在 `.gitignore` 中排除,AI 可以在此自由创建临时文件。任务完成后如无价值可以不清理,也可以整体删除该目录。
57
57
 
58
- **2026-06 强制补充**:AI 手写的一次性 Playwright 验证脚本、运行日志、截图和报告只能写到工作区根目录 `.tmp/`。不要写到 `Microi.Client/`、`Microi.Server/`、`microi.doc/` 或其它子项目目录,即使这些目录已有 `tests/` 目录也不例外。只有 Microi.Code 插件正式初始化的可复用 E2E 工程,才使用 `.microi-e2e/`。
58
+ **2026-06 强制补充**:AI 手写的一次性 Playwright 验证脚本、运行日志、截图和报告只能写到工作区根目录 `.tmp/`。不要写到 `Microi.Client/`、`Microi.Server/`、`microi.doc/` 或其它子项目目录,即使这些目录已有 `tests/` 目录也不例外。只有 Microi.Agent 插件正式初始化的可复用 E2E 工程,才使用 `.microi-e2e/`。
59
59
 
60
60
  <!-- /microi-progressive:chunk -->
61
- <!-- microi-progressive:chunk id=playwright-e2e-003 sha256=69b8842a221a0de60f8605c5059deee391be0f16f0b6cbc5ddfb3cfd210268db -->
61
+ <!-- microi-progressive:chunk id=playwright-e2e-003 sha256=247ddb9017c174f0daa88d1f6e4220c5530b79c5ac976e61e128ed8bd0aa1fea -->
62
62
  ## 标准目录
63
63
 
64
64
  前端项目中推荐使用 `tests/e2e`,而不是根目录 `e2e`,这样能和单元测试、组件测试并列。
@@ -79,7 +79,7 @@ AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测
79
79
  ```
80
80
 
81
81
  <!-- /microi-progressive:chunk -->
82
- <!-- microi-progressive:chunk id=playwright-e2e-004 sha256=4f5e11baf4651c11b5f9819a0b4f33ce2590db1733d4db72814bd1a25daf56ff -->
82
+ <!-- microi-progressive:chunk id=playwright-e2e-004 sha256=f71fe44f7d5753b93804dac958ea8205cddcaee25188a8417b33770e305c46ed -->
83
83
  ## 必备环境变量
84
84
 
85
85
  ```bash
@@ -101,7 +101,7 @@ PW_HOME_PATH=/#/pages/index/index
101
101
  ```
102
102
 
103
103
  <!-- /microi-progressive:chunk -->
104
- <!-- microi-progressive:chunk id=playwright-e2e-005 sha256=51567cea5fca434f9b031fef0871454100cf4715dfb65695dc1722bd275399be -->
104
+ <!-- microi-progressive:chunk id=playwright-e2e-005 sha256=a66696c3263f060d0b7be309a527fca6a9bad95dd534eabbe84f1b6539770d8e -->
105
105
  ## 本地测试账号自动发现
106
106
 
107
107
  当没有显式传入 `PW_TEST_ACCOUNT` / `PW_TEST_PASSWORD` / `MICROI_OSCLIENT` 时,AI 不要把账号密码写入后端配置来制造旁路:
@@ -126,7 +126,7 @@ PW_HOME_PATH=/#/pages/index/index
126
126
  Profile/`--user-data-dir`。自动化收尾只关闭自己创建的 context/browser。
127
127
 
128
128
  <!-- /microi-progressive:chunk -->
129
- <!-- microi-progressive:chunk id=playwright-e2e-006 sha256=88e1002cae934acd2de5af2f77f371a9ea152a525eecf11b49fe182b16a56044 -->
129
+ <!-- microi-progressive:chunk id=playwright-e2e-006 sha256=6aeefebda3a9e598564c53c2f8028a4ccefe2291c4c7c7ae4781ca15fb5d0697 -->
130
130
  ## 后端改动后的 E2E 前置动作
131
131
 
132
132
  如果本轮任务修改过 `Microi.Server/**` 后端源码、配置、控制器、服务、依赖项目或接口行为,跑 Playwright、页面截图、接口验收或前后端联调前,必须先按 `workspace-conventions` 的“后端代码改动后的重启验收”完成:
@@ -139,7 +139,7 @@ PW_HOME_PATH=/#/pages/index/index
139
139
  不要只说“代码已编译”或“需要用户自己重启后端”;除非用户明确要求不要中断当前服务,否则 AI 要主动完成重启。
140
140
 
141
141
  <!-- /microi-progressive:chunk -->
142
- <!-- microi-progressive:chunk id=playwright-e2e-007 sha256=73298ff43e319b3e1a86a7d369c284595383f5d0b1e5fbc7e0d483d8fd68003a -->
142
+ <!-- microi-progressive:chunk id=playwright-e2e-007 sha256=c8d57e63b1445bea306218ccbea953412c0f20aa908fab7a0a3f4ea45602071d -->
143
143
  ## 服务自启动纪律(必做)
144
144
 
145
145
  执行自动化测试、截图巡检、接口引擎回读、`/apiengine/{key}` 验收时,如果本地后端或前端不可达,不能把 `fetch failed`、`ECONNREFUSED`、`000 Failed to connect`、端口无人监听当作任务终点。必须先自动启动所需服务,再继续完整验证。
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=playwright-e2e-008 sha256=cd1cc086cbbabd4083f7037e64b4f1951b284f70392e6fc5d729b322a161c39d -->
5
+ <!-- microi-progressive:chunk id=playwright-e2e-008 sha256=1ac51fe5663202a639d1983dcd882e4559201b68c90b5b81a17231ed04e24182 -->
6
6
  ## 全自动登录(免验证码,但不免密码)——必读
7
7
 
8
8
  E2E 自动化最容易卡在「登录页有图形验证码」。Microi 后端允许自动化跳过验证码,但账号和密码必须始终走真实校验;如果密码配置错了,登录接口必须返回账号或密码错误。源码见 `Microi.Server/Microi.net.Api/Controllers/SysUserController.cs`(`Login` 方法开头)。
@@ -66,7 +66,7 @@ export async function automationLogin(page, {
66
66
  > 直连接口验收(不进页面)使用自动化标记拿 Token;历史 `_DEV_BYPASS_`、Dev Key 和 `DevLoginBypass` 均不得继续使用。
67
67
 
68
68
  <!-- /microi-progressive:chunk -->
69
- <!-- microi-progressive:chunk id=playwright-e2e-009 sha256=bd153761389635cb99ac6d3e2809f1e49ca78926176a05ad555dc83702837790 -->
69
+ <!-- microi-progressive:chunk id=playwright-e2e-009 sha256=1466c4443d44a2957877971ecef64e228732af26a9030d02543f4a82c01e24ca -->
70
70
  ## 表单引擎卡死/递归更新全自动化诊断
71
71
 
72
72
  当用户反馈“新增抽屉卡死”“设计页卡死”“点击控件无响应”“Maximum recursive updates exceeded”等表单引擎问题时,优先做可复现的 Playwright 诊断,而不是只靠猜测改代码。
@@ -121,7 +121,7 @@ npm run test:form-freeze:auto
121
121
  - 修复后必须重跑同一个诊断用例,确认最后 trace 不再无限重复,并且页面在 10-15 秒后仍可响应。
122
122
 
123
123
  <!-- /microi-progressive:chunk -->
124
- <!-- microi-progressive:chunk id=playwright-e2e-010 sha256=10e0c01fcbdc6319d6d5037a068a50ed83df2f3b1498326fc349e17c71d30a5d -->
124
+ <!-- microi-progressive:chunk id=playwright-e2e-010 sha256=484eff47612bc41ec9abf825d776e49bd71335f5815b0d1ce8749d9c86ba07bf -->
125
125
  ## 移动端视觉与资源验收
126
126
 
127
127
  uni-app H5、移动商城、分享海报、首页改版这类任务不能只跑接口和 DOM 断言。每次涉及页面风格、图片、二维码、商品卡片、首页聚合时,Playwright 必须补齐以下检查:
@@ -134,7 +134,7 @@ uni-app H5、移动商城、分享海报、首页改版这类任务不能只跑
134
134
  - 对分享海报二维码,优先断言平台接口,如 `/api/Os/CreateQRCodeImage`,或平台接口引擎返回的 HDFS 图片路径。
135
135
 
136
136
  <!-- /microi-progressive:chunk -->
137
- <!-- microi-progressive:chunk id=playwright-e2e-011 sha256=6f2c751a6f1eb21ea571972d5a2f9d5323b997dbcdca510c2e34784911af5504 -->
137
+ <!-- microi-progressive:chunk id=playwright-e2e-011 sha256=1aadaaf4d0a757e7225a33ff2a9b6621ea6e6430fb7eb92cb96d40ffb87f66af -->
138
138
  ## 测试证据必须绑定需求编号
139
139
 
140
140
  当用户一次提出多个问题时,Playwright 用例、截图文件名和最终测试报告必须能回到原始 `1、2、3...` 编号。
@@ -145,7 +145,7 @@ uni-app H5、移动商城、分享海报、首页改版这类任务不能只跑
145
145
  - 如果某项属于后台元数据或数据库配置,仍需通过接口/数据库回读给出证据;前端截图只能证明展示,不等价于后台配置已改。
146
146
 
147
147
  <!-- /microi-progressive:chunk -->
148
- <!-- microi-progressive:chunk id=playwright-e2e-012 sha256=a6ed859419114f601d611534e3d07bbfce0055ea6b7809daea9200da962391b6 -->
148
+ <!-- microi-progressive:chunk id=playwright-e2e-012 sha256=c5c754c843a1adfc4911e3676b36b6d4fc91cd2c269ee2dc000e547ac19428c6 -->
149
149
  ## 移动端/H5 回归纪律
150
150
 
151
151
  处理 uni-app H5 移动商城的交易、资产、登录、购物车、抢购、充值、分享或图片相关问题时,不能只改代码后让用户手工发现问题。完成实现后必须至少执行(以下变量按项目实际情况替换):
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=playwright-e2e-013 sha256=cce51ad8ff52cd1339b5a1ce4986d8167b5cccb77637e8a3d438da9da03b68cd -->
5
+ <!-- microi-progressive:chunk id=playwright-e2e-013 sha256=ca9bd62faa3dbc125592e1185577e24f58d4bdc391afdc9c4537d261651442ec -->
6
6
  ## 文字对比度与可读性自动化检查(必做)
7
7
 
8
8
  凡涉及前端样式、卡片、芯片、按钮、价格区间筛选条、退出登录、徽章、覆盖文字(金色/渐变背景上的小字)、列表副标题、空状态等,**测试与人眼复核都必须执行对比度检查**。典型教训:筛选条文字、幽灵按钮、轻色副标题在近似底色下肉眼几乎不可见,但接口/DOM 断言全部通过——这类对比度问题必须通过自动化审计捕捉。
@@ -72,7 +72,7 @@ expect(lowContrast, '低对比度文字: ' + JSON.stringify(lowContrast.slice(0,
72
72
  5. 价格区间、状态、筛选这类**导航/筛选元素出现在列表中部作为标题**——必须移到顶部 sticky 工具栏,并与正文形成色彩区隔。
73
73
 
74
74
  <!-- /microi-progressive:chunk -->
75
- <!-- microi-progressive:chunk id=playwright-e2e-014 sha256=3eea01cf70e67d545fede1724b049ed852da60cf0a4ea0bda6b2e1d6de84400d -->
75
+ <!-- microi-progressive:chunk id=playwright-e2e-014 sha256=e5858cce6f743573d699ed7d2d07f958d15be96c28028a91163e841f6d3c016a -->
76
76
  ## 安装
77
77
 
78
78
  ```bash
@@ -122,7 +122,7 @@ npx playwright test
122
122
  手写 Playwright 脚本时读取 `PW_CHROMIUM_EXECUTABLE` / `PW_BROWSER_EXECUTABLE` 并传给 `chromium.launch({ executablePath })`;Playwright Test 配置中通过 `use.launchOptions.executablePath` 读取该环境变量。只有 CDN、系统浏览器和本地缓存都不可用时,才报告浏览器不可用。
123
123
 
124
124
  <!-- /microi-progressive:chunk -->
125
- <!-- microi-progressive:chunk id=playwright-e2e-015 sha256=9b937381fb4cda1a8a010c5a0f803d48861c9dbcf503774a4b1dba4c0d33985a -->
125
+ <!-- microi-progressive:chunk id=playwright-e2e-015 sha256=0ceff2869cb591370ba1cf1766ae673e7ed99f97f42bb757aadeae832f0f8803 -->
126
126
  ## playwright.config.js 模板
127
127
 
128
128
  ```js
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=playwright-e2e-016 sha256=9fa2a956427cf2c1c6a6f37cc2c960e58ac09ab43aff037ab762d447eadf912a -->
5
+ <!-- microi-progressive:chunk id=playwright-e2e-016 sha256=49c59ee833b3ac8ad96d0ff5876b47459e2a26c7a6d233ff08abf082d43076dd -->
6
6
  ## Microi helper 模板
7
7
 
8
8
  ```js
@@ -73,7 +73,7 @@ export function assertDosResultShape(json, label = 'DosResult') {
73
73
  ```
74
74
 
75
75
  <!-- /microi-progressive:chunk -->
76
- <!-- microi-progressive:chunk id=playwright-e2e-017 sha256=6e755119a57eb70165adb5d289dc183f15835866b39bea34f8a4a1902cf01dd6 -->
76
+ <!-- microi-progressive:chunk id=playwright-e2e-017 sha256=d837b942878764ad94bedb09869dd50b627660d86a848043984de2f05f0e071b -->
77
77
  ## 典型用例
78
78
 
79
79
  ```js
@@ -103,7 +103,7 @@ test('公开接口引擎返回标准 DosResult', async ({ request }) => {
103
103
  ```
104
104
 
105
105
  <!-- /microi-progressive:chunk -->
106
- <!-- microi-progressive:chunk id=playwright-e2e-018 sha256=dbad091f3a8461ed0277c118870e4823538b3932552d53fbd7c4a989492047c0 -->
106
+ <!-- microi-progressive:chunk id=playwright-e2e-018 sha256=90e55b07d1e2a71dbd9f8e82a07e361fd5ec5269753c7d193e55216eddbbc834 -->
107
107
  ## Microi 专属测试策略
108
108
 
109
109
  1. 先用 MCP `microi_get_playwright_context` 获取当前租户的菜单路由、接口引擎、匿名状态。
@@ -121,7 +121,7 @@ test('公开接口引擎返回标准 DosResult', async ({ request }) => {
121
121
  9. 用 `page.on('response', r => { if (r.url().includes('/file/') && !r.ok()) failedAssets.push(r.url()); })` 监听全部资源请求,断言 `failedAssets.length === 0`,能在断言前就抓到 404 图片。
122
122
 
123
123
  <!-- /microi-progressive:chunk -->
124
- <!-- microi-progressive:chunk id=playwright-e2e-019 sha256=f9551960b0d5b7748263371dd47359b6056c1ef295c9b475bfa35f0efbb330d0 -->
124
+ <!-- microi-progressive:chunk id=playwright-e2e-019 sha256=76dce4264c93b7ab5be25f42dcbda55cd1f08afd2f5811998f81d9c4d26e0377 -->
125
125
  ## 最少冒烟集
126
126
 
127
127
  任何 Microi 业务系统建议至少覆盖:
@@ -134,7 +134,7 @@ test('公开接口引擎返回标准 DosResult', async ({ request }) => {
134
134
  6. 退出登录能清理 Token 并回到登录页。
135
135
 
136
136
  <!-- /microi-progressive:chunk -->
137
- <!-- microi-progressive:chunk id=playwright-e2e-020 sha256=7c8cc732cd5d460b6bde2c7e151d55f51aa0f853995492946aedbe781da01a9a -->
137
+ <!-- microi-progressive:chunk id=playwright-e2e-020 sha256=a267a39f5fe3dab714c5275759f7bdd1b6150990fa00555e07c091aee5795a29 -->
138
138
  ## 完整业务验收门槛
139
139
 
140
140
  当用户要求“完整测试”“全面测试”“不要让我手工测出接口 null/404/权限漏洞”时,不能只生成浅冒烟。至少补齐以下测试文件:
@@ -183,7 +183,7 @@ tests/e2e/
183
183
  - 首页运营 banner 推荐从公告或配置表驱动;E2E 要同时断言接口返回、图片真实加载、点击进入详情页。
184
184
 
185
185
  <!-- /microi-progressive:chunk -->
186
- <!-- microi-progressive:chunk id=playwright-e2e-021 sha256=50a36935911be6a6201c9406e89b5e8470b65d87f6d8cd0a57effedf146082b2 -->
186
+ <!-- microi-progressive:chunk id=playwright-e2e-021 sha256=3a2ad9d446d5169735e0cedfc0bec84d8a4ba5c23cd0401190bf23708d344dce -->
187
187
  ## 与 MCP 的配合
188
188
 
189
189
  - `microi_get_db_schema`:写测试前确认表和字段。
@@ -193,7 +193,7 @@ tests/e2e/
193
193
  - `microi_set_engine_anonymous`:登录、注册、公开首页接口需要匿名访问时使用;设置后仍要验证 HTTP `/apiengine/{key}` + `osclient` Header 返回标准 DosResult。
194
194
 
195
195
  <!-- /microi-progressive:chunk -->
196
- <!-- microi-progressive:chunk id=playwright-e2e-022 sha256=d05000c40920ae53e9ce758385e2b7ad62a79d7d974491e241e6da8d698c9232 -->
196
+ <!-- microi-progressive:chunk id=playwright-e2e-022 sha256=4c8a62a896b5f1f97ea41bcd3afdb0dc3c3609ead6c92283dcfa703c09311b42 -->
197
197
  ## 与 VS Code 插件的配合
198
198
 
199
199
  ### Microi VS Code 插件
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=playwright-e2e-023 sha256=9ed2035756e67f2c47430d0980ce9ef31d15392e64e38f91c0765e07437c8821 -->
5
+ <!-- microi-progressive:chunk id=playwright-e2e-023 sha256=d0fe6ae9a31033fca37017b9c065dba2ef9acfc91505eb113e4084180a322ace -->
6
6
  ## CI 建议
7
7
 
8
8
  ```yaml
@@ -28,7 +28,7 @@ jobs:
28
28
  ```
29
29
 
30
30
  <!-- /microi-progressive:chunk -->
31
- <!-- microi-progressive:chunk id=playwright-e2e-024 sha256=a2897a35d5fd0c4bd944fae8bf15e8d52648e916a5453d0bb6012574f97af12a -->
31
+ <!-- microi-progressive:chunk id=playwright-e2e-024 sha256=e14464e157beb905d85fdd1f284b677538f60d6d9d3a860515626e52738dac5b -->
32
32
  ## 常见问题
33
33
 
34
34
  | 现象 | 原因 | 处理 |
@@ -90,7 +90,7 @@ OsClient 仍为空时调用目标站点域名租户解析接口或从成功请
90
90
  Profile 或独立 `--user-data-dir`。
91
91
 
92
92
  <!-- /microi-progressive:chunk -->
93
- <!-- microi-progressive:chunk id=playwright-e2e-025 sha256=fb26231352e397437331ab5255b908ecaa100129bd365779dad7aaf944062584 -->
93
+ <!-- microi-progressive:chunk id=playwright-e2e-025 sha256=be071153d695081b7c20d34cb5e9563480e3f09d9cd0292f2ca4b0245438787b -->
94
94
  ## 前端微服务 E2E 必测点
95
95
 
96
96
  测试 Vue3 MicroApp 微服务时,不能只验证 `/micro-app/{OsClient}/{appKey}/index.html` 或带 token 的临时 URL。必须先建立真实登录态,再访问用户实际使用的不带 token 菜单路由,例如 `/#/micro-app/{MsKey}/{RoutePath}`,并确认地址栏没有退回旧的 `micro-app-host` 长地址。
@@ -102,7 +102,7 @@ Profile 或独立 `--user-data-dir`。
102
102
  如果页面内提供 Microi SDK 调用按钮,必须点击并断言返回 `Code=1`,同时确认没有 `登录身份已过期`、`1001`、`1002`。只看到标题文本不代表鉴权链路通过。
103
103
 
104
104
  <!-- /microi-progressive:chunk -->
105
- <!-- microi-progressive:chunk id=playwright-e2e-026 sha256=591700cfd4b78c63d7f69db5c5d4a5f57c48d85c8508112d2bccbaae06b24192 -->
105
+ <!-- microi-progressive:chunk id=playwright-e2e-026 sha256=3c8a1e8bbe281064f30f406703230d8df213f1f1e1d124edb8f9fc8a1df782ea -->
106
106
  ## 动态模块按钮验收
107
107
 
108
108
  修复或新增 `MoreBtns/FormBtns/PageBtns/PageTabs` 时,运行页看到按钮只证明“最终渲染结果”,不能证明入口确实可由模块引擎维护。至少同时保留三类证据:
@@ -222,6 +222,9 @@ UnblockIp:<ip>
222
222
  - 报表参数按类型分开:只有 13/15 传非空 Area,1/3/9/11 传非空 HttpCode,21/23 传 IsOverseas;17 不传 DomainName。不得统一附加无关或空筛选项,否则阿里云返回 InvalidParameter。内嵌调用的 V8.Param 可能是 CLR JObject,不向它写入配置对象,创建独立 JS 请求并从服务端读取接入配置。
223
223
  - SLS 只用固定查询模板与已校验域名/项目/地域/Logstore;自动判断基于 `remote_ip`、`response_size` 字节以及完整窗口、采集延迟、连续命中、白名单、冷却与限额。私网/环回/链路本地/组播和与保护 CIDR 重叠的地址不封禁。动态阈值须满足历史样本数,默认观察。
224
224
  - 云端变更先 `Preview` 再 `Submit`,请求号幂等、配置快照比较、独立持久化状态和租约不可省略。超时/崩溃记 Unknown 并 `Reconcile`,不能自动重发不确定写入。到期只删除本应用新增条目,重叠封禁延后回收。
225
+ - CMS 历史公有媒体的专用动作是 `RefreshCmsMedia/CmsRefreshStatus`;先验证 Capabilities 的 `CmsMediaRefresh/CmsRefreshTaskReadback`。管理员只能提交 `RendId/CmsTaskId`;服务端必须从当前租户已 Offline 的衍生、同站/同版本/同 InputHash 的原源删除检查点、可信 FileServer 与 `/当前租户/mci-cms-public/` 路径计算唯一旧 URL。拒绝任意 URL/目录/正则/客户端任务 Id/云密钥;普通 CMS 角色不能进入管理员入口,内部调用仍须重查权威撤销记录。
226
+ - 云刷新前独立提交操作请求键、租约、原任务快照和 `CloudWriteStarted`;未知只读回原任务,不重复云写入。缺失 TaskId 仅可依据原 URL、执行时间与前快照恢复唯一新任务,歧义保持 Unknown。任务全部 Complete/100%、原 URL 严格 HTTP404 后,CMS 还必须重查源对象不存在和当前发布权限,并在站点锁内消费当前租户权威 outbox。客户端 CacheVerified 标记、隐藏前台、源404、刷新受理或加随机参数404均不能作撤权成功。用户保存/下载副本不可召回。
227
+ - 精确文件刷新通常约5~6分钟;单 URL 入口保留默认每日10,000文件刷新额度、50QPS写入与5QPS任务读取边界,任务历史仅3天且同秒同 URL 任务可能合并,不假定请求与 TaskId 一一对应。刷新本身无独立费用,回源对象存储请求/流量仍可能计费。以阿里云 [RefreshObjectCaches](https://www.alibabacloud.com/help/en/cdn/developer-reference/api-cdn-2018-05-10-refreshobjectcaches)、[DescribeRefreshTasks](https://www.alibabacloud.com/help/en/cdn/developer-reference/api-cdn-2018-05-10-describerefreshtasks)及[刷新预热说明](https://help.aliyun.com/zh/cdn/user-guide/refresh-and-prefetch/)核对实际额度。验收先 warm 自有测试旧 URL 至真实缓存命中,再原请求撤回,保留源删除后旧 URL 仍200的红证、云任务与原 URL404绿证;Node模型通过不能替代真实云端。
225
228
  - 单域名 IP 黑名单与全账号海量封禁必须分开;后者需阿里云开通,须明确 `ALL_CDN_DOMAINS`,不在验收时自动开通付费服务。`limit_rate` 是至少 100 KB/s 的下载速率,不是 QPS;日志规则也不等于实时边缘 WAF。
226
229
  - `mci-cdn-security-tick` 回收到期封禁;每条启用规则通过 `V8.Method.SaveScheduleJob` 创建错峰任务并使用独立数据库租约。安装包包含基础调度及三张表的结构,不带云密钥、规则实例、白名单或任何测试 IP。
227
230
  - 验收分开记录 Node 行为测试、真实管理员/云端只读、文档保留 IP 的受控封禁/到期恢复、真实宿主页面、包正文 SHA 与安装。日志未投递或海量服务未开通时,如实标为待配置,不伪造云端通过。
@@ -16,7 +16,7 @@ description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus
16
16
  ---
17
17
 
18
18
  <!-- microi-progressive:begin -->
19
- <!-- microi-progressive:chunk id=ui-design-000 sha256=ba7fc233da47ef8d477540bc5a2b982eb0fef852cfffe9da12e5c0d03a57614d -->
19
+ <!-- microi-progressive:chunk id=ui-design-000 sha256=cb6d5153948310d2ec489d63189cef0387e23e5023b0977a39e4981ac7ddf8f5 -->
20
20
  ## 整体风格定义
21
21
 
22
22
  - **禁止弧形包边**:Tab、卡片、导航项、提示条和分组标题不得把强调色 `border-left` / `border-right` 与容器圆角组合成沿上下圆角弯曲的侧框,也不得用渐变、阴影或伪元素模拟同样的包边。默认不加侧框;需要强调时使用与容器边框独立的直竖线,垂直居中、与上下边缘留出间距且不随容器圆角弯折。直线端点可以有轻微圆角,容器本身仍可使用中性圆角边框。横向 Tabs 继续使用独立选中表面,不添加装饰线。亮色、暗色与移动端截图都必须核对这一规则。
@@ -54,7 +54,7 @@ description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus
54
54
  ---
55
55
 
56
56
  <!-- /microi-progressive:chunk -->
57
- <!-- microi-progressive:chunk id=ui-design-001 sha256=9593e1ab2bf4931cf4f0d96b87ce59c04a8d340dbf30c705f90375ec38d131fd -->
57
+ <!-- microi-progressive:chunk id=ui-design-001 sha256=1fe31e1ccbb6ede7c2f549b374f91056fa8a11c0b8f4e86e60041f68b23d434b -->
58
58
  ## 样式隔离与抗覆盖
59
59
 
60
60
  - Microi.UI 页面或局部 UI 必须使用 `.mci-page`、`data-mci-ui-root` 或项目级 `.mci-*` 根容器包裹,避免被宿主项目、第三方组件库、Markdown 渲染器的全局 CSS 意外覆盖。
@@ -67,7 +67,7 @@ description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus
67
67
  ---
68
68
 
69
69
  <!-- /microi-progressive:chunk -->
70
- <!-- microi-progressive:chunk id=ui-design-002 sha256=0d1bac0d19d61d288a6eb25f18fc15a045bca3df9a01399d5ce5224c8accffd3 -->
70
+ <!-- microi-progressive:chunk id=ui-design-002 sha256=ee85cba1f72b3b7e8327aaf86b4a713e0c45792c910b18a8d3518cfdcc42b572 -->
71
71
  ## 高端视觉标准
72
72
 
73
73
  - 每个新页面必须有首屏视觉重心:核心数据、主任务、产品/品牌对象或可操作内容应在第一屏明确出现,不能只有说明文字或空白装饰。
@@ -92,7 +92,7 @@ description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus
92
92
  ---
93
93
 
94
94
  <!-- /microi-progressive:chunk -->
95
- <!-- microi-progressive:chunk id=ui-design-003 sha256=62b9d5696d23ded43a0a7c82d520b69ee8182269579c7171808325877144abd3 -->
95
+ <!-- microi-progressive:chunk id=ui-design-003 sha256=e1d719d0eeab855b943a4f0de45af1c5b5d08b310e9ea6b183c229c3f5ae0e06 -->
96
96
  ## PC 后台菜单宫格 / 入口页规范
97
97
 
98
98
  适用于 `sys_menu` 子菜单入口、工作台快捷入口、后台功能入口页。此类页面是操作入口,不是营销卡片墙,重点是密度克制、对齐稳定、快速识别。
@@ -106,7 +106,7 @@ description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus
106
106
  - 修改后必须截图验收 1366/1440/1920 桌面宽度和 390 左右移动宽度,检查每行数量、行列对齐、卡片内边距、标题与统计间距、文字溢出和横向滚动。
107
107
 
108
108
  <!-- /microi-progressive:chunk -->
109
- <!-- microi-progressive:chunk id=ui-design-004 sha256=5d3aebaa07bf0df572b5eadfbc567fa58138a78816f0edf25fcff1a93d914ac7 -->
109
+ <!-- microi-progressive:chunk id=ui-design-004 sha256=ea379e7873b78b532fa959b64d4a97b89af19959037c5211afec47c30d58410f -->
110
110
  ## PC 后台数据卡片模式规范
111
111
 
112
112
  适用于 `diy-table` 卡片模式、任务/应用/客户/资产列表。它是高频数据操作容器,不是营销海报或入口宫格。
@@ -122,7 +122,7 @@ description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus
122
122
  ---
123
123
 
124
124
  <!-- /microi-progressive:chunk -->
125
- <!-- microi-progressive:chunk id=ui-design-005 sha256=99d3734279a75fe306ebf09943b0c550433d311c1df0b9cc63137aca835b9972 -->
125
+ <!-- microi-progressive:chunk id=ui-design-005 sha256=02cd6f4dfc86ebafc58fd770795f4ccb55fe43f1e851ef450ae49ceb0413bc1d -->
126
126
  ## 形态模式(圆角 / 扁平)
127
127
 
128
128
  Microi 项目必须支持用户或项目级形态偏好:`data-mci-shape="rounded"` 与 `data-mci-shape="flat"`。
@@ -158,7 +158,7 @@ Microi 项目必须支持用户或项目级形态偏好:`data-mci-shape="round
158
158
  ---
159
159
 
160
160
  <!-- /microi-progressive:chunk -->
161
- <!-- microi-progressive:chunk id=ui-design-006 sha256=f8d9a7c96a2c2696f82b596bdf1a7d02bed72ff796036c05d771ca3954bf68ba -->
161
+ <!-- microi-progressive:chunk id=ui-design-006 sha256=0a13456c54c0413d3055802d8789f924eb0d2f5918de2763d1e1fc0b5f60f634 -->
162
162
  ## 圆角
163
163
 
164
164
  ```css
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-007 sha256=b32dac5c75835929c6c55607807cad0cd14a013ddc1a41e307263549f2047867 -->
5
+ <!-- microi-progressive:chunk id=ui-design-007 sha256=bd9e24e1cdc0017a1bffccbe48505ad8d0a274d65f28f4e6a80e591dec813407 -->
6
6
  ## 颜色体系(CSS Variables — 支持主题切换)
7
7
 
8
8
  所有颜色必须通过 CSS 变量引用,禁止硬编码色值。变量定义放在全局样式入口(PC 端 `src/styles/mci-design.scss`,移动端 `<style>` 内或独立 CSS 文件)。
@@ -150,7 +150,7 @@
150
150
  ---
151
151
 
152
152
  <!-- /microi-progressive:chunk -->
153
- <!-- microi-progressive:chunk id=ui-design-008 sha256=80df5bdb440dea278d96692425780d40232b8ab4bbb604ee1b3f9727679ea65a -->
153
+ <!-- microi-progressive:chunk id=ui-design-008 sha256=01af2cebf85683f180693fd76cf6c5f1db4380274a9924acf5542b7b5f868ebc -->
154
154
  ## 阴影体系(层次与质感)
155
155
 
156
156
  阴影是塑造层次感、可点击性和高级质感的关键。采用多层阴影叠加,但不要做脏、糊、重的阴影。
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-009 sha256=3e553809ea501d359553ba0e78a1cf83c9fccc0cdc06a5d562d73af7ebc0c09d -->
5
+ <!-- microi-progressive:chunk id=ui-design-009 sha256=e7dcc4c0be203d5cddf6ec93d7db66ff78f4997e60eafcbd4c91cabab227767f -->
6
6
  ## 字体
7
7
 
8
8
  ```css
@@ -73,7 +73,7 @@
73
73
  ---
74
74
 
75
75
  <!-- /microi-progressive:chunk -->
76
- <!-- microi-progressive:chunk id=ui-design-010 sha256=06dccf8f187ce38d807057735f6b6acbf9a9037f37f64544fb933f16f28e58f0 -->
76
+ <!-- microi-progressive:chunk id=ui-design-010 sha256=cb6d86f002d44d484b3bb10b12e4194360739323609450f9c99e6aa10004cb24 -->
77
77
  ## 间距与触摸目标
78
78
 
79
79
  ### 界面引擎仪表盘密度与对齐
@@ -119,7 +119,7 @@
119
119
  ---
120
120
 
121
121
  <!-- /microi-progressive:chunk -->
122
- <!-- microi-progressive:chunk id=ui-design-011 sha256=fba089e9a092efca57bfad2a34a4b9bada857c1072b09488e29b3cf28eefaba1 -->
122
+ <!-- microi-progressive:chunk id=ui-design-011 sha256=dc8c655353a6349e385ea9187fe23a377b4d69e1f2bf102aa736e987a624bcc5 -->
123
123
  ## 骨架屏 Loading 设计规范
124
124
 
125
125
  所有依赖接口、数据库、远程资源或异步计算的数据区域,首屏加载态必须使用骨架屏(Skeleton Screen),不能只显示 spinner、进度圈、空图标或“数据加载中...”文案。骨架屏属于基础体验规范,适用于 PC、移动端 H5、uni-app、小程序和 WebView。
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-012 sha256=d59ae14c3991bb27949dcdcc0df3114ecbd1e627d6a69f5f78d1247ea2e02cd6 -->
5
+ <!-- microi-progressive:chunk id=ui-design-012 sha256=78f4544796729b2eb49bc892472e397962ec4fd3112dd4cecf29eba883a6888a -->
6
6
  ## 动效规范(丰富但不卡)
7
7
 
8
8
  ### 性能铁律
@@ -206,7 +206,7 @@
206
206
  ---
207
207
 
208
208
  <!-- /microi-progressive:chunk -->
209
- <!-- microi-progressive:chunk id=ui-design-013 sha256=385528713388a28e0182e2df9e2ed828ddb7cccaf7a3a5e78354f46a588f6f1c -->
209
+ <!-- microi-progressive:chunk id=ui-design-013 sha256=c2a784b1fc7d6f6f554661f4f1719d35c6c667037a817f697cb72e9535ae15eb -->
210
210
  ## Vue 3 过渡动画
211
211
 
212
212
  ```scss
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-014 sha256=abc0a2e1f26a1cfbfa5d73399e09479b7b71314a727bec8b0bf4258a5a3733dc -->
5
+ <!-- microi-progressive:chunk id=ui-design-014 sha256=cf27a0b68280343d0a942dd327a92ee6753527756e48123daf5fa4a15c36520f -->
6
6
  ## 组件风格速查
7
7
 
8
8
  ### 卡片(通用)
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-015 sha256=18e252a8b3e87b6522a9f434e7332afc9be1a5ab0797d7bd9e5d639bdcc9d240 -->
5
+ <!-- microi-progressive:chunk id=ui-design-015 sha256=4b94ff9643e3db76b247a63e8460e1768b6fdfeb87d65e3ec07fba94460e75c1 -->
6
6
  ## 移动端专用规范
7
7
 
8
8
  ### 1. 视口设置
@@ -136,7 +136,7 @@
136
136
  ---
137
137
 
138
138
  <!-- /microi-progressive:chunk -->
139
- <!-- microi-progressive:chunk id=ui-design-016 sha256=2c997040cef24fb5e8b6f2faab6d354473d4a962560fdaffd13f11294eb4cf1f -->
139
+ <!-- microi-progressive:chunk id=ui-design-016 sha256=fa50a41e93b623948d7f21521953413b049bc401d8a4c4af3bf7e8f3e3f8fbde -->
140
140
  ## 装饰性背景(低性能消耗方案)
141
141
 
142
142
  ### 结构化背景
@@ -209,7 +209,7 @@ Microi 背景必须服务内容层级,不能喧宾夺主。优先使用网格
209
209
  ---
210
210
 
211
211
  <!-- /microi-progressive:chunk -->
212
- <!-- microi-progressive:chunk id=ui-design-017 sha256=dfd5e3fe5ccef15772d0687dc031ce302cc9b2277e06f5c6dd0ad7113343f540 -->
212
+ <!-- microi-progressive:chunk id=ui-design-017 sha256=8d90d30831026b8cf401dac69b15d5a1439719aa5640b1eb868722e24567e113 -->
213
213
  ## 性能检查清单
214
214
 
215
215
  - [ ] 动画只使用 `transform` / `opacity`
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-018 sha256=c83c67d0a4520a52e8933e5b8785fe3a725e1b47b675cf1f5aa945187c9cfd2c -->
5
+ <!-- microi-progressive:chunk id=ui-design-018 sha256=0775731c9096616e8a72cdc5bcef34d8069d72bee2f2e00d1bc1fe78a82b91e6 -->
6
6
  ## 主题切换实现
7
7
 
8
8
  ### 首选:Microi.UI 运行时
@@ -179,7 +179,7 @@ function toggle() { cur.value = toggleTheme(); uni.showToast({ title: '已切换
179
179
 
180
180
 
181
181
  <!-- /microi-progressive:chunk -->
182
- <!-- microi-progressive:chunk id=ui-design-019 sha256=535f58f5173e164ebe23480d3a65ce894fcf0aab65dddc209dabd86c939cf9b6 -->
182
+ <!-- microi-progressive:chunk id=ui-design-019 sha256=b18f827091a6dd59b45177b6004ba86dfabdb299b9e22ea1f232ea0412765e30 -->
183
183
  ## 命名规范
184
184
 
185
185
  - CSS 变量前缀:`--mci-`
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-020 sha256=25aa81a39c664b1873ff5e7a3c5d0e8ad2b929824c90e16bd020f64c98a34b54 -->
5
+ <!-- microi-progressive:chunk id=ui-design-020 sha256=2efd631603aff04a45f251f0fc06ac83b39b2aebc1551b311920aac4ac6b9273 -->
6
6
  ## 速查:从头搭建一个移动端页面
7
7
 
8
8
  ```vue
@@ -56,7 +56,7 @@
56
56
  ---
57
57
 
58
58
  <!-- /microi-progressive:chunk -->
59
- <!-- microi-progressive:chunk id=ui-design-021 sha256=8a8884b0b064e7805cd03d904541b12da4539e73172d31f00d32c1ecfaee32f6 -->
59
+ <!-- microi-progressive:chunk id=ui-design-021 sha256=210d5091c308f562b56bce93b257a74ed1894cf0f15393f703149c05c3ac2584 -->
60
60
  ## 🚨 移动端低代码项目落地踩坑(必读,2026.5)
61
61
 
62
62
  实战中频繁出现的 7 类问题,统一按以下规则处理。
@@ -122,7 +122,7 @@ Scoped SCSS 中的 `.entry text { font-size: 40rpx; }` 会同时放大图标文
122
122
  - 长任务使用后台任务并持久化进度;普通接口写入后以远端回读为最终依据。
123
123
 
124
124
  <!-- /microi-progressive:chunk -->
125
- <!-- microi-progressive:chunk id=ui-design-022 sha256=4962a1ec7bc49ae1a2706c58fb6f929304ca254e3fd4d8b626fefbc17067bce2 -->
125
+ <!-- microi-progressive:chunk id=ui-design-022 sha256=8f8a9a69e2816682ac2b6a26d932c23240c477191d4f3029a821dafe23250c7b -->
126
126
  ## 🔗 关联字段:保存真实 Id,界面展示可读标签
127
127
 
128
128
  关联字段的数据库事实值通常是 `XxxId`。表单使用 `JoinForm`、`OpenTable` 或带数据源的 `Select` 显示名称,`SelectSaveField` 保存 `Id`,`SelectLabel` 展示名称。不要因为列表默认显示 Id,就强制所有业务表冗余一对可编辑的 `XxxId/XxxName` 字段。
@@ -165,7 +165,7 @@ Scoped SCSS 中的 `.entry text { font-size: 40rpx; }` 会同时放大图标文
165
165
  ---
166
166
 
167
167
  <!-- /microi-progressive:chunk -->
168
- <!-- microi-progressive:chunk id=ui-design-023 sha256=1c731f6915dae4de788e84af3f6a59cf5d116a4de1f9ca5541f13b55110521ca -->
168
+ <!-- microi-progressive:chunk id=ui-design-023 sha256=9767f1e46e8491d63a9f9a00fadef9125d124841a79141f07dd7e4529da3bc25 -->
169
169
  ## 表单布局规范(Column)
170
170
 
171
171
  > 平台默认设计标准:所有 `diy_table` **应使用双列布局** (`Column = 2`),更紧凑现代,符合主流后台 SaaS 视觉密度。
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=ui-design-024 sha256=7af53d03d0828232aaf7ab54d6527f5e2cf292d8eb493d75d9ab42adc3030ba3 -->
5
+ <!-- microi-progressive:chunk id=ui-design-024 sha256=19bc007acce56bb980d647154c2eb455e0a24aee5a020c4eed4231baf56e38f4 -->
6
6
  ## 表单分组规范:Tabs vs CollapseGroup(强制)
7
7
 
8
8
  > **核心原则**:默认**不分组** → 小业务域用 **`CollapseGroup` 折叠分组** → 只有足够长或强任务隔离的业务域才用 **`Tabs` 分页**。禁止只按字段数判断:双列布局中 8 个短字段约占 4 行,仍不应独占 Tab;普通业务域通常达到 6 个有效表单行才考虑 Tab。
@@ -53,7 +53,7 @@
53
53
  ---
54
54
 
55
55
  <!-- /microi-progressive:chunk -->
56
- <!-- microi-progressive:chunk id=ui-design-025 sha256=e6e11a8153bc5d1a1c5e9f1868aaae9a101843961fcf94dba42681b0a6091ad7 -->
56
+ <!-- microi-progressive:chunk id=ui-design-025 sha256=3809bc3c37dcfc812f58d9a0f7811a24e612944f2ade248104223fbd4172fa15 -->
57
57
  ## 缓存刷新(解决"我改了字段但页面不变"问题)
58
58
 
59
59
  平台对 `diy_field` 的字段列表有 Redis 缓存,键格式 `Microi:{OsClient}:FormData:diy_table_field_list:{TableId|TableName}`。
@@ -72,7 +72,7 @@ microi_refresh_schema_cache { "tables": ["mall_address", "mall_member"] }
72
72
  ---
73
73
 
74
74
  <!-- /microi-progressive:chunk -->
75
- <!-- microi-progressive:chunk id=ui-design-026 sha256=3d53780b3ae17dabba22a2567d0d6e2c51e4dbce504d6e341b737881a3c4e749 -->
75
+ <!-- microi-progressive:chunk id=ui-design-026 sha256=97d1198e46e1b759a59e47ccfc1a69ada9f068fcd2ce481d4f9b0f53124c5704 -->
76
76
  ## 接口引擎匿名访问
77
77
 
78
78
  登录、注册、首页公共数据等接口必须 `AllowAnonymous=1`,否则未登录用户调用会拿到 `null`:
@@ -86,7 +86,7 @@ microi_set_engine_anonymous {
86
86
 
87
87
 
88
88
  <!-- /microi-progressive:chunk -->
89
- <!-- microi-progressive:chunk id=ui-design-027 sha256=e6e15cc34871821da89f70cb2a5326942d9d90fe99ed5c5a315415ac57f1532c -->
89
+ <!-- microi-progressive:chunk id=ui-design-027 sha256=4ff1aff2f0309fe2bacaae1e12a1ca40875211c010b4041f1d0c11d89634650d -->
90
90
  ## MCI-UI 与第三方组件库策略
91
91
 
92
92
  Microi 的 UI 规范不应该只停留在 skills 文档。面向品牌长期建设时,应形成可复用的 MCI-UI 体系:设计变量、基础样式、组件约定、示例站点、移动端与 PC 网站组件库。
@@ -102,7 +102,7 @@ Microi 的 UI 规范不应该只停留在 skills 文档。面向品牌长期建
102
102
  - `microi.doc` 作为 VitePress 官方文档站,应逐步成为 MCI-UI 的展示入口:组件演示、设计变量、移动端骨架屏、安全区、富文本、上传资源、主题切换都应该有可查看示例,而不是只写在 skill 中。
103
103
 
104
104
  <!-- /microi-progressive:chunk -->
105
- <!-- microi-progressive:chunk id=ui-design-028 sha256=eee54b657b766f1d1ef137fb1df07fc8eec0b5363502838475eda81f9d031512 -->
105
+ <!-- microi-progressive:chunk id=ui-design-028 sha256=3d8b5773f340f253a48a09657a3d01b80eeccd4874c34c641547cb5994dc0a42 -->
106
106
  ## MCI-UI 源码落地位置
107
107
 
108
108
  MCI-UI 已在吾码源码根目录落地:`Microi.UI/`。
@@ -75,6 +75,22 @@ tests/
75
75
 
76
76
  租户 Hook 使用新的稳定 Key;首次安装后归租户维护,同 Key 后续版本不能改回 `Managed`。
77
77
 
78
+ ### 仅共享编译运行产物
79
+
80
+ 消费者只获得运行应用、不安装业务资源时,商城发布显式传
81
+ `RuntimeAssetsOnly=true`。只接受 `ProtocolVersion=3`、`ApplicationType=Web`、
82
+ 显式 `IncludeSource=false` 和已通过提交证明校验的 `SharedPublicRuntime`。
83
+ 源码是否在本地或私有开发端保管,与消费者包不含源码分别验收;此模式本身不要求上传本地源码。
84
+
85
+ - 请求资源选择、历史 `SelectMenu/SelectTable/SelectApiEngine/SelectData` 和
86
+ `PreparedAssets.MenuContract` 均为空,非空时拒绝,不自动抹除;禁止混用 `DatabaseOnlyBuild`。
87
+ - 通过既有 `microi_run_engine.params` 向 `ai_app_publish_store` 传入开关,先
88
+ `InspectResourceSnapshot` 再 `Publish + ExpectedResourceSnapshotHash`,两次使用同一组冻结参数。
89
+ - 回读真实包的十一项资源数组、`SourceFiles/BuildAssets` 均为零,`SourceZip/BuildZip` 为空,
90
+ 只保留共享运行交付。完整数组和兼容条件见 [应用商城 Skill](../../app-store/SKILL.md#仅共享编译运行产物)。
91
+ - 此模式的目标验收检查编译入口、宿主身份和实际服务契约;没有声明的表、菜单、接口及 Hook
92
+ 不应在消费者租户生成。需要租户业务资源时使用普通资源包流程。
93
+
78
94
  ## 官方发布顺序
79
95
 
80
96
  只有当前 MCP 明确绑定官方 `https://api.itdos.com`、`OsClient=iTdos` 且用户已授权写入时才执行:
@@ -380,3 +380,9 @@ return { Code: 1, Data: { Upstream: resp.Content, Summary: summary.Data } };
380
380
  ❌ 内部接口忘开 `StopHttp` → 被外部直接调用绕过校验
381
381
  ❌ 对账接口未配置 `LockKey` → 集群多实例并发执行 → 数据双倍
382
382
  ❌ 文件下载接口未开 `IsResponseFile` → 返回 JSON 而非文件流
383
+
384
+ ## 复盘:后台任务调度路由与执行目标的参数边界
385
+
386
+ - HTTP 调用持久后台任务时使用固定 `/apiengine/platform-background-task?OsClient=` 与 `Action: 'RunApiEngine'`;目标接口放在独立的 `TargetApiEngineKey`,业务参数放在 `Param`,幂等和并发策略放在 `Options`。不可用正文 `ApiEngineKey` 改写路由调度器。
387
+ - 回归至少验证嵌套业务参数与 Options 能完整抵达可信后台原子、同一幂等键返回原任务、匿名及未授权身份拒绝执行。页面提交成功后还需回读后台任务终态,不能将“已排队”视为业务完成。
388
+ - 原子能力若按持久任务记录中的接口 Key 校验可信执行身份,队列目标必须是该原子允许的工作器本身;嵌套调用不会改写任务记录的接口身份。禁止把兼容提交器排入队列后再调用工作器,并通过扩大 Key 白名单或省略栅栏令牌校验掩盖目标不一致。回归应对照队列目标与原子的固定 Key,并走一次真实写流程到终态。