@microi.net/cli 5.5.9 → 5.6.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 (161) 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 +99 -99
  10. package/scripts/microi-cli.js +39 -36
  11. package/scripts/microi-skills.meta.json +341 -338
  12. package/skills/.microi-skills-version.json +2 -2
  13. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  14. package/skills/README.md +4 -4
  15. package/skills/ai-engine/SKILL.md +45 -45
  16. package/skills/ai-platform-governance/SKILL.md +177 -177
  17. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  18. package/skills/app-store/SKILL.md +21 -4
  19. package/skills/business-blueprint/SKILL.md +85 -85
  20. package/skills/datasource-engine/SKILL.md +91 -91
  21. package/skills/dos-orm/SKILL.md +15 -0
  22. package/skills/dos-orm/references/api-reference.md +229 -229
  23. package/skills/email-engine/SKILL.md +80 -80
  24. package/skills/email-engine/references/v8-email.md +34 -34
  25. package/skills/job-engine/SKILL.md +154 -154
  26. package/skills/message-notification/SKILL.md +27 -1
  27. package/skills/message-notification/agents/openai.yaml +5 -5
  28. package/skills/message-notification/references/contracts.md +102 -102
  29. package/skills/microi-ai-app-auth.js +652 -652
  30. package/skills/microi-ai-application/SKILL.md +102 -102
  31. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  32. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  33. package/skills/microi-client-frontend/SKILL.md +47 -41
  34. 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 +4 -4
  35. 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 +30 -30
  36. 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 +58 -58
  37. package/skills/microi-codex/SKILL.md +2 -0
  38. package/skills/microi-codex-installer/SKILL.md +216 -216
  39. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  40. package/skills/microi-datasource-mapping/SKILL.md +67 -67
  41. package/skills/microi-db-schema/SKILL.md +6 -6
  42. package/skills/microi-db-schema/references/core-tables.md +18 -18
  43. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  44. package/skills/microi-db-schema/references/schema-overview.md +11 -11
  45. package/skills/microi-db-schema/references/schema.md +46 -46
  46. package/skills/microi-db-schema/references/table-catalog.md +57 -57
  47. package/skills/microi-deployment/SKILL.md +18 -1
  48. package/skills/microi-deployment/references/deployment-matrix.md +101 -101
  49. package/skills/microi-docs-coverage/SKILL.md +10 -0
  50. package/skills/microi-docs-coverage/references/capability-map.md +3 -2
  51. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  52. package/skills/microi-form-engine/SKILL.md +27 -3
  53. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  54. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  55. package/skills/microi-form-layout/SKILL.md +13 -13
  56. 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
  57. package/skills/microi-frontend-sdk/SKILL.md +4 -4
  58. 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 +175 -175
  59. package/skills/microi-left-right-layout/SKILL.md +141 -141
  60. package/skills/microi-microservice/SKILL.md +2 -1
  61. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  62. 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
  63. package/skills/microi-solution-quotation/SKILL.md +78 -78
  64. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  65. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  66. package/skills/microi-sso/SKILL.md +6 -0
  67. package/skills/microi-sso/references/acceptance.md +49 -49
  68. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  69. package/skills/microi-sso/references/inbound.md +53 -53
  70. package/skills/microi-sso/references/outbound.md +39 -39
  71. package/skills/microi-system-delivery/SKILL.md +5 -4
  72. 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 +7 -2
  73. package/skills/microi-ui/SKILL.md +7 -2
  74. package/skills/microi-uniapp-frontend/SKILL.md +134 -134
  75. 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 +136 -136
  76. 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 +124 -124
  77. package/skills/module-engine/SKILL.md +30 -14
  78. package/skills/ocr-engine/SKILL.md +2 -2
  79. package/skills/ocr-engine/agents/openai.yaml +1 -1
  80. package/skills/page-engine/SKILL.md +28 -28
  81. 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 +126 -126
  82. 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 +42 -42
  83. package/skills/performance-testing/SKILL.md +120 -120
  84. package/skills/playwright-e2e/SKILL.md +84 -84
  85. 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 +68 -68
  86. 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 +64 -64
  87. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +20 -20
  88. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +69 -69
  89. package/skills/print-engine/SKILL.md +11 -3
  90. package/skills/production-readonly-audit/SKILL.md +41 -41
  91. package/skills/report-engine/SKILL.md +71 -71
  92. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  93. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  94. package/skills/scripts/sync-embedded-skills.mjs +46 -0
  95. package/skills/scripts/validate-progressive-disclosure.mjs +8 -3
  96. package/skills/search-engine/SKILL.md +75 -75
  97. package/skills/spider-engine/SKILL.md +190 -190
  98. package/skills/system-observability/SKILL.md +169 -157
  99. package/skills/system-observability/references/memory-incident-triage.md +73 -73
  100. package/skills/translate-engine/SKILL.md +1 -1
  101. package/skills/ui-design/SKILL.md +3 -1
  102. package/skills/uniapp-mall-assets/SKILL.md +170 -170
  103. package/skills/unity-integration/SKILL.md +155 -155
  104. package/skills/unity-integration/agents/openai.yaml +4 -4
  105. package/skills/unity-integration/references/ai-app-delivery.md +103 -103
  106. package/skills/unity-integration/references/sdk-api.md +82 -82
  107. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  108. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  109. package/skills/v8-api-config/SKILL.md +4 -0
  110. package/skills/v8-cache-pattern/SKILL.md +306 -306
  111. package/skills/v8-crud-api/SKILL.md +29 -29
  112. 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 +56 -56
  113. package/skills/v8-debugging/SKILL.md +143 -143
  114. package/skills/v8-explorer-tree/SKILL.md +64 -64
  115. 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 +201 -201
  116. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +118 -118
  117. 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 +32 -32
  118. package/skills/v8-file-upload/SKILL.md +5 -2
  119. 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 +2 -2
  120. 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 +138 -138
  121. package/skills/v8-formengine-http/SKILL.md +126 -108
  122. package/skills/v8-frontend-events/SKILL.md +22 -22
  123. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  124. package/skills/v8-frontend-events/references/bluetooth-print.md +247 -247
  125. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +50 -50
  126. package/skills/v8-http-integration/SKILL.md +106 -106
  127. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +31 -31
  128. 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 +5 -5
  129. package/skills/v8-image-processing/SKILL.md +190 -190
  130. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  131. package/skills/v8-image-processing/references/api-reference.md +623 -623
  132. package/skills/v8-menu-buttons/SKILL.md +103 -103
  133. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +145 -145
  134. 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
  135. 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 +43 -43
  136. package/skills/v8-mongodb/SKILL.md +65 -65
  137. package/skills/v8-mq-mqtt/SKILL.md +175 -175
  138. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  139. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +137 -137
  140. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  141. package/skills/v8-saas-multi-tenant/SKILL.md +223 -223
  142. package/skills/v8-security/SKILL.md +1 -1
  143. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +122 -122
  144. package/skills/v8-sql-query/SKILL.md +7 -5
  145. package/skills/v8-table-event/SKILL.md +9 -2
  146. 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 +1 -1
  147. 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 +15 -15
  148. package/skills/v8-tcp-integration/SKILL.md +1 -1
  149. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  150. package/skills/v8-template-engine/SKILL.md +59 -59
  151. package/skills/v8-utilities/SKILL.md +92 -92
  152. package/skills/v8-utilities/references/client-api-index.md +143 -143
  153. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  154. package/skills/v8-utilities/references/server-api-index.md +74 -74
  155. package/skills/v8-workflow/SKILL.md +13 -4
  156. package/skills/vision-engine/SKILL.md +19 -19
  157. package/skills/vision-engine/references/architecture-and-acceptance.md +34 -34
  158. package/skills/workspace-conventions/SKILL.md +35 -12
  159. 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 +2 -2
  160. 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 +179 -179
  161. 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 +21 -21
@@ -1,190 +1,190 @@
1
- # ai-platform-governance 详细参考 1
2
-
3
- > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
-
5
- <!-- microi-progressive:chunk id=ai-platform-governance-008 sha256=e3927151358f0c9e801c1027edb877332c8e148f245d58eade2eaae53ddb7948 -->
6
- ## 功能开关
7
-
8
- 发布调用 `mci-feature-flag-publish`,求值调用 `mci-feature-flag-evaluate`。
9
-
10
- - 规则只允许 `UserIds/ExcludedUserIds/DeptIds/RoleIds`。
11
- - 灰度比例 0—100,按稳定主体 Hash 分桶,禁止 `Math.random()`。
12
- - 普通用户只能使用当前 DiyToken 的权威 `UserId/RoleIds/DeptIds`;只有超级管理员可模拟其它主体。
13
- - 开关内容生成 `FeatureFlag` 不可变版本;无变化复用,版本号冲突拒绝。
14
- - 功能开关不能代替任何权限、状态机、幂等或审计。
15
-
16
- <!-- /microi-progressive:chunk -->
17
- <!-- microi-progressive:chunk id=ai-platform-governance-009 sha256=ca73d439788b802c1b999c0a7973e735caf8b4149d4be116511e470ca93d728e -->
18
- ## 发布状态机
19
-
20
- ### 固定计划
21
-
22
- 使用 `mci-release-plan-publish`,不要直接 Add/Upt `mci_release_plan`。
23
-
24
- 允许发布步骤:
25
-
26
- - `Verify`:`FeatureFlag/ConfigurationProfile/ServicePolicy/AssetVersion/Portal/ChangeSet`;
27
- - `PortalPublish`;
28
- - `Extension`:由 `mci-release-execute-extension` 处理并使用 `StepIdempotencyKey`。
29
-
30
- 允许回滚步骤:`Verify`、`PortalRollback`、`Extension`。
31
-
32
- 生产计划至少包含发布步骤、回滚步骤、测试/回读证据和审批策略。计划中发现疑似 Secret 失败关闭。
33
-
34
- ### 审批
35
-
36
- `mci-release-transition` 支持:
37
-
38
- ```text
39
- Submit / Approve / Reject / Cancel / Reopen
40
- ```
41
-
42
- 每次调用必须传 `ExpectedPlanHash + ExpectedRowVersion`。审批记录按计划 Hash、轮次和审批人生成不可变 `ApprovalKey`。职责分离开启时创建人不能审批自己的计划。
43
-
44
- ### 门禁
45
-
46
- `mci-release-validate` 可检查:
47
-
48
- - 计划完整性、发布/回滚步骤、证据和审批;
49
- - `NoCriticalAlerts`、`NoIdentityConflicts`、`NoConfigurationDrift`;
50
- - `PortalVersion`、`FeatureFlag`、`ChangeSet`;
51
- - `Extension` 门禁。
52
-
53
- 通过只进入 `Ready`,不等于已发布。
54
-
55
- ### 执行与恢复
56
-
57
- `mci-release-execute` 输入:
58
-
59
- ```js
60
- {
61
- ReleasePlanId,
62
- Direction: 'Release' | 'Rollback',
63
- IdempotencyKey,
64
- ExpectedPlanHash,
65
- Resume: false
66
- }
67
- ```
68
-
69
- - 每次调用只提交一个步骤;调用方依据 `HasMore` 继续。
70
- - 运行台账保存 RunKey、Checkpoint、LeaseToken/Expiry、FencingToken、RowVersion 和结果摘要。
71
- - 失败返回 `Code=1, Data.Status='Failed', ResumeRequired=true`,以便失败事实提交;业务成功不能只看 `Code`。
72
- - 续跑必须使用同一 IdempotencyKey 且 `Resume=true`。
73
- - 变更子步骤使用独立事务;成功后台账中断时用 `StepIdempotencyKey` 重试。
74
-
75
- <!-- /microi-progressive:chunk -->
76
- <!-- microi-progressive:chunk id=ai-platform-governance-010 sha256=cb8f46acd05462f4fb99d52517b34f9f9a7ae785f44d6ea0c0f1e79f050068d0 -->
77
- ## 服务治理
78
-
79
- ### 实例协议
80
-
81
- - `mci-service-instance-register`:生成实例令牌,数据库只存摘要。
82
- - `mci-service-instance-heartbeat`:实例身份或管理员更新租约,使用 RowVersion/FencingToken。
83
- - `mci-service-instance-drain`:先排空再退出流量。
84
-
85
- ### 策略与调用闭环
86
-
87
- - `mci-service-policy-publish`:版本/区域/标签/权重、限流、熔断、重试、降级;DryRun/CAS/不可变 `ServicePolicy` 版本。
88
- - `mci-service-resolve`:按权威角色/主体与稳定 Hash 选择单个端点,普通调用方不返回全部候选。
89
- - `mci-service-policy-acquire`:共享 Redis 固定窗口、持久 Outcome 重建熔断、半开共享许可。
90
- - `mci-service-policy-outcome`:Permit 归属校验、稳定 OutcomeKey、持久结果与调用边聚合。
91
- - `mci-service-topology`:从持久调用边读取运行拓扑。
92
-
93
- V8 业务只能使用租户隔离的 `SetIfNotExists/Expire/HashIncrement` 原子能力,不能获得原始 Redis 客户端或自定义 Key 前缀逃逸租户边界。
94
-
95
- <!-- /microi-progressive:chunk -->
96
- <!-- microi-progressive:chunk id=ai-platform-governance-011 sha256=db964d7f412ce56112c7a8173a10a6a1f33c762761747b6db780463a0e07f79d -->
97
- ## Trace、告警与日志
98
-
99
- ### 可信原子能力
100
-
101
- - `V8.Method.QuerySystemLogSignal`:有界日志计数、错误率、P95 和样例;
102
- - `V8.Method.GetTraceTimeline`:跨月 Trace/Span 时间线;
103
- - `V8.Method.PlanSystemLogLifecycle`:只读生命周期估算;
104
- - `V8.Method.RunSystemLogLifecycle`:仅可信持久后台任务可调用的物理执行器。
105
-
106
- ### 告警
107
-
108
- - `mci-alert-evaluate` 使用持久窗口台账,覆盖连续触发/恢复、去重和抑制。
109
- - `mci-alert-scan`、`mci-alert-dispatch`、`mci-alert-delivery-send` 均为内部任务接口。
110
- - Dispatch 只写 Outbox;Sender 以 ClaimToken、LeaseExpiresAt、RowVersion 和 DeliveryKey 送达。
111
- - `mci_alert_route` 可配置值班排班、升级链和 SLA。
112
- - 渠道发送只写 `mci-alert-notify-extension`。
113
-
114
- ### 日志生命周期
115
-
116
- `mci_log_policy` 包含匹配/采样、脱敏规则、热温冷天数、日/总配额、超限动作、归档模式和法律保留。
117
-
118
- - 先 `mci-log-lifecycle-plan` 获取 PlanHash/估算。
119
- - 再通过持久后台任务调用 `mci-log-lifecycle-execute`。
120
- - 每片归档为 gzip JSONL,私有 HDFS 必须回读长度和 SHA-256。
121
- - 先写 `ArchiveVerified` 收据,再条件删除,再回读为零,最后标记 `Committed`。
122
- - `Extension` 模式由 `mci-log-archive-extension` 处理;法律保留不能删除。
123
-
124
- <!-- /microi-progressive:chunk -->
125
- <!-- microi-progressive:chunk id=ai-platform-governance-012 sha256=82e059f90494a679d4073693b83904826841a7c87e0ed1e5ab0e28575eedffac -->
126
- ## 资产、协作和变更集
127
-
128
- - `mci-asset-publish` 使用 `microi.asset.v1`,声明 Component、Props、Setters、DataAdapters、Platforms、DependencyPackages。
129
- - 校验语义版本范围、缺失依赖、循环、最大深度、规范化摘要、DryRun 和 CAS。
130
- - `mci-asset-resolve` 验证内容 Hash,返回 `ResolvedDependencies/DependencyGraph/LoadOrder`。
131
- - `mci-collaboration-lease` 使用共享租约和 fencing token;旧编辑者不能保存。
132
- - `mci-change-set-validate` 检查资源、PlanHash、生产证据和回滚计划。
133
- - Page JSON ↔ Vue SFC 只处理平台生成的受控标记,不执行任意 Vue/JavaScript,也不承诺任意源码无损反编译。
134
-
135
- <!-- /microi-progressive:chunk -->
136
- <!-- microi-progressive:chunk id=ai-platform-governance-013 sha256=b286f47071ac64e9e7d75929134123e8a3ef65a05ddb86007554ae05099e1445 -->
137
- ## 可恢复导入
138
-
139
- - `mci-import-plan`:JSON/CSV/Excel 解析、字段元数据校验、文件/计划/行 Hash、公式注入与敏感字段拒绝。
140
- - `mci-import-stage`:按 ExpectedPlanHash 幂等写暂存行。
141
- - `mci-import-execute`:必须通过持久后台任务;每片独立提交 Checkpoint/FencingToken。
142
- - `mci-import-control`:Pause/Resume/Cancel/Retry,使用状态条件更新。
143
- - `mci-import-rollback`:只恢复当前值仍等于 After 基线的记录;冲突不覆盖。
144
-
145
- 单批最多 2,000 行。更大数据应拆批或使用专用迁移作业,不提高内存上限硬顶。
146
-
147
- <!-- /microi-progressive:chunk -->
148
- <!-- microi-progressive:chunk id=ai-platform-governance-014 sha256=9c5387dccbc2ff092470edc70b9600416700ac734f15df2c2e775bae0adf00c4 -->
149
- ## 页面与蓝图版本
150
-
151
- 页面工具:
152
-
153
- ```text
154
- microi_list_page_history
155
- microi_get_page_history
156
- microi_compare_page_versions
157
- microi_export_page_design
158
- microi_rollback_page_design
159
- ```
160
-
161
- 蓝图提供对应的历史、读取、比较、导出和回滚工具。修改前读取 CurrentHash,保存传 ExpectedHash,写后回读新 Hash 与不可变历史。回滚创建新版本,不删除旧历史。
162
-
163
- <!-- /microi-progressive:chunk -->
164
- <!-- microi-progressive:chunk id=ai-platform-governance-015 sha256=6fafd84efd63a1607c4c98c4a173d755b2ba22fb7a251a21ed4d4699556656a7 -->
165
- ## 应用商城发布
166
-
167
- - 官方发布使用绑定 `https://api.itdos.com`、`OsClient=iTdos` 的 `microi_itdos`。
168
- - 先构建 Manifest、22 项应用契约、微服务类型检查/契约/生产构建。
169
- - 发布请求版本、资产准备版本和包内 `PackageInfo.Version` 必须精确相同;42 个菜单、40 张治理表和 64 个接口引擎的选择必须来自当前包正文。
170
- - 包内 `ResourcePolicies.ApiEngines` 必须精确为 57 个 Managed + 7 个 CreateIfMissing。
171
- - 发布后独立回读应用版本、状态、包内容、45 表/873 字段、42 菜单(含已绑定 `/overview` 的治理工作台)、64 接口、任务、10 路由和构建资产 Hash。
172
- - 定时任务必须在 `PostSchema` 后通过独立 `ScheduleJobs` checkpoint 安装并回读;成功版本只能在任务阶段之后写入。
173
- - 官方发布源禁止自安装和 `ValidateOnly`;发布源做精确包回读,安装验证在非官方目标租户或本地非发布源环境完成。
174
- - 目标安装/更新后再次回读,并做管理员 PC/390px 浏览器冒烟。
175
- - 商城发布不等于生产 API/Web 容器部署。
176
-
177
- <!-- /microi-progressive:chunk -->
178
- <!-- microi-progressive:chunk id=ai-platform-governance-016 sha256=76dab40556ce9a5a732c398d2f534c16478a1a88d4c1efdcdeaa6ba76d4339df -->
179
- ## 双节点与浏览器验收
180
-
181
- 至少覆盖:
182
-
183
- - 两节点同时心跳、同一策略解析、同一限流窗口和熔断半开;
184
- - 同一发布幂等键并发执行、租约竞争、步骤失败、台账提交前中断、同键续跑与回滚;
185
- - Redis/MongoDB 短暂故障、锁持有者退出、重复消息和滚动版本共存;
186
- - PC 10 路由、失败态、空态、重复动作;390×844 下移动导航、对话框、表单和无整页横向溢出;
187
- - 页面源码桥、资产依赖循环、协作旧 fencing、导入暂停/恢复和条件回滚。
188
-
189
- 最终报告必须分别列出源码/测试、远端写入、真实浏览器、应用商城、正式发布和生产部署证据;没有执行的层不能声称通过。
190
- <!-- /microi-progressive:chunk -->
1
+ # ai-platform-governance 详细参考 1
2
+
3
+ > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
+
5
+ <!-- microi-progressive:chunk id=ai-platform-governance-008 sha256=e3927151358f0c9e801c1027edb877332c8e148f245d58eade2eaae53ddb7948 -->
6
+ ## 功能开关
7
+
8
+ 发布调用 `mci-feature-flag-publish`,求值调用 `mci-feature-flag-evaluate`。
9
+
10
+ - 规则只允许 `UserIds/ExcludedUserIds/DeptIds/RoleIds`。
11
+ - 灰度比例 0—100,按稳定主体 Hash 分桶,禁止 `Math.random()`。
12
+ - 普通用户只能使用当前 DiyToken 的权威 `UserId/RoleIds/DeptIds`;只有超级管理员可模拟其它主体。
13
+ - 开关内容生成 `FeatureFlag` 不可变版本;无变化复用,版本号冲突拒绝。
14
+ - 功能开关不能代替任何权限、状态机、幂等或审计。
15
+
16
+ <!-- /microi-progressive:chunk -->
17
+ <!-- microi-progressive:chunk id=ai-platform-governance-009 sha256=ca73d439788b802c1b999c0a7973e735caf8b4149d4be116511e470ca93d728e -->
18
+ ## 发布状态机
19
+
20
+ ### 固定计划
21
+
22
+ 使用 `mci-release-plan-publish`,不要直接 Add/Upt `mci_release_plan`。
23
+
24
+ 允许发布步骤:
25
+
26
+ - `Verify`:`FeatureFlag/ConfigurationProfile/ServicePolicy/AssetVersion/Portal/ChangeSet`;
27
+ - `PortalPublish`;
28
+ - `Extension`:由 `mci-release-execute-extension` 处理并使用 `StepIdempotencyKey`。
29
+
30
+ 允许回滚步骤:`Verify`、`PortalRollback`、`Extension`。
31
+
32
+ 生产计划至少包含发布步骤、回滚步骤、测试/回读证据和审批策略。计划中发现疑似 Secret 失败关闭。
33
+
34
+ ### 审批
35
+
36
+ `mci-release-transition` 支持:
37
+
38
+ ```text
39
+ Submit / Approve / Reject / Cancel / Reopen
40
+ ```
41
+
42
+ 每次调用必须传 `ExpectedPlanHash + ExpectedRowVersion`。审批记录按计划 Hash、轮次和审批人生成不可变 `ApprovalKey`。职责分离开启时创建人不能审批自己的计划。
43
+
44
+ ### 门禁
45
+
46
+ `mci-release-validate` 可检查:
47
+
48
+ - 计划完整性、发布/回滚步骤、证据和审批;
49
+ - `NoCriticalAlerts`、`NoIdentityConflicts`、`NoConfigurationDrift`;
50
+ - `PortalVersion`、`FeatureFlag`、`ChangeSet`;
51
+ - `Extension` 门禁。
52
+
53
+ 通过只进入 `Ready`,不等于已发布。
54
+
55
+ ### 执行与恢复
56
+
57
+ `mci-release-execute` 输入:
58
+
59
+ ```js
60
+ {
61
+ ReleasePlanId,
62
+ Direction: 'Release' | 'Rollback',
63
+ IdempotencyKey,
64
+ ExpectedPlanHash,
65
+ Resume: false
66
+ }
67
+ ```
68
+
69
+ - 每次调用只提交一个步骤;调用方依据 `HasMore` 继续。
70
+ - 运行台账保存 RunKey、Checkpoint、LeaseToken/Expiry、FencingToken、RowVersion 和结果摘要。
71
+ - 失败返回 `Code=1, Data.Status='Failed', ResumeRequired=true`,以便失败事实提交;业务成功不能只看 `Code`。
72
+ - 续跑必须使用同一 IdempotencyKey 且 `Resume=true`。
73
+ - 变更子步骤使用独立事务;成功后台账中断时用 `StepIdempotencyKey` 重试。
74
+
75
+ <!-- /microi-progressive:chunk -->
76
+ <!-- microi-progressive:chunk id=ai-platform-governance-010 sha256=cb8f46acd05462f4fb99d52517b34f9f9a7ae785f44d6ea0c0f1e79f050068d0 -->
77
+ ## 服务治理
78
+
79
+ ### 实例协议
80
+
81
+ - `mci-service-instance-register`:生成实例令牌,数据库只存摘要。
82
+ - `mci-service-instance-heartbeat`:实例身份或管理员更新租约,使用 RowVersion/FencingToken。
83
+ - `mci-service-instance-drain`:先排空再退出流量。
84
+
85
+ ### 策略与调用闭环
86
+
87
+ - `mci-service-policy-publish`:版本/区域/标签/权重、限流、熔断、重试、降级;DryRun/CAS/不可变 `ServicePolicy` 版本。
88
+ - `mci-service-resolve`:按权威角色/主体与稳定 Hash 选择单个端点,普通调用方不返回全部候选。
89
+ - `mci-service-policy-acquire`:共享 Redis 固定窗口、持久 Outcome 重建熔断、半开共享许可。
90
+ - `mci-service-policy-outcome`:Permit 归属校验、稳定 OutcomeKey、持久结果与调用边聚合。
91
+ - `mci-service-topology`:从持久调用边读取运行拓扑。
92
+
93
+ V8 业务只能使用租户隔离的 `SetIfNotExists/Expire/HashIncrement` 原子能力,不能获得原始 Redis 客户端或自定义 Key 前缀逃逸租户边界。
94
+
95
+ <!-- /microi-progressive:chunk -->
96
+ <!-- microi-progressive:chunk id=ai-platform-governance-011 sha256=db964d7f412ce56112c7a8173a10a6a1f33c762761747b6db780463a0e07f79d -->
97
+ ## Trace、告警与日志
98
+
99
+ ### 可信原子能力
100
+
101
+ - `V8.Method.QuerySystemLogSignal`:有界日志计数、错误率、P95 和样例;
102
+ - `V8.Method.GetTraceTimeline`:跨月 Trace/Span 时间线;
103
+ - `V8.Method.PlanSystemLogLifecycle`:只读生命周期估算;
104
+ - `V8.Method.RunSystemLogLifecycle`:仅可信持久后台任务可调用的物理执行器。
105
+
106
+ ### 告警
107
+
108
+ - `mci-alert-evaluate` 使用持久窗口台账,覆盖连续触发/恢复、去重和抑制。
109
+ - `mci-alert-scan`、`mci-alert-dispatch`、`mci-alert-delivery-send` 均为内部任务接口。
110
+ - Dispatch 只写 Outbox;Sender 以 ClaimToken、LeaseExpiresAt、RowVersion 和 DeliveryKey 送达。
111
+ - `mci_alert_route` 可配置值班排班、升级链和 SLA。
112
+ - 渠道发送只写 `mci-alert-notify-extension`。
113
+
114
+ ### 日志生命周期
115
+
116
+ `mci_log_policy` 包含匹配/采样、脱敏规则、热温冷天数、日/总配额、超限动作、归档模式和法律保留。
117
+
118
+ - 先 `mci-log-lifecycle-plan` 获取 PlanHash/估算。
119
+ - 再通过持久后台任务调用 `mci-log-lifecycle-execute`。
120
+ - 每片归档为 gzip JSONL,私有 HDFS 必须回读长度和 SHA-256。
121
+ - 先写 `ArchiveVerified` 收据,再条件删除,再回读为零,最后标记 `Committed`。
122
+ - `Extension` 模式由 `mci-log-archive-extension` 处理;法律保留不能删除。
123
+
124
+ <!-- /microi-progressive:chunk -->
125
+ <!-- microi-progressive:chunk id=ai-platform-governance-012 sha256=82e059f90494a679d4073693b83904826841a7c87e0ed1e5ab0e28575eedffac -->
126
+ ## 资产、协作和变更集
127
+
128
+ - `mci-asset-publish` 使用 `microi.asset.v1`,声明 Component、Props、Setters、DataAdapters、Platforms、DependencyPackages。
129
+ - 校验语义版本范围、缺失依赖、循环、最大深度、规范化摘要、DryRun 和 CAS。
130
+ - `mci-asset-resolve` 验证内容 Hash,返回 `ResolvedDependencies/DependencyGraph/LoadOrder`。
131
+ - `mci-collaboration-lease` 使用共享租约和 fencing token;旧编辑者不能保存。
132
+ - `mci-change-set-validate` 检查资源、PlanHash、生产证据和回滚计划。
133
+ - Page JSON ↔ Vue SFC 只处理平台生成的受控标记,不执行任意 Vue/JavaScript,也不承诺任意源码无损反编译。
134
+
135
+ <!-- /microi-progressive:chunk -->
136
+ <!-- microi-progressive:chunk id=ai-platform-governance-013 sha256=b286f47071ac64e9e7d75929134123e8a3ef65a05ddb86007554ae05099e1445 -->
137
+ ## 可恢复导入
138
+
139
+ - `mci-import-plan`:JSON/CSV/Excel 解析、字段元数据校验、文件/计划/行 Hash、公式注入与敏感字段拒绝。
140
+ - `mci-import-stage`:按 ExpectedPlanHash 幂等写暂存行。
141
+ - `mci-import-execute`:必须通过持久后台任务;每片独立提交 Checkpoint/FencingToken。
142
+ - `mci-import-control`:Pause/Resume/Cancel/Retry,使用状态条件更新。
143
+ - `mci-import-rollback`:只恢复当前值仍等于 After 基线的记录;冲突不覆盖。
144
+
145
+ 单批最多 2,000 行。更大数据应拆批或使用专用迁移作业,不提高内存上限硬顶。
146
+
147
+ <!-- /microi-progressive:chunk -->
148
+ <!-- microi-progressive:chunk id=ai-platform-governance-014 sha256=9c5387dccbc2ff092470edc70b9600416700ac734f15df2c2e775bae0adf00c4 -->
149
+ ## 页面与蓝图版本
150
+
151
+ 页面工具:
152
+
153
+ ```text
154
+ microi_list_page_history
155
+ microi_get_page_history
156
+ microi_compare_page_versions
157
+ microi_export_page_design
158
+ microi_rollback_page_design
159
+ ```
160
+
161
+ 蓝图提供对应的历史、读取、比较、导出和回滚工具。修改前读取 CurrentHash,保存传 ExpectedHash,写后回读新 Hash 与不可变历史。回滚创建新版本,不删除旧历史。
162
+
163
+ <!-- /microi-progressive:chunk -->
164
+ <!-- microi-progressive:chunk id=ai-platform-governance-015 sha256=6fafd84efd63a1607c4c98c4a173d755b2ba22fb7a251a21ed4d4699556656a7 -->
165
+ ## 应用商城发布
166
+
167
+ - 官方发布使用绑定 `https://api.itdos.com`、`OsClient=iTdos` 的 `microi_itdos`。
168
+ - 先构建 Manifest、22 项应用契约、微服务类型检查/契约/生产构建。
169
+ - 发布请求版本、资产准备版本和包内 `PackageInfo.Version` 必须精确相同;42 个菜单、40 张治理表和 64 个接口引擎的选择必须来自当前包正文。
170
+ - 包内 `ResourcePolicies.ApiEngines` 必须精确为 57 个 Managed + 7 个 CreateIfMissing。
171
+ - 发布后独立回读应用版本、状态、包内容、45 表/873 字段、42 菜单(含已绑定 `/overview` 的治理工作台)、64 接口、任务、10 路由和构建资产 Hash。
172
+ - 定时任务必须在 `PostSchema` 后通过独立 `ScheduleJobs` checkpoint 安装并回读;成功版本只能在任务阶段之后写入。
173
+ - 官方发布源禁止自安装和 `ValidateOnly`;发布源做精确包回读,安装验证在非官方目标租户或本地非发布源环境完成。
174
+ - 目标安装/更新后再次回读,并做管理员 PC/390px 浏览器冒烟。
175
+ - 商城发布不等于生产 API/Web 容器部署。
176
+
177
+ <!-- /microi-progressive:chunk -->
178
+ <!-- microi-progressive:chunk id=ai-platform-governance-016 sha256=76dab40556ce9a5a732c398d2f534c16478a1a88d4c1efdcdeaa6ba76d4339df -->
179
+ ## 双节点与浏览器验收
180
+
181
+ 至少覆盖:
182
+
183
+ - 两节点同时心跳、同一策略解析、同一限流窗口和熔断半开;
184
+ - 同一发布幂等键并发执行、租约竞争、步骤失败、台账提交前中断、同键续跑与回滚;
185
+ - Redis/MongoDB 短暂故障、锁持有者退出、重复消息和滚动版本共存;
186
+ - PC 10 路由、失败态、空态、重复动作;390×844 下移动导航、对话框、表单和无整页横向溢出;
187
+ - 页面源码桥、资产依赖循环、协作旧 fencing、导入暂停/恢复和条件回滚。
188
+
189
+ 最终报告必须分别列出源码/测试、远端写入、真实浏览器、应用商城、正式发布和生产部署证据;没有执行的层不能声称通过。
190
+ <!-- /microi-progressive:chunk -->
@@ -30,13 +30,16 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
30
30
 
31
31
  ## 吾码创建人开发时的强制发布闭环
32
32
 
33
+ - 每项平台功能先执行 [工作区基础规范](../workspace-conventions/SKILL.md) 的“平台功能四项同步检查”,不能把商城包发布当成官方文档、Skills、MCP 同步的替代。本节细化其中需要发布应用包时的流程;没有可打包资源变化时记录依据,不为凑检查项空升版。
33
34
  - 每次任务先检查工作区根的 `Microi.Server/Microi.net/`。只有目录存在且 `rg --files Microi.Server/Microi.net` 能找到至少一个真实源码文件时,才确认当前是吾码创建人在官方完整源码工作区开发;空目录不算,且不要求本次修改位于该目录。确认后,对任意目录中的平台基础能力执行修改、构建或交付时,官方应用数据包都不是“以后再补”的附加产物,而是本次实现的组成部分。目录缺失或为空时按普通用户工作区处理;纯审查、解释或诊断仍保持只读。
34
35
  - 触发资源包括系统设置、表、字段、Tab、菜单、权限、接口引擎、事件、数据源、页面、打印、工作流、任务、平台内置微服务和可幂等种子数据。开始修改时就确定资源归属:租户开通、启动投影与基础空库归 `app.microi.saas-engine`;用户偏好、个人资料及其租户 Hook 归 `app.microi.sys_user`;租户系统设置编排及其 Hook 归 `app.microi.sys-config`;表单引擎归 `app.microi.form-engine`;模块引擎归 `app.microi.module-engine`;应用商城归 `app.microi.store`。同一能力跨多个包时逐包更新,但同一 Managed ApiEngineKey 仍须单一归属。
35
36
  - 强制闭环依次包含:①源码和定向测试;②通过绑定 `https://api.itdos.com + OsClient=iTdos` 的 `microi_itdos` 更新并回读官方母版资源;③从母版导出或按受审计发布契约生成本地应用包,单调提升包版本并核对资源数量、版本和 SHA-256;④发布对应官方 Platform 应用;⑤重新读取商城行的小型 HDFS 指针,用公有下载或受权私有下载取得原始 JSON,核对 `Published/IsApprove`、`AppVersion`、`PackageInfo.Version`、UTF-8 字节数、SHA-256 和资源正文;⑥立即做一次同输入幂等重跑,确认无重复升版或漂移。任务还指定目标租户时,再安装/更新并等待后台任务 `Succeeded` 后回读真实资源。
36
37
  - 本地包文件、生成器成功、单元测试通过、返回 TaskId 或 HTTP 200 都不能代替官方主数据库与商城回读。`.resource-sync-base` 只能在官网发布后逐项哈希一致时由同步器推进,不得与本地候选一起手工修改。若官方身份、MCP 登录或发布门禁失效,必须保留准确的未发布边界并修复链路;不得把本地 JSON 宣称为“其它吾码用户已经可以安装”。
37
38
  - 应用包不得携带真实地图 Key、Token、连接串或其它租户秘密。浏览器供应商 Key 等配置只交付字段/设置模板和安全读取能力,实际值由每个目标租户在安装后自行填写。
38
39
 
39
- ## 包内容
40
+ ## 包内容
41
+
42
+ 旧布局字段的退役使用可选 `DiyFieldRetirements` 数组,声明 `TableName / Name / ExpectedComponent`,按需用 `ExpectedConfig` 限定组件路径。安装器只允许退役当前包声明表中的 `DevComponent / Divider / Tabs / CollapseGroup`;核心字段、仍在包内声明的字段或控件配置不匹配必须拒绝。先安装支持此协议的商城,再安装声明退役的业务包。退役只软删字段元数据并回读、刷新缓存,不删除物理列或业务数据;已经退役或尚未安装的字段重复执行不产生副作用。
40
43
 
41
44
  - Manifest:应用 Key、版本、兼容平台版本、依赖和资源清单。
42
45
  - 数据模型:表、字段、菜单、角色权限、接口引擎、事件、数据源、页面、打印、工作流、任务。
@@ -204,9 +207,11 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
204
207
  - 重复安装先比较应用包拥有的字段定义,完全一致就跳过 `UptFormData`。Jint 的 `LimitMemory` 统计累计托管分配而非当前存活堆;大量无效字段更新即使被 GC 回收也会耗尽预算。v1.8.0 导入器每个后台片最多实际上传 8 个文件,并以约 32 MB Base64 为分片目标;为避免单个大文件无限空转,每片至少允许处理一个文件。片末返回 `HasMore + Checkpoint`,下一片按 `AppId + FilePath + Hash` 复用已提交资产,并禁止为统计再次解码整文件 Base64。
205
208
  - 只有固定 Key `import-microi-store-package`、服务端可信身份、`Level >= 9999`、当前进程主租户、持久化后台 TaskId 五项同时成立时,后端才使用 `ResidentMemoryGuardOnly`,跳过会永久累计已回收分配的 Jint 内存约束。该特例仍受容器优先的进程 RSS 防线保护:95% 停止接收新工作,98% 有界停机并由持久任务恢复。普通/前台/子租户/其它 V8 不得借用此特例。
206
209
 
207
- ## 复盘:官网升级资源同步的三道门
208
-
209
- - 官网当前资源只是三方合并的一侧,允许暂时落后于本地发布候选。下载阶段只校验固定白名单、稳定资源身份、JSON 可解析性及服务端返回 SHA-256;不能用“必须已包含本地最新功能标记”的规则提前拒绝旧官网,否则会形成“官网不够新所以永远无法发布新版”的循环依赖。
210
+ ## 复盘:官网升级资源同步的三道门
211
+
212
+ - 重型发布门禁之前先运行 `node Microi.Server/Microi.Upgrade/Resource/refresh-resources.mjs --validate-only`:该入口只校验本地全部候选,不联网、不发布、不推进共同基线,且不能与写入参数组合。正式发布仍须通过完整测试、三方同步、精确哈希回读,不能把本地预检当成发布成功。
213
+ - 控制面版本使用语义版本最低门槛,并同时严格核对鉴权、行锁、资源哈希、写后回读等能力;禁止把某个旧版本字符串写成唯一合法值。可选功能一旦由包内表或任意入口声明,就必须校验其完整接口闭包及资源策略;不能自动放行未知 Key,也不能只升级版本而缺失实际保护。预检自身必须进入 Node 自动回归,覆盖新版通过、旧版及缺保护失败、半套可选功能失败。
214
+ - 官网当前资源只是三方合并的一侧,允许暂时落后于本地发布候选。下载阶段只校验固定白名单、稳定资源身份、JSON 可解析性及服务端返回 SHA-256;不能用“必须已包含本地最新功能标记”的规则提前拒绝旧官网,否则会形成“官网不够新所以永远无法发布新版”的循环依赖。
210
215
  - 本地输入和三方合并后的最终候选必须继续执行最低版本、功能标记、内嵌逻辑副本一致性等严格校验;发布成功并按内容哈希回读一致后才能推进 `.resource-sync-base`,不能把放宽读取门误做成放宽发布门。
211
216
  - 应用包版本与平台发布版本分别单调递增。包正文需要写回而本地包版本、平台版本均未高于官网时,应基于官网包版本自动递增补丁号;内容无变化时不得递增,必须用连续两次同步验证第二次为零变更。
212
217
  - MCP 配置中的官方 API、`OsClient` 与 Token 文件是鉴权事实源,但编辑器可执行文件、插件版本目录和 `cwd` 都是易漂移的启动信息。发布器应保留鉴权配置、固定校验 `https://api.itdos.com + itdos`,并支持插件生成的稳定 `microi-cli-mcp.js` 或标准 `mcp-server.js` 入口;旧扩展配置再从同级最新已安装插件或当前工作区发现可信入口,统一使用正在运行发布脚本的 Node 启动。插件升级、Codex 插件化或旧目录清理不能再次阻塞后端发布。
@@ -321,6 +326,18 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
321
326
  - 通用规则:新上传文件移动到租户稳定路径失败时,若上传结果已通过摘要和大小校验,应保留这个真实可读路径并写入显式兼容 scope(当前为 `PrivateSource+PublicBuildMoveFallback`)。后续分片只允许在同时命中 AppId、文件路径、摘要、大小、真实 HDFS 路径和该 scope 时直接复用,禁止再次调用 `MoveObject` 或上传;没有兼容标记的历史坏路径仍只允许一次有界重传修复,不能把任意旧元数据误当成有效对象。
322
327
  - 自举与验收:主租户投递每个子任务前必须先复制最新版应用商城导入器和批量工作器,已经排队的任务不得假定会动态取得主租户新代码。回归测试要模拟“上传成功、MoveObject 不可用、下一分片恢复”,断言上传次数保持 1 且资源索引继续前进;真实旧租户验收必须观察 4 个编译资源在有界片数内完成,并在全租户成功后立即做 `Planned=0` 复跑。
323
328
 
329
+ ## 复盘:共享公有编译包安装成功但预览进入发布方租户
330
+
331
+ - 共享不可变资源不能像租户独有 HTML 那样重写字节。包内 `SharedPublicRuntime.EntryUrl` 保持纯 HTTPS 不可变地址和摘要;目标 `PreviewUrl` 必须由导入器按当前 `V8.SysConfig.ApiBase + V8.OsClient` 生成 `apiBase/OsClient` 查询参数,不得直接使用发布端默认值,不得附带 Token、密码或签名。
332
+ - 目标 `ApiBase` 缺失、携带凭证或无效时停止并说明配置位置;不能用 CDN 地址或官方默认地址回退。公有字节共享不代表账号、房间、积分或 SignalR 频道跨租户共享。
333
+ - 自动化需比较不可变路径与摘要未变、普通包分支未变,并从目标安装后的实际入口检查登录请求、房间写入及实时事件;后台 `Succeeded` 不能替代租户启动验收。旧导入器先通过应用商城升级,再以新请求 Id 重装目标应用验证修复,保留旧任务审计。
334
+
335
+ ## 复盘:历史开关列的单字节文本阻止数值列升级
336
+
337
+ - 数值类型转换失败时先只读实际 `PhysicalColumns` 和错误样本字节;表单字段声明为整数不代表物理列就是整数。旧 `BIT` 曾误转为文本时,可能留下单字节 `00/01`,不能按普通字符串 `0/1` 判断,也不能把所有非数字清零。
338
+ - 仅当可信包与目标字段均明确声明为开关(Switch),且文本值满足单字节和 `HEX IN ('00','01')`,才允许导入器按精确谓词归一为 `0/1`,然后进行类型升级。真正的 BIT 数值列、NULL、多字节文本、普通字段及其它脏值保持各自路径;未知值继续失败关闭。
339
+ - 修复通过正式应用商城导入器版本交付,先升级安装器再用新幂等请求重试原不可变包;禁止直接 SQL 改客户数据或修改旧失败任务。回归覆盖精确匹配、普通字段拒绝、并发重试和物理类型回读,并保留转换计数与终态证据。
340
+
324
341
  ## 复盘:只补页面首屏接口导致旧租户持续 `sys_apiengine NoExistData`
325
342
 
326
343
  - 触发场景:新版前端已经切换到 `/apiengine/platform-*`、商城 `get-microi-store` 或模块/消息等官方接口,但客户只更新前后端二进制,没有逐个安装应用;启动门禁只检查少数首屏 Key,于是登录恢复后其它页面仍连续报 `sys_apiengine NoExistData`。