@microi.net/cli 5.9.2 → 5.9.4

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 (171) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/assets/build-meta.json +6 -6
  8. package/cordis.patch.yml +1 -1
  9. package/package.json +1 -1
  10. package/scripts/codex-marketplace.json +20 -20
  11. package/scripts/mcp-codex-stdio-adapter.js +189 -189
  12. package/scripts/mcp-server.js +81 -81
  13. package/scripts/mcp-trae-windows-launcher.cmd +21 -21
  14. package/scripts/microi-cli-mcp.js +7 -7
  15. package/scripts/microi-codex-broker.js +21 -5
  16. package/scripts/microi-codex-router.js +17 -1
  17. package/scripts/microi-skills.meta.json +354 -348
  18. package/skills/.microi-skills-version.json +2 -2
  19. package/skills/.progressive-disclosure-manifest.json +122 -115
  20. package/skills/README.md +287 -287
  21. package/skills/ai-engine/SKILL.md +269 -269
  22. package/skills/ai-engine/references/ai-employees.md +48 -48
  23. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  24. package/skills/ai-platform-governance/SKILL.md +177 -177
  25. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  26. package/skills/app-store/SKILL.md +525 -525
  27. package/skills/business-blueprint/SKILL.md +193 -193
  28. package/skills/datasource-engine/SKILL.md +93 -93
  29. package/skills/dos-orm/SKILL.md +101 -95
  30. package/skills/dos-orm/references/api-reference.md +229 -229
  31. package/skills/email-engine/SKILL.md +81 -81
  32. package/skills/email-engine/references/v8-email.md +34 -34
  33. package/skills/job-engine/SKILL.md +176 -176
  34. package/skills/message-notification/SKILL.md +156 -156
  35. package/skills/message-notification/references/contracts.md +102 -102
  36. package/skills/microi/SKILL.md +14 -14
  37. package/skills/microi-ai-application/SKILL.md +115 -115
  38. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  39. package/skills/microi-client-frontend/SKILL.md +242 -242
  40. 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
  41. 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
  42. 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
  43. package/skills/microi-codex-installer/SKILL.md +231 -231
  44. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  45. package/skills/microi-db-schema/SKILL.md +175 -175
  46. package/skills/microi-db-schema/references/core-tables.md +695 -695
  47. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  48. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  49. package/skills/microi-db-schema/references/schema.md +646 -646
  50. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  51. package/skills/microi-deployment/SKILL.md +239 -220
  52. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  53. package/skills/microi-docs-coverage/SKILL.md +133 -133
  54. package/skills/microi-docs-coverage/references/capability-map.md +90 -90
  55. package/skills/microi-form-engine/SKILL.md +338 -333
  56. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  57. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  58. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  59. 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
  60. package/skills/microi-left-right-layout/SKILL.md +141 -141
  61. package/skills/microi-microservice/SKILL.md +332 -328
  62. package/skills/microi-microservice/references/runtime-delivery.md +282 -278
  63. package/skills/microi-mobile-app-quality/SKILL.md +203 -203
  64. 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 +227 -227
  65. 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 +129 -129
  66. package/skills/microi-solution-quotation/SKILL.md +78 -78
  67. package/skills/microi-sso/SKILL.md +95 -91
  68. package/skills/microi-sso/references/acceptance.md +51 -49
  69. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  70. package/skills/microi-sso/references/inbound.md +53 -53
  71. package/skills/microi-sso/references/outbound.md +43 -39
  72. package/skills/microi-ui/SKILL.md +192 -192
  73. 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
  74. package/skills/microi-uniapp-frontend/SKILL.md +206 -204
  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 +261 -261
  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 +154 -154
  77. package/skills/module-engine/SKILL.md +255 -255
  78. package/skills/module-engine/references/module-config.md +204 -204
  79. package/skills/ocr-engine/SKILL.md +113 -113
  80. package/skills/page-engine/SKILL.md +206 -206
  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 +234 -234
  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 +60 -60
  83. package/skills/performance-testing/SKILL.md +227 -221
  84. package/skills/playwright-e2e/SKILL.md +197 -196
  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 +173 -173
  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 +183 -183
  87. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  88. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  89. package/skills/print-engine/SKILL.md +259 -259
  90. package/skills/production-readonly-audit/SKILL.md +41 -41
  91. package/skills/report-engine/SKILL.md +71 -71
  92. package/skills/search-engine/SKILL.md +75 -75
  93. package/skills/spider-engine/SKILL.md +190 -190
  94. package/skills/system-observability/SKILL.md +259 -246
  95. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  96. package/skills/translate-engine/SKILL.md +140 -140
  97. package/skills/ui-design/SKILL.md +223 -223
  98. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  99. package/skills/ui-design/references/design-pattern-library.md +184 -184
  100. package/skills/ui-design/references/mci-design-contract.md +163 -163
  101. package/skills/ui-design/references/motion-and-media.md +78 -78
  102. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  103. 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
  104. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  112. package/skills/unity-integration/SKILL.md +178 -171
  113. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  114. package/skills/unity-integration/references/sdk-api.md +82 -82
  115. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  116. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  117. package/skills/v8-api-config/SKILL.md +388 -388
  118. package/skills/v8-cache-pattern/SKILL.md +312 -312
  119. package/skills/v8-crud-api/SKILL.md +179 -178
  120. 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
  121. 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
  122. package/skills/v8-debugging/SKILL.md +284 -284
  123. package/skills/v8-explorer-tree/SKILL.md +228 -228
  124. package/skills/v8-export-import/SKILL.md +219 -219
  125. 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
  126. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  127. 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
  128. package/skills/v8-file-upload/SKILL.md +255 -284
  129. package/skills/v8-file-upload/references/cdn-alias-repair.md +13 -0
  130. 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
  131. 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
  132. package/skills/v8-file-upload/references/progressive-03-/347/251/272/347/233/256/345/275/225/346/240/207/350/256/260/344/270/216/350/277/234/347/250/213/344/270/213/350/275/275.md +36 -0
  133. package/skills/v8-formengine-http/SKILL.md +238 -238
  134. package/skills/v8-frontend-events/SKILL.md +180 -180
  135. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  136. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  137. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  138. package/skills/v8-http-integration/SKILL.md +182 -182
  139. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  140. 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
  141. package/skills/v8-image-processing/SKILL.md +190 -190
  142. package/skills/v8-image-processing/references/api-reference.md +623 -623
  143. package/skills/v8-menu-buttons/SKILL.md +186 -186
  144. 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
  145. 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
  146. 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
  147. package/skills/v8-mongodb/SKILL.md +200 -200
  148. package/skills/v8-mq-mqtt/SKILL.md +178 -176
  149. package/skills/v8-mq-mqtt/references/mqtt-production.md +352 -342
  150. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  151. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  152. package/skills/v8-security/SKILL.md +227 -210
  153. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  154. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  155. package/skills/v8-sql-query/SKILL.md +302 -302
  156. package/skills/v8-table-event/SKILL.md +176 -176
  157. 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
  158. 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
  159. package/skills/v8-tcp-integration/SKILL.md +158 -147
  160. package/skills/v8-template-engine/SKILL.md +167 -167
  161. package/skills/v8-utilities/SKILL.md +104 -104
  162. package/skills/v8-utilities/references/client-api-index.md +143 -143
  163. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  164. package/skills/v8-utilities/references/server-api-index.md +188 -188
  165. package/skills/v8-workflow/SKILL.md +252 -252
  166. 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
  167. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  168. package/skills/vision-engine/SKILL.md +160 -160
  169. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  170. package/skills/workspace-conventions/SKILL.md +13 -13
  171. 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 +2 -2
@@ -1,113 +1,113 @@
1
- ---
2
- name: ocr-engine
3
- description: 为 Microi 吾码集成、配置、调用和验收通用 OCR 能力。处理 V8.OCR、/apiengine/platform-ocr-recognize、PaddleX/PaddleOCR 服务、SaaS 租户 OCR 配置、图片或 PDF 文字识别、OCR 安全边界、Docker 部署和多节点交付时使用。
4
- ---
5
-
6
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
-
8
- # Microi OCR 引擎
9
-
10
- ## 先读取相关规范
11
-
12
- - 涉及租户配置时,读取 `../v8-saas-multi-tenant/SKILL.md`。
13
- - 涉及外部 OCR 服务时,读取 `../v8-http-integration/SKILL.md`。
14
- - 涉及 Base64、上传文件或私有文件时,读取 `../v8-file-upload/SKILL.md`。
15
- - 涉及权限、密钥、日志或匿名接口时,读取 `../v8-security/SKILL.md`。
16
- - 涉及数据库字段和表单 Tab 时,读取 `../microi-db-schema/SKILL.md`。
17
-
18
- ## 固定架构
19
-
20
- Microi 后端只实现统一 OCR 网关、租户隔离、协议适配和安全治理,不在 .NET 进程内训练或维护 OCR 模型。默认提供方为独立部署的 PaddleX OCR 服务;业务代码只能调用 `IMicroiOcr`、`V8.OCR` 或官方 Managed 接口 `/apiengine/platform-ocr-recognize`,不得直接读取 SaaS 密钥并自行拼接 HTTP 请求。
21
-
22
- 同步识别必须绑定当前请求和当前租户。批量、超大文件或长耗时 OCR 应进入共享数据库/MQ/outbox,以全局任务 Id 做幂等;不得把任务状态、队列或锁只放在单机内存中。
23
-
24
- ## SaaS 配置
25
-
26
- 配置位于 `sys_osclients` 的独立“OCR识别”Tab:
27
-
28
- | 字段 | 用途 | 默认值 |
29
- |---|---|---|
30
- | `OcrEnabled` | 租户总开关,默认关闭 | `0` |
31
- | `OcrProvider` | `PaddleX` 或 `PaddleXHighStability` | `PaddleX` |
32
- | `OcrEndpoint` | OCR 服务完整接口地址 | 空 |
33
- | `OcrApiKey` | 可选 Bearer 密钥,只允许后端使用 | 空 |
34
- | `OcrHeadersJson` | 可选服务端固定请求头 JSON | 空 |
35
- | `OcrTimeoutSeconds` | 单次超时秒数 | `60` |
36
- | `OcrMaxFileMB` | 单文件大小上限 | `20` |
37
- | `OcrMaxPages` | PDF 页数上限 | `10` |
38
- | `OcrMinConfidence` | 返回文本最低置信度 | `0` |
39
-
40
- 这些配置不得投影到 `V8.OsClientModel`,不得由前端请求覆盖,不得写入普通日志。没有启用、没有 endpoint 或配置无效时必须失败关闭。
41
-
42
- ## 调用
43
-
44
- 接口引擎或后端表单事件中:
45
-
46
- ```js
47
- var result = await V8.OCR.Recognize({
48
- FileByteBase64: V8.FilesByteBase64.invoice,
49
- FileName: 'invoice.png',
50
- UseDocOrientationClassify: true,
51
- UseDocUnwarping: true,
52
- UseTextlineOrientation: true,
53
- TextRecScoreThresh: 0.5,
54
- ReturnWordBox: false
55
- });
56
-
57
- if (result.Code !== 1) {
58
- return result;
59
- }
60
-
61
- return {
62
- Code: 1,
63
- Data: {
64
- Text: result.Data.Text,
65
- Pages: result.Data.Pages,
66
- Provider: result.Data.Provider
67
- }
68
- };
69
- ```
70
-
71
- 已登录客户端调用 `POST /apiengine/platform-ocr-recognize`,请求体与 `V8.OCR.Recognize` 一致,并携带正常登录 Token。`OsClient` 以 Token 解析结果为准。该接口由官方应用以 `Managed` 策略恢复;个性化逻辑只能写入租户 `platform-runtime-custom-hook`,且官方接口不会把文件 Base64、识别原文或密钥传给 Hook。
72
-
73
- 标准成功结果包含 `Provider`、`Text`、`Pages`、`ElapsedMilliseconds`。每页包含 `PageIndex`、`Text`、`Regions`,每个区域包含 `Text`、`Confidence` 和归一化后的 `Polygon`。
74
-
75
- ## 协议与输入边界
76
-
77
- - `PaddleX` 使用基础服务协议 `POST /ocr`。
78
- - `PaddleXHighStability` 使用 KServe 协议 `POST /v2/models/ocr/infer`。
79
- - 接受 PDF、PNG、JPEG、BMP、GIF、TIFF、WebP;同时检查文件扩展名、Base64 和文件魔数。
80
- - 固定 `visualize=false`,避免服务返回大体积可视化图片。
81
- - 由服务端限制文件大小、超时、PDF 页数、响应体大小和最低置信度。
82
- - 禁止接受调用方传入 endpoint、API key、任意请求头、代理地址或本地文件路径,防止 SSRF 和密钥绕过。
83
- - 日志只记录租户、提供方、状态码、耗时和安全裁剪后的错误,不记录文件 Base64、识别原文、API key 或完整响应。
84
-
85
- ## Docker 与多节点
86
-
87
- - OCR 模型服务独立部署,固定 PaddleX/PaddlePaddle/模型版本;不要使用浮动 `latest` 直接上线。
88
- - CPU 基线位于 `../../Microi.Server/Microi.OCR/deploy/paddlex/`,固定 PaddleX 3.6.1 与 PaddlePaddle 3.2.2;公开镜像固定为 `registry.cn-hangzhou.aliyuncs.com/microios/paddlex-ocr:3.6.1-paddle3.2.2-cpu`,当前只交付 `linux/amd64`。PaddlePaddle 3.3.0 存在 CPU oneDNN PIR 推理兼容问题,在完成真实图片回归前不得升级。
89
- - 发布镜像使用同目录 `publish-image.ps1`:它从根目录发布配置读取凭据,通过隔离 Docker 配置和 `--password-stdin` 登录,推送后退出并匿名回读公开摘要。不得在命令行、日志或文档中展开用户名/密码,也不得只凭 `docker push` 返回成功就宣布国内镜像可用。
90
- - 发布镜像时执行 `create_pipeline("OCR")` 预置默认产线模型。运行时使用 named volume 挂载 `/home/microi/.paddlex`,让 Docker 首次创建卷时从镜像复制模型;不要改成空宿主机 bind mount,否则会遮住镜像内的预置模型并触发重新下载。
91
- - OCR 宿主机端口只绑定 `127.0.0.1`;Docker 化 API 与 OCR 同时加入 external bridge 网络 `microi-ocr`,一键安装的内部 endpoint 固定为 `http://microi-install-ocr:8080/ocr`。不得通过公网/LAN 回环调用同机 OCR。
92
- - `install-microi.sh` 默认尝试安装 OCR,但先部署 API/Web 并通过 liveness、完整 `ServerVersion` 升级链和 readiness。随后必须依次满足“固定镜像拉取并回读为 amd64 → OCR healthy → Upgrade29 的 9 个物理字段数据库回读 → 唯一活动主租户 → 配置写入后回读 → API 重启 readiness”才设置 `OcrEnabled=1`;任一步失败都保持 OCR 能力关闭并记录警告,但不得中断已经可用的核心平台。字段每秒回读一次且最多 15 秒;正常升级应首轮命中,镜像过旧或迁移失败应快速关闭 OCR,禁止无意义等待 5 分钟。不要用安装脚本直接伪造 `diy_field` 元数据绕过 Upgrade29。
93
- - API/Web 官方浮动 `latest` 必须在 Compose 启动时强制回源拉取,避免旧本机镜像缺少 Upgrade29。核心门禁失败时输出“安装未完成”恢复汇总并保留非零退出码;OCR 字段、服务或配置门禁失败时,成功汇总明确显示“OCR SaaS 未启用”和附加能力警告。两种汇总都不是启用 OCR 的依据。
94
- - OCR 使用固定不可变版本,不加入只跟踪 API/Web 浮动标签的 Watchtower 自动更新列表;升级镜像时先发布新 tag、匿名回读 digest/架构,再修改 Compose 与安装器。
95
- - 登录国内镜像源必须从本机发布配置读取凭据并走 `docker login --password-stdin`,不得输出密码。推送成功不是发布验收,必须使用隔离的匿名 Docker config 回读 manifest/digest,必要时再做匿名拉取。
96
- - 不要在内存不足的共享开发机上直接构建模型镜像。构建前检查物理内存、Docker 占用与同类进程;保留至少 `max(6 GB, 物理内存 20%)`,不足时延后构建而不是停止他人服务。
97
- - API 多节点共享同一个或同一组 OCR endpoint;每节点仅保留无状态 `HttpClient`。
98
- - OCR 服务至少配置 readiness、并发上限、CPU/GPU 资源上限、请求体上限和访问控制。
99
- - GPU 推理采用独立 Worker/服务池,避免 OCR 模型抢占 Microi API 内存。
100
- - 滚动升级时保持旧新 OCR 响应协议兼容;协议变更先扩展解析器,再升级服务。
101
-
102
- ## 验收门禁
103
-
104
- 交付时分别报告:
105
-
106
- 1. 源码:网关、V8、REST、SaaS 字段、密钥投影隔离是否齐全。
107
- 2. 定向测试:基础协议、高稳定协议、低置信度过滤、错误响应、配置隔离。
108
- 3. 数据库:目标 `OsClient` 的 Tab、字段和物理列经 MCP 写后回读。
109
- 4. 服务:真实 PNG/JPEG/PDF 至少各一例,包含中英文、旋转和多页场景。
110
- 5. 多节点:两个 API 节点同时调用,同租户限制一致,服务故障时均能超时/降级且不泄漏密钥。
111
- 6. UI:SaaS 配置表单能查看独立 Tab、保存配置,密码字段不出现在普通前端上下文。
112
-
113
- 没有真实 OCR endpoint、服务版本和样例识别结果时,只能声明“平台接入完成、运行验收待配置”,不能声明生产 OCR 已可用。
1
+ ---
2
+ name: ocr-engine
3
+ description: 为 Microi 吾码集成、配置、调用和验收通用 OCR 能力。处理 V8.OCR、/apiengine/platform-ocr-recognize、PaddleX/PaddleOCR 服务、SaaS 租户 OCR 配置、图片或 PDF 文字识别、OCR 安全边界、Docker 部署和多节点交付时使用。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # Microi OCR 引擎
9
+
10
+ ## 先读取相关规范
11
+
12
+ - 涉及租户配置时,读取 `../v8-saas-multi-tenant/SKILL.md`。
13
+ - 涉及外部 OCR 服务时,读取 `../v8-http-integration/SKILL.md`。
14
+ - 涉及 Base64、上传文件或私有文件时,读取 `../v8-file-upload/SKILL.md`。
15
+ - 涉及权限、密钥、日志或匿名接口时,读取 `../v8-security/SKILL.md`。
16
+ - 涉及数据库字段和表单 Tab 时,读取 `../microi-db-schema/SKILL.md`。
17
+
18
+ ## 固定架构
19
+
20
+ Microi 后端只实现统一 OCR 网关、租户隔离、协议适配和安全治理,不在 .NET 进程内训练或维护 OCR 模型。默认提供方为独立部署的 PaddleX OCR 服务;业务代码只能调用 `IMicroiOcr`、`V8.OCR` 或官方 Managed 接口 `/apiengine/platform-ocr-recognize`,不得直接读取 SaaS 密钥并自行拼接 HTTP 请求。
21
+
22
+ 同步识别必须绑定当前请求和当前租户。批量、超大文件或长耗时 OCR 应进入共享数据库/MQ/outbox,以全局任务 Id 做幂等;不得把任务状态、队列或锁只放在单机内存中。
23
+
24
+ ## SaaS 配置
25
+
26
+ 配置位于 `sys_osclients` 的独立“OCR识别”Tab:
27
+
28
+ | 字段 | 用途 | 默认值 |
29
+ |---|---|---|
30
+ | `OcrEnabled` | 租户总开关,默认关闭 | `0` |
31
+ | `OcrProvider` | `PaddleX` 或 `PaddleXHighStability` | `PaddleX` |
32
+ | `OcrEndpoint` | OCR 服务完整接口地址 | 空 |
33
+ | `OcrApiKey` | 可选 Bearer 密钥,只允许后端使用 | 空 |
34
+ | `OcrHeadersJson` | 可选服务端固定请求头 JSON | 空 |
35
+ | `OcrTimeoutSeconds` | 单次超时秒数 | `60` |
36
+ | `OcrMaxFileMB` | 单文件大小上限 | `20` |
37
+ | `OcrMaxPages` | PDF 页数上限 | `10` |
38
+ | `OcrMinConfidence` | 返回文本最低置信度 | `0` |
39
+
40
+ 这些配置不得投影到 `V8.OsClientModel`,不得由前端请求覆盖,不得写入普通日志。没有启用、没有 endpoint 或配置无效时必须失败关闭。
41
+
42
+ ## 调用
43
+
44
+ 接口引擎或后端表单事件中:
45
+
46
+ ```js
47
+ var result = await V8.OCR.Recognize({
48
+ FileByteBase64: V8.FilesByteBase64.invoice,
49
+ FileName: 'invoice.png',
50
+ UseDocOrientationClassify: true,
51
+ UseDocUnwarping: true,
52
+ UseTextlineOrientation: true,
53
+ TextRecScoreThresh: 0.5,
54
+ ReturnWordBox: false
55
+ });
56
+
57
+ if (result.Code !== 1) {
58
+ return result;
59
+ }
60
+
61
+ return {
62
+ Code: 1,
63
+ Data: {
64
+ Text: result.Data.Text,
65
+ Pages: result.Data.Pages,
66
+ Provider: result.Data.Provider
67
+ }
68
+ };
69
+ ```
70
+
71
+ 已登录客户端调用 `POST /apiengine/platform-ocr-recognize`,请求体与 `V8.OCR.Recognize` 一致,并携带正常登录 Token。`OsClient` 以 Token 解析结果为准。该接口由官方应用以 `Managed` 策略恢复;个性化逻辑只能写入租户 `platform-runtime-custom-hook`,且官方接口不会把文件 Base64、识别原文或密钥传给 Hook。
72
+
73
+ 标准成功结果包含 `Provider`、`Text`、`Pages`、`ElapsedMilliseconds`。每页包含 `PageIndex`、`Text`、`Regions`,每个区域包含 `Text`、`Confidence` 和归一化后的 `Polygon`。
74
+
75
+ ## 协议与输入边界
76
+
77
+ - `PaddleX` 使用基础服务协议 `POST /ocr`。
78
+ - `PaddleXHighStability` 使用 KServe 协议 `POST /v2/models/ocr/infer`。
79
+ - 接受 PDF、PNG、JPEG、BMP、GIF、TIFF、WebP;同时检查文件扩展名、Base64 和文件魔数。
80
+ - 固定 `visualize=false`,避免服务返回大体积可视化图片。
81
+ - 由服务端限制文件大小、超时、PDF 页数、响应体大小和最低置信度。
82
+ - 禁止接受调用方传入 endpoint、API key、任意请求头、代理地址或本地文件路径,防止 SSRF 和密钥绕过。
83
+ - 日志只记录租户、提供方、状态码、耗时和安全裁剪后的错误,不记录文件 Base64、识别原文、API key 或完整响应。
84
+
85
+ ## Docker 与多节点
86
+
87
+ - OCR 模型服务独立部署,固定 PaddleX/PaddlePaddle/模型版本;不要使用浮动 `latest` 直接上线。
88
+ - CPU 基线位于 `../../Microi.Server/Microi.OCR/deploy/paddlex/`,固定 PaddleX 3.6.1 与 PaddlePaddle 3.2.2;公开镜像固定为 `registry.cn-hangzhou.aliyuncs.com/microios/paddlex-ocr:3.6.1-paddle3.2.2-cpu`,当前只交付 `linux/amd64`。PaddlePaddle 3.3.0 存在 CPU oneDNN PIR 推理兼容问题,在完成真实图片回归前不得升级。
89
+ - 发布镜像使用同目录 `publish-image.ps1`:它从根目录发布配置读取凭据,通过隔离 Docker 配置和 `--password-stdin` 登录,推送后退出并匿名回读公开摘要。不得在命令行、日志或文档中展开用户名/密码,也不得只凭 `docker push` 返回成功就宣布国内镜像可用。
90
+ - 发布镜像时执行 `create_pipeline("OCR")` 预置默认产线模型。运行时使用 named volume 挂载 `/home/microi/.paddlex`,让 Docker 首次创建卷时从镜像复制模型;不要改成空宿主机 bind mount,否则会遮住镜像内的预置模型并触发重新下载。
91
+ - OCR 宿主机端口只绑定 `127.0.0.1`;Docker 化 API 与 OCR 同时加入 external bridge 网络 `microi-ocr`,一键安装的内部 endpoint 固定为 `http://microi-install-ocr:8080/ocr`。不得通过公网/LAN 回环调用同机 OCR。
92
+ - `install-microi.sh` 默认尝试安装 OCR,但先部署 API/Web 并通过 liveness、完整 `ServerVersion` 升级链和 readiness。随后必须依次满足“固定镜像拉取并回读为 amd64 → OCR healthy → Upgrade29 的 9 个物理字段数据库回读 → 唯一活动主租户 → 配置写入后回读 → API 重启 readiness”才设置 `OcrEnabled=1`;任一步失败都保持 OCR 能力关闭并记录警告,但不得中断已经可用的核心平台。字段每秒回读一次且最多 15 秒;正常升级应首轮命中,镜像过旧或迁移失败应快速关闭 OCR,禁止无意义等待 5 分钟。不要用安装脚本直接伪造 `diy_field` 元数据绕过 Upgrade29。
93
+ - API/Web 官方浮动 `latest` 必须在 Compose 启动时强制回源拉取,避免旧本机镜像缺少 Upgrade29。核心门禁失败时输出“安装未完成”恢复汇总并保留非零退出码;OCR 字段、服务或配置门禁失败时,成功汇总明确显示“OCR SaaS 未启用”和附加能力警告。两种汇总都不是启用 OCR 的依据。
94
+ - OCR 使用固定不可变版本,不加入只跟踪 API/Web 浮动标签的 Watchtower 自动更新列表;升级镜像时先发布新 tag、匿名回读 digest/架构,再修改 Compose 与安装器。
95
+ - 登录国内镜像源必须从本机发布配置读取凭据并走 `docker login --password-stdin`,不得输出密码。推送成功不是发布验收,必须使用隔离的匿名 Docker config 回读 manifest/digest,必要时再做匿名拉取。
96
+ - 不要在内存不足的共享开发机上直接构建模型镜像。构建前检查物理内存、Docker 占用与同类进程;保留至少 `max(6 GB, 物理内存 20%)`,不足时延后构建而不是停止他人服务。
97
+ - API 多节点共享同一个或同一组 OCR endpoint;每节点仅保留无状态 `HttpClient`。
98
+ - OCR 服务至少配置 readiness、并发上限、CPU/GPU 资源上限、请求体上限和访问控制。
99
+ - GPU 推理采用独立 Worker/服务池,避免 OCR 模型抢占 Microi API 内存。
100
+ - 滚动升级时保持旧新 OCR 响应协议兼容;协议变更先扩展解析器,再升级服务。
101
+
102
+ ## 验收门禁
103
+
104
+ 交付时分别报告:
105
+
106
+ 1. 源码:网关、V8、REST、SaaS 字段、密钥投影隔离是否齐全。
107
+ 2. 定向测试:基础协议、高稳定协议、低置信度过滤、错误响应、配置隔离。
108
+ 3. 数据库:目标 `OsClient` 的 Tab、字段和物理列经 MCP 写后回读。
109
+ 4. 服务:真实 PNG/JPEG/PDF 至少各一例,包含中英文、旋转和多页场景。
110
+ 5. 多节点:两个 API 节点同时调用,同租户限制一致,服务故障时均能超时/降级且不泄漏密钥。
111
+ 6. UI:SaaS 配置表单能查看独立 Tab、保存配置,密码字段不出现在普通前端上下文。
112
+
113
+ 没有真实 OCR endpoint、服务版本和样例识别结果时,只能声明“平台接入完成、运行验收待配置”,不能声明生产 OCR 已可用。