@microi.net/cli 4.9.4 → 4.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/README.md +7 -12
- package/assets/build-meta.json +5 -5
- package/package.json +1 -1
- package/scripts/mcp-server.js +92 -92
- package/scripts/microi-cli.js +78 -60
- package/scripts/microi-codex-router.js +30 -0
- package/scripts/microi-skills.meta.json +196 -190
- package/skills/.microi-skills-version.json +2 -2
- package/skills/README.md +1 -1
- package/skills/ai-engine/SKILL.md +1 -1
- package/skills/ai-platform-governance/SKILL.md +1 -1
- package/skills/app-store/SKILL.md +1 -1
- package/skills/business-blueprint/SKILL.md +1 -1
- package/skills/datasource-engine/SKILL.md +1 -1
- package/skills/dos-orm/SKILL.md +1 -1
- package/skills/job-engine/SKILL.md +1 -1
- package/skills/message-notification/SKILL.md +1 -1
- package/skills/microi-ai-application/SKILL.md +1 -1
- package/skills/microi-client-frontend/SKILL.md +1 -1
- package/skills/microi-codex/SKILL.md +4 -4
- package/skills/microi-codex-installer/SKILL.md +25 -36
- package/skills/microi-datasource-mapping/SKILL.md +1 -1
- package/skills/microi-db-schema/SKILL.md +1 -1
- package/skills/microi-deployment/SKILL.md +1 -1
- package/skills/microi-docs-coverage/SKILL.md +1 -1
- package/skills/microi-docs-coverage/references/capability-map.md +3 -2
- package/skills/microi-form-engine/SKILL.md +7 -4
- package/skills/microi-form-layout/SKILL.md +19 -6
- package/skills/microi-frontend-sdk/SKILL.md +1 -1
- package/skills/microi-left-right-layout/SKILL.md +1 -1
- package/skills/microi-microservice/SKILL.md +8 -1
- package/skills/microi-microservice/references/runtime-delivery.md +4 -0
- package/skills/microi-mobile-app-quality/SKILL.md +1 -1
- package/skills/microi-solution-quotation/SKILL.md +1 -1
- package/skills/microi-system-delivery/SKILL.md +6 -3
- package/skills/microi-ui/SKILL.md +1 -1
- package/skills/microi-uniapp-frontend/SKILL.md +1 -1
- package/skills/module-engine/SKILL.md +1 -1
- package/skills/ocr-engine/SKILL.md +1 -1
- package/skills/page-engine/SKILL.md +1 -1
- package/skills/performance-testing/SKILL.md +1 -1
- package/skills/playwright-e2e/SKILL.md +1 -1
- package/skills/print-engine/SKILL.md +6 -5
- package/skills/production-readonly-audit/SKILL.md +1 -1
- package/skills/report-engine/SKILL.md +1 -1
- package/skills/search-engine/SKILL.md +1 -1
- package/skills/spider-engine/SKILL.md +1 -1
- package/skills/translate-engine/SKILL.md +1 -1
- package/skills/ui-design/SKILL.md +1 -1
- package/skills/uniapp-mall-assets/SKILL.md +1 -1
- package/skills/unity-integration/SKILL.md +9 -1
- package/skills/unity-integration/references/ai-app-delivery.md +26 -6
- package/skills/v8-api-config/SKILL.md +1 -1
- package/skills/v8-cache-pattern/SKILL.md +1 -1
- package/skills/v8-crud-api/SKILL.md +1 -1
- package/skills/v8-debugging/SKILL.md +1 -1
- package/skills/v8-explorer-tree/SKILL.md +1 -1
- package/skills/v8-export-import/SKILL.md +1 -1
- package/skills/v8-file-upload/SKILL.md +1 -1
- package/skills/v8-formengine-http/SKILL.md +1 -1
- package/skills/v8-frontend-events/SKILL.md +12 -8
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +31 -3
- package/skills/v8-frontend-events/references/bluetooth-print.md +54 -12
- package/skills/v8-http-integration/SKILL.md +1 -1
- package/skills/v8-image-processing/SKILL.md +1 -1
- package/skills/v8-menu-buttons/SKILL.md +1 -1
- package/skills/v8-mongodb/SKILL.md +1 -1
- package/skills/v8-mq-mqtt/SKILL.md +141 -53
- package/skills/v8-mq-mqtt/references/mqtt-production.md +341 -0
- package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +205 -0
- package/skills/v8-saas-multi-tenant/SKILL.md +1 -1
- package/skills/v8-security/SKILL.md +1 -1
- package/skills/v8-sql-query/SKILL.md +1 -1
- package/skills/v8-table-event/SKILL.md +1 -1
- package/skills/v8-template-engine/SKILL.md +1 -1
- package/skills/v8-utilities/SKILL.md +1 -1
- package/skills/v8-utilities/references/client-api-index.md +4 -2
- package/skills/v8-workflow/SKILL.md +1 -1
- package/skills/workspace-conventions/SKILL.md +8 -9
|
@@ -3,7 +3,7 @@ name: page-engine
|
|
|
3
3
|
description: 生成和审查 Microi 界面引擎 Page Engine 页面 JSON。用于创建仪表盘、图表、表格、地图、组件、页面布局,或校验 mic_page formData JSON。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 界面引擎(Page Engine)页面 JSON 生成
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: performance-testing
|
|
|
3
3
|
description: Microi 高并发、性能压力测试规范。用于对 ApiEngine、V8 事件、FormEngine CRUD、VS Code 插件性能页、压力/尖峰/长稳测试、报告、并发、吞吐、延迟分位和瓶颈诊断做压测。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 高并发性能压力测试
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: playwright-e2e
|
|
|
3
3
|
description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化、全面测试。用于测试 PC Vue、uni-app H5、网站、界面引擎、移动商城、ApiEngine/FormEngine 契约、登录流程、写入闭环、网络防护、截图、报告和 Playwright Test for VSCode 集成。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 吾码 Playwright E2E 自动化测试
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: print-engine
|
|
3
|
-
description: 生成和审查 Microi 打印引擎 Print Engine 模板 JSON。用于创建 mic_print 模板、PageObj 布局、PrintObj
|
|
3
|
+
description: 生成和审查 Microi 打印引擎 Print Engine 模板 JSON。用于创建 mic_print 模板、PageObj 布局、PrintObj 数据绑定、可打印报告、标签或合同;蓝牙 TSPL/CPCL/ESC-POS、GP-M322 或 CC4 需求转交 v8-frontend-events 蓝牙参考。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 打印引擎(Print Engine)模板 JSON 生成
|
|
9
9
|
|
|
@@ -19,14 +19,15 @@ description: 生成和审查 Microi 打印引擎 Print Engine 模板 JSON。用
|
|
|
19
19
|
## 与蓝牙直连打印的边界
|
|
20
20
|
|
|
21
21
|
本 Skill 负责 `mic_print`、`PageObj`、`PrintObj`、浏览器预览和模板化纸张输出。
|
|
22
|
-
如果需求明确是蓝牙标签机/小票机、TSC/TSPL、ESC/POS
|
|
22
|
+
如果需求明确是蓝牙标签机/小票机、TSC/TSPL、CPCL、ESC/POS、佳博 GP-M322、
|
|
23
|
+
ZICOX CC4、BLE/SPP 或
|
|
23
24
|
`V8.Print.prepareSend`,应同时读取
|
|
24
25
|
`../v8-frontend-events/references/bluetooth-print.md`:
|
|
25
26
|
|
|
26
27
|
- Print Engine 决定“页面/模板如何排版”,适合 A4、PDF、浏览器打印和统一模板。
|
|
27
|
-
- `V8.Print`
|
|
28
|
+
- `V8.Print` 生成/适配打印机原生命令并通过 BLE 或 Android SPP 写入,适合标签和热敏小票;GP-M322 保持 TSPL 原字节,CC4 可自动生成 CPCL。
|
|
28
29
|
- 两者可以由同一个按钮按设备能力选择,但不能把 `PageObj` 直接交给
|
|
29
|
-
`V8.Print.prepareSend`,也不能把
|
|
30
|
+
`V8.Print.prepareSend`,也不能把 TSPL/CPCL/ESC-POS 字节当作 Print Engine JSON。
|
|
30
31
|
|
|
31
32
|
## 数据模型
|
|
32
33
|
|
|
@@ -3,7 +3,7 @@ name: production-readonly-audit
|
|
|
3
3
|
description: Microi 正式环境只读业务巡检规范。用于在不改动线上数据的前提下,检查会员、余额、订单、库存卡、奖励、积分、兑换金额、日志和结算正确性等生产业务数据。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 正式环境只读业务巡检
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: report-engine
|
|
|
3
3
|
description: Microi 报表引擎设计与验收规范。用于 Rpt_Report 虚拟表格、数据源、报表字段、查询/增删改接口替换、统计聚合、导出、行级权限和界面引擎图表。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 报表引擎
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: search-engine
|
|
|
3
3
|
description: Microi 搜索引擎索引、同步、查询与安全规范。用于 Elasticsearch 表索引、增量同步、字段映射、SearchAfter 分页、租户与菜单数据范围、重建和多节点验收。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi SearchEngine
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: spider-engine
|
|
|
3
3
|
description: Microi 采集引擎规范。用于设计、维护、测试或调用 Microi.Spider、OpenClaw 本地 Worker、Chrome/Playwright 采集、验证码、MCP 建模、V8 入库与导出、可重复采集站点规则。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi 采集引擎
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: translate-engine
|
|
|
3
3
|
description: Microi 翻译引擎与多语言词条规范。用于 V8.TranslateEngine 文本/批量/HTML/检测/语言列表/文件/建议/健康能力、HTTP 与 MCP 翻译调用、GetLang 词条、供应商配置、租户隔离、缓存和验收。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi TranslateEngine
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: ui-design
|
|
|
3
3
|
description: Microi UI 设计系统指南。用于设计 PC Vue、Element Plus、uni-app H5、仪表盘、表单、卡片、渐变、响应式布局、骨架屏、移动安全区和视觉打磨。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi吾码设计规范
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: uniapp-mall-assets
|
|
|
3
3
|
description: Microi UniApp、H5、商城与 PC 页面中的上传图片、附件、FileServer、私有文件临时 URL 和富文本资源安全规范。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi UniApp / 商城资源路径规范
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: unity-integration
|
|
|
3
3
|
description: Microi吾码 Unity、UPM SDK、WebGL、3D 游戏/数字孪生、DiyToken/V8 通讯、AI 应用商城交付与完整验收规范。用于评估或提取 Unity 工具箱,创建 Microi.Unity 包,开发 WebGL 场景,接入 Microi.Client 宿主与 V8 接口,引入可授权素材,发布可安装 AI 应用,或审查 Unity 代码是否错误进入 Microi.Server。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi Unity 完整交付
|
|
9
9
|
|
|
@@ -81,6 +81,10 @@ did: {DeviceId}
|
|
|
81
81
|
- 身份只取 `V8.CurrentUser`;禁止相信客户端 UserId、角色、部门或权限结论。
|
|
82
82
|
- 重新校验坐标、数量、字符串长度、状态转换和资源归属。
|
|
83
83
|
- 写接口使用稳定 `RequestId/EventId` + 数据库唯一索引/幂等台账;锁不能替代幂等。
|
|
84
|
+
- 匿名多人由服务端签发 `SessionId + SessionSecret`;数据库只保存秘密哈希,公开快照不得返回秘密、UserId、设备指纹或内部权限字段。
|
|
85
|
+
- 在线角色、房间版本和掉线到期时间进入共享数据库/Redis;客户端心跳、接口重试和节点切换都不能依赖进程内字典。
|
|
86
|
+
- 位置心跳由服务端限制地图边界、最大速度和递增序列;过期查询以服务端时间为准,正常离场与租约超时都必须幂等。
|
|
87
|
+
- 公屏文字限制长度、频率、表情白名单与稳定请求 ID;DOM 输入框阻止键盘事件冒泡,避免聊天时角色继续移动。
|
|
84
88
|
- 接口引擎 `Code=1` 自动提交,失败返回其它 Code 自动回滚,不手动 Commit/Rollback。
|
|
85
89
|
- 表、索引、菜单、接口与权限通过应用 Manifest 安装,不为游戏资源新增 `Microi.Upgrade` 定制迁移。
|
|
86
90
|
- 所有接口必须声明 `ResourcePolicies.ApiEngines`:官方核心 `Managed`;租户扩展 `CreateIfMissing`,后续升级不覆盖。
|
|
@@ -90,6 +94,7 @@ did: {DeviceId}
|
|
|
90
94
|
- `ApplicationType` 使用 `Web`;Vue 3 + Vite + TypeScript 作为页面外壳,Unity Canvas/WebGL 与普通 DOM 分层。
|
|
91
95
|
- 官方租户的 `AI应用/<appKey>` 是私有源码、构建脚本、V8、Manifest 与商城合约的唯一编辑根。
|
|
92
96
|
- 页面必须 poster-first:未启动时不下载大体积 WASM/Data;提供加载、错误、重试、全屏、退出和低性能提示。
|
|
97
|
+
- 多人界面要显示本地及远端昵称;同模型远端角色使用快照插值,失效租约及时销毁;公屏固定在不遮挡核心操作区的位置并支持键盘与表情选择。
|
|
93
98
|
- 构建门禁必须拒绝缺失 Unity 产物的“空壳发布”,并校验 WASM、Data、体积、哈希、本机地址、source map 与疑似硬编码 Token。
|
|
94
99
|
- 先同步私有源码,再发布不可变 Web 产物,最后生成/发布商城包;三个动作分别回读。
|
|
95
100
|
|
|
@@ -103,6 +108,7 @@ did: {DeviceId}
|
|
|
103
108
|
## 资产与视觉红线
|
|
104
109
|
|
|
105
110
|
- AI 生成素材保存逐图提示词、生成时间、用途和源文件;不要只提交最终图片。
|
|
111
|
+
- AI 设定图、渲染目标图与真实 Unity 运行截图必须分开标注;未通过实机近景、拓扑、材质、性能验收时禁止宣称“与设定图一模一样”或“商业 AAA 已达成”。
|
|
106
112
|
- 网络素材必须允许商业使用和再分发;许可证不清晰就改用原创、程序化或明确授权素材。
|
|
107
113
|
- 官方包不携带客户专属场景、品牌秘密、私有协议或无法追溯的二进制模型。
|
|
108
114
|
- “超清”不能只靠大纹理:同时控制材质、光照、阴影、LOD、裁剪、像素比和下载体积。
|
|
@@ -127,6 +133,8 @@ did: {DeviceId}
|
|
|
127
133
|
| WebGL | IL2CPP/WASM 构建成功,Loader/Data/WASM 完整 |
|
|
128
134
|
| 浏览器 | HTTP 加载、全屏、输入、控制台、DPR、退出释放 |
|
|
129
135
|
| Microi 租户 | 当前用户隔离、Token 轮换、保存重放、无权失败 |
|
|
136
|
+
| 多人在线 | 至少两个独立会话互见唯一昵称、移动与动作;异常断线超过租约后双方快照均不再返回该角色 |
|
|
137
|
+
| 实时公屏 | 两个独立会话互相收发文字与表情;非法表情、超长、超频和请求重放均被正确处理 |
|
|
130
138
|
| 多节点 | 重复投递、节点切换、失败恢复时副作用仅一次 |
|
|
131
139
|
| AI 应用 | 私有源码回读、运行版本哈希、列表/详情公开可见 |
|
|
132
140
|
| 应用商城 | 包版本/策略回读,非官方租户安装与升级通过 |
|
|
@@ -31,9 +31,27 @@ tests/
|
|
|
31
31
|
|
|
32
32
|
- Vue 3 + Vite + TypeScript。
|
|
33
33
|
- 复用工作区标准 `microi.v8.js` 与 `microi-ai-app-auth.js`,不要复制改造出第二套认证协议。
|
|
34
|
-
-
|
|
34
|
+
- 匿名模式可以承载公开多人玩法,但必须使用服务端签发、只存哈希、可过期的会话秘密;个人持久化接口仍要求 DiyToken。
|
|
35
35
|
- `ApplicationType=Web`,独立入口为 `index.html`。
|
|
36
36
|
- 构建状态明确区分 `available` 与 `publishable`;无真实 Unity WASM/Data 时禁止正式发布。
|
|
37
|
+
- WebGL 公屏优先使用可访问的 DOM 输入控件并拦截键盘传播;Windows 可使用原生 UI/UIToolkit。不要在外壳和 Unity 中重复绘制同一组操作提示。
|
|
38
|
+
|
|
39
|
+
## 多人租约与公屏交付
|
|
40
|
+
|
|
41
|
+
- 在线角色的事实源使用按 `OsClient` 隔离的共享数据库/Redis,不能使用 API 节点静态字典;客户端心跳周期必须短于租约超时。
|
|
42
|
+
- 加入响应只向本人返回会话秘密;数据库保存 SHA-256,位置快照只公开昵称、受限坐标、朝向、动作与房间版本。
|
|
43
|
+
- 正常卸载/离开主动调用 leave;浏览器崩溃、断网或 `kill -9` 依靠服务端租约自然失效,并通过两个真实客户端测量消失时间。
|
|
44
|
+
- 公屏接口校验在线会话、内容长度、表情白名单、速率窗口和请求幂等;公开读取只返回有限时间窗和有限条数。
|
|
45
|
+
- 轮询是兼容基线;接入 WebSocket/SignalR 时仍保留共享租约为事实源,并用 V8 授权接口签发短期频道权限。
|
|
46
|
+
|
|
47
|
+
## WebGL 与 Windows 双端交付
|
|
48
|
+
|
|
49
|
+
- WebGL 与 Windows 必须来自同一个 Unity 工程、场景和语义版本;禁止用旧本地包搭配新网页版本。
|
|
50
|
+
- Windows 默认交付 x64 安装包,至少包含当前用户安装、开始菜单入口和卸载信息;没有明确需求时不申请管理员权限。
|
|
51
|
+
- 外壳应给出醒目的本地版下载入口,并同时显示版本、文件大小与 SHA-256;文件名包含语义版本,旧版本 URL 不覆盖。
|
|
52
|
+
- 安装包属于公开运行资产,不属于私有源码。同步 `directory` 前必须排除 `public/downloads` 等生成目录,再把完整安装包随 `dist` 走流式资产发布;禁止拆分 Base64 或伪装成源码规避单文件上限。
|
|
53
|
+
- 发布后从公网地址重新下载完整 EXE,比较字节数和 SHA-256;本地制包成功、MCP 返回文件 Id 或 HTTP HEAD 成功都不能替代完整回读。
|
|
54
|
+
- 本地验收至少覆盖静默安装、主程序存在、可启动和卸载入口;签名状态、SmartScreen 信誉和硬件帧率必须单独如实说明。
|
|
37
55
|
|
|
38
56
|
## 商城资源
|
|
39
57
|
|
|
@@ -61,12 +79,14 @@ tests/
|
|
|
61
79
|
1. `microi_list_applications` 按精确 AppKey/中文名查重。
|
|
62
80
|
2. 读取远端应用上下文、源码版本、运行版本、行版本/围栏与路由快照。
|
|
63
81
|
3. 本地完成类型检查、测试、真实 Unity 构建和 dist 完整性校验。
|
|
64
|
-
4.
|
|
82
|
+
4. 先同步私有源码;生成的 Unity、安装包与构建证据目录不得混入源码清单。任何期望版本不一致都停止重基线。
|
|
65
83
|
5. 发布不可变 Web 运行版本,回读入口、文件数、哈希、状态与公开 URL。
|
|
66
|
-
6.
|
|
67
|
-
7.
|
|
68
|
-
8.
|
|
69
|
-
9.
|
|
84
|
+
6. 若同时交付 Windows,从稳定公网地址下载完整安装包并核对大小、SHA-256 和版本;在线入口还要加载真实 WASM/Data。
|
|
85
|
+
7. 调用官方 `ai_app_publish_store` 生成并发布精确版本的应用商城包。超时属于结果不确定,必须回读包正文和 ZIP 后才能决定是否重试。
|
|
86
|
+
8. 回读 `sys_microistore` 的 AppKey、版本、状态、预览图、包摘要与资源策略,断言 `AppVersion == PackageInfo.Version == PreparedAssets.PackageVersion`。
|
|
87
|
+
9. 在官网 `/apps.html` 和 `/app-detail.html?app=<appKey>` 做公开页面回读。
|
|
88
|
+
10. 在一个非官方测试租户安装,回读表、菜单、接口和 Hook 所有权;再验证升级不覆盖租户 Hook。
|
|
89
|
+
11. 多人应用用两个独立浏览器会话互相验证昵称、位置、公屏;强制关闭一端,确认超过约定租约后另一端不再看到该角色。
|
|
70
90
|
|
|
71
91
|
源码同步、运行发布、商城发布、官网可见、目标租户安装是五项独立事实。任一步只有受理 ID 或 `doing` 状态,都不能报告最终成功。
|
|
72
92
|
|
|
@@ -3,7 +3,7 @@ name: v8-api-config
|
|
|
3
3
|
description: Microi V8 接口引擎配置指南。用于设置 ApiEngineKey、ApiAddress、StopHttp、AllowAnonymous、ResponseFile、锁、日志、超时和 HTTP 暴露。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 接口引擎配置
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-cache-pattern
|
|
|
3
3
|
description: Microi V8 Redis 缓存与管理模式。用于读写 V8.Cache、租户缓存命名、TTL 策略、防陈旧数据,以及使用 Redis 管理器页面或 MCP 检索、统计、查看和维护 String、Hash、List、Set、Sorted Set、Stream。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 Redis 缓存模式
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-crud-api
|
|
|
3
3
|
description: Microi V8 CRUD 接口引擎开发。用于编写服务端 JavaScript,涉及 V8.FormEngine Add/Upt/Del/GetTableData、DosResult 返回、事务和校验。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 CRUD API 接口引擎开发
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-debugging
|
|
|
3
3
|
description: Microi V8 调试与日志指南。用于排查接口引擎、V8 事件、console.log、DataAppend.DebugLog、sys_log、异常处理和远程执行问题。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 调试与日志
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-explorer-tree
|
|
|
3
3
|
description: Microi.VSCode 插件 V8 资源管理器目录规范(表单引擎 / 字段V8事件 / 模块引擎按钮)。覆盖 diy_table V8 事件、diy_field V8 事件、sys_menu 按钮 JSON 拆分回写,含 7 条安全不变量。用于实现 VSCode V8 事件树、重构目录布局或处理 sys_menu 按钮 JSON 序列化。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# v8-explorer-tree — V8 资源管理器目录规范 v2(2026-05)
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-export-import
|
|
|
3
3
|
description: Microi V8 Office 导入导出指南。用于使用 V8.Office 导出单/多 Sheet Excel、Word、PowerPoint,解析 Excel,自定义表头/图片、文件响应和批量导入校验。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 Office 导入导出
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-file-upload
|
|
|
3
3
|
description: Microi V8 与 MCP 文件上传下载指南。用于处理流式 AI 应用发布、V8.FilesByteBase64、V8.Method.Upload、私有文件 URL、文件响应、HDFS、OSS、MinIO 和 S3 存储。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 文件上传下载
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-formengine-http
|
|
|
3
3
|
description: 移动端 / 外部系统通过 HTTP 直接调用 Microi FormEngine(GetTableData / GetFormData / Add / Upt / Del)的 RESTful 路由约定与排错指南
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# FormEngine HTTP 路由约定(外部系统调用)
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: v8-frontend-events
|
|
3
|
-
description: Microi 前端 V8 事件与客户端能力指南。用于编写浏览器端字段、按钮、列表事件,或使用 V8.EventName、V8.Form、V8.Print
|
|
3
|
+
description: Microi 前端 V8 事件与客户端能力指南。用于编写浏览器端字段、按钮、列表事件,或使用 V8.EventName、V8.Form、V8.Print 蓝牙打印(佳博 GP-M322、ZICOX CC4、TSPL、CPCL、ESC/POS、BLE、SPP)、扫码、弹窗、表单联动和界面交互。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 前端事件大全
|
|
9
9
|
|
|
@@ -16,7 +16,7 @@ description: Microi 前端 V8 事件与客户端能力指南。用于编写浏
|
|
|
16
16
|
## 能力路由
|
|
17
17
|
|
|
18
18
|
- 查询前端 V8 全部上下文、导航、表单、列表、网络、引擎与工具入口时,读取 `../v8-utilities/references/client-api-index.md`。
|
|
19
|
-
- 需求包含“蓝牙打印、标签打印、TSC/TSPL、ESC/POS
|
|
19
|
+
- 需求包含“蓝牙打印、标签打印、TSC/TSPL、CPCL、ESC/POS、小票打印、佳博/GP-M322、ZICOX/芝柯/CC4、BLE/SPP”时,必须先读取 `references/bluetooth-print.md`;需要完整指令签名、型号转换范围、编码或位图参数时,再读取 `references/bluetooth-print-api.md`。
|
|
20
20
|
- 浏览器模板打印、PDF/纸张模板、`mic_print`、`PageObj`、`PrintObj` 使用 `print-engine/SKILL.md`,不要与直接蓝牙指令混为一套 API。
|
|
21
21
|
- 扫码使用 `V8.Method.ScanCode`,结果从 Promise/回调取得;`V8.ScanCodeRes` 只作兼容结果槽,详见客户端 API 索引。
|
|
22
22
|
- 登录后的敏感操作使用 `V8.Identity.Verify` 完成 Passkey/严格人脸交互;前端只取得一次性 Ticket,后端接口引擎必须重算 `ActionHash` 并原子消费,不能把前端成功当作授权。
|
|
@@ -206,12 +206,14 @@ V8.RefreshTable({ _PageIndex: 1 });
|
|
|
206
206
|
| `V8.FormEngine.GetTableData(name, params, cb)` | 前端查列表(参数对象、回调或 await) |
|
|
207
207
|
| `V8.Post(url, data, cb, errCb, headers, contentType)` | 通用 POST |
|
|
208
208
|
| `V8.Method.ScanCode({...})` | 调用当前终端支持的扫码能力 |
|
|
209
|
-
| `V8.Print.isConnected()` |
|
|
209
|
+
| `V8.Print.isConnected()` | 检查当前 BLE 写特征或 Android SPP Socket 是否仍可用 |
|
|
210
210
|
| `V8.Print.OpenBluetoothPage()` | 在用户手势中打开蓝牙连接页,返回 Promise |
|
|
211
211
|
| `V8.Print.reconnect()` | 使用已记住的设备授权或设备 ID 尝试重连 |
|
|
212
|
-
| `V8.Print.getConnectionState()` |
|
|
212
|
+
| `V8.Print.getConnectionState()` | 获取连接、设备、传输、型号、指令、记忆和错误状态快照 |
|
|
213
213
|
| `V8.Print.subscribeConnection(listener)` | 订阅应用级共享连接状态,返回取消订阅函数 |
|
|
214
|
-
| `V8.Print.
|
|
214
|
+
| `V8.Print.getPrinterProfile()` | 查看自动识别或手工选择后的型号配置 |
|
|
215
|
+
| `V8.Print.setPrinterProfile(mode)` | 广播名无法识别时选 `zicox-cc4` 等型号;旧业务通常不调用 |
|
|
216
|
+
| `V8.Print.prepareSend(bytes)` | 按型号适配后串行分包发送 TSPL、CPCL 或 ESC/POS,必须 `await` |
|
|
215
217
|
|
|
216
218
|
`V8.OpenAnyForm` 只发起打开动作,不返回“用户关闭后的 Promise”。需要替换
|
|
217
219
|
子表单保存时,通过 `EventReplace.Submit(v8, param, callback)` 注册提交替换;
|
|
@@ -231,7 +233,7 @@ if (!V8.Print.isConnected()) {
|
|
|
231
233
|
if (!connected || !V8.Print.isConnected()) return;
|
|
232
234
|
}
|
|
233
235
|
|
|
234
|
-
var command = V8.Print.createNew(); // TSC
|
|
236
|
+
var command = V8.Print.createNew(); // 同一 TSC 调用:GP-M322 原 TSPL,CC4 自动转 CPCL
|
|
235
237
|
command.setSize(60, 40);
|
|
236
238
|
command.setGap(2);
|
|
237
239
|
command.setCls();
|
|
@@ -246,7 +248,9 @@ try {
|
|
|
246
248
|
}
|
|
247
249
|
```
|
|
248
250
|
|
|
249
|
-
PC/平板顶部导航与移动端【我的】页共用同一个应用级 `V8.Print`
|
|
251
|
+
PC/平板顶部导航与移动端【我的】页共用同一个应用级 `V8.Print` 实例,用户可先在全局入口连接,再进入任意模块打印。佳博 GP-M322 路径必须保持原 TSPL 字节不变;ZICOX CC4 只转换有明确 CPCL 等价语义的高层 TSC 调用,不支持的命令必须在首包写入前失败,禁止盲目透传乱码。Android 5+App 的 CC4 可在 BLE 失败时使用已配对 SPP,Web 端不能使用经典蓝牙。
|
|
252
|
+
|
|
253
|
+
`prepareSend` 内部会把不同 V8 上下文排入同一发送队列;成功只证明字节已经写入 BLE 特征或 SPP 输出流,不代表打印机已走纸、无缺纸或无硬件故障。批量打印仍应逐条 `await`,不得用固定 `setTimeout` 猜测完成时间,也不要用 `Promise.all` 表达同一设备的并行打印。完整挂载范围、双型号连接、协议映射、批量恢复、安全与硬件验收见 `references/bluetooth-print.md`;源码级 TSC/ESC/CPCL 方法表见 `references/bluetooth-print-api.md`。
|
|
250
254
|
|
|
251
255
|
### 常用上下文差异
|
|
252
256
|
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
# V8.Print TSC
|
|
1
|
+
# V8.Print TSC、CPCL 适配与 ESC/POS 源码 API
|
|
2
2
|
|
|
3
|
-
本表直接按 `Microi.Client/src/utils/ble/tsc.js`、`esc.js
|
|
3
|
+
本表直接按 `Microi.Client/src/utils/ble/tsc.js`、`esc.js`、
|
|
4
|
+
`printer-compatibility.js` 与编码文件整理。方法名
|
|
4
5
|
(包括历史拼写)必须与源码完全一致,不能根据打印机手册自行改名。
|
|
5
6
|
|
|
6
7
|
## 目录
|
|
7
8
|
|
|
8
9
|
- [构建器与编码](#构建器与编码)
|
|
9
10
|
- [TSC/TSPL 的 28 个方法](#tsctspl-的-28-个方法)
|
|
11
|
+
- [ZICOX CC4 的 CPCL 映射](#zicox-cc4-的-cpcl-映射)
|
|
10
12
|
- [ESC/POS 的 25 个方法](#escpos-的-25-个方法)
|
|
11
13
|
- [参数与组合规则](#参数与组合规则)
|
|
12
14
|
|
|
@@ -17,7 +19,9 @@ var tsc = V8.Print.createNew();
|
|
|
17
19
|
var esc = V8.Print.createNewESC();
|
|
18
20
|
```
|
|
19
21
|
|
|
20
|
-
两个构建器都把指令累积到普通字节数组,`getData()` 返回该数组。TSC
|
|
22
|
+
两个构建器都把指令累积到普通字节数组,`getData()` 返回该数组。TSC 返回值还带不可枚举
|
|
23
|
+
协议/操作元数据:普通遍历与 GP-M322 字节值不变,CC4 发送前据此生成 CPCL。不要复制或
|
|
24
|
+
序列化 TSC 数组后再交给 `prepareSend`。TSC 的全部文本命令、
|
|
21
25
|
ESC 的 `setText` 和二维码内容通过本地 `TextEncoder('gb18030', {
|
|
22
26
|
NONSTANDARD_allowLegacyEncoding: true })` 编码;映射表来自同目录的
|
|
23
27
|
`encoding-indexes.js`,不需要网络请求。
|
|
@@ -59,6 +63,30 @@ NONSTANDARD_allowLegacyEncoding: true })` 编码;映射表来自同目录的
|
|
|
59
63
|
`setPagePrint` → `getData`。字体名、条码类型、纸张传感器、速度和浓度由打印机固件决定,
|
|
60
64
|
构建器不验证范围。
|
|
61
65
|
|
|
66
|
+
## ZICOX CC4 的 CPCL 映射
|
|
67
|
+
|
|
68
|
+
| TSC 方法 | CC4 CPCL 结果 |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `setSize(w,h)` | 203 dpi 下按 `8 dots/mm` 生成页宽/页高 |
|
|
71
|
+
| `setSpeed` / `setDensity` | `SPEED` / `CONTRAST`,钳制到当前安全范围 |
|
|
72
|
+
| `setGap` / `setBline` | `GAP-SENSE` / `BAR-SENSE` |
|
|
73
|
+
| `setFeed` / `setBackFeed` | `POSTFEED` / `PREFEED` |
|
|
74
|
+
| `setDirection(0/1)` | `ZPROTATE` / `ZPROTATE180` |
|
|
75
|
+
| `setReference` | 转换坐标时叠加参考点 |
|
|
76
|
+
| `setBar` / `setBox` / `setReverse` | `LINE` / `BOX` / `INVERSE-LINE` |
|
|
77
|
+
| `setText` | `SETMAG` + `T`,字体名按 16/24/32 档映射 |
|
|
78
|
+
| `setBarCode` | `BARCODE`,可选 `BARCODE-TEXT` |
|
|
79
|
+
| `setQR` | 厂家 SDK 格式 `BARCODE QR ...` + 数据 + `ENDQR` |
|
|
80
|
+
| `setBitmap` | `CG` + 原始单色位图字节 |
|
|
81
|
+
| `setPagePrint` | 最终统一补 `FORM` + `PRINT`,每份必须恰好一次 |
|
|
82
|
+
|
|
83
|
+
`init`、`setCls` 不输出。`addCommand`、`setCountry`、`setCodepage`、`setFromfeed`、
|
|
84
|
+
`setHome`、`setSound`、`setLimitfeed`、`setErase` 与未知方法会抛错,并且适配发生在分包前,
|
|
85
|
+
所以失败时不得写入任何一包。该白名单只表达当前有证据的等价转换,不代表 CC4 固件不具备
|
|
86
|
+
其它 CPCL 能力。
|
|
87
|
+
|
|
88
|
+
`createNewESC()` 的数组标记为 ESC/POS,CC4 直接原样发送,不进入 CPCL 转换。
|
|
89
|
+
|
|
62
90
|
## ESC/POS 的 25 个方法
|
|
63
91
|
|
|
64
92
|
| 方法 | 当前生成的指令/作用 |
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
# V8.Print
|
|
1
|
+
# V8.Print 蓝牙打印运行指南(GP-M322 / ZICOX CC4)
|
|
2
2
|
|
|
3
|
-
本参考用于 Microi 前端 V8 的 BLE 标签和小票打印。运行时事实源为
|
|
4
|
-
`Microi.Client/src/utils/v8-print.js
|
|
3
|
+
本参考用于 Microi 前端 V8 的 BLE/SPP 标签和小票打印。运行时事实源为
|
|
4
|
+
`Microi.Client/src/utils/v8-print.js`,型号与协议适配事实源为
|
|
5
|
+
`Microi.Client/src/utils/ble/printer-compatibility.js`,指令方法事实源见
|
|
5
6
|
[`bluetooth-print-api.md`](bluetooth-print-api.md)。官网旧业务示例不能作为当前连接语义。
|
|
6
7
|
|
|
7
8
|
## 目录
|
|
8
9
|
|
|
9
10
|
- [前端挂载范围](#前端挂载范围)
|
|
10
11
|
- [运行环境与能力判断](#运行环境与能力判断)
|
|
12
|
+
- [双型号兼容契约](#双型号兼容契约)
|
|
11
13
|
- [连接与发送语义](#连接与发送语义)
|
|
12
14
|
- [最小安全流程](#最小安全流程)
|
|
13
15
|
- [批量打印与恢复](#批量打印与恢复)
|
|
@@ -40,7 +42,8 @@ PC/平板顶部导航和移动端【我的】页的蓝牙入口也使用该单
|
|
|
40
42
|
|
|
41
43
|
| 运行环境 | 当前引擎 | 结论 |
|
|
42
44
|
|---|---|---|
|
|
43
|
-
| 5+App
|
|
45
|
+
| Android 5+App | `plus.bluetooth` + `plus.android` | BLE;ZICOX CC4 可回退到已配对 RFCOMM/SPP;Android 12+ 需要附近设备权限 |
|
|
46
|
+
| iOS 5+App | `plus.bluetooth` | BLE,不使用 Android SPP |
|
|
44
47
|
| 存在 `navigator.bluetooth.requestDevice` 的浏览器 | Web Bluetooth | 支持;通常要求安全上下文和用户手势 |
|
|
45
48
|
| 其它普通 H5/浏览器 | 无 | `V8.Print` 仍可能存在,但连接页会提示能力不可用 |
|
|
46
49
|
| 微信小程序原生 BLE | 不属于此模块 | 需要小程序/UniApp 侧专用实现 |
|
|
@@ -49,8 +52,36 @@ PC/平板顶部导航和移动端【我的】页的蓝牙入口也使用该单
|
|
|
49
52
|
`BLEInformation.deviceId`。正确顺序是检查 `V8.Print`、调用 `isConnected()`,再在
|
|
50
53
|
用户点击事件中 `await OpenBluetoothPage()`。
|
|
51
54
|
|
|
55
|
+
Android 12+ 宿主必须启用 DCloud Bluetooth 模块并声明 `BLUETOOTH_SCAN`、
|
|
56
|
+
`BLUETOOTH_CONNECT`。运行时只在用户主动点击“搜索”时申请,不得在页面初始化或自动重连
|
|
57
|
+
时弹授权框;拒绝或永久拒绝要引导用户进入系统“附近的设备”权限设置。
|
|
58
|
+
|
|
52
59
|
浏览器模板、PDF、A4 单据和 Print Engine JSON 属于 `print-engine`;TSC/TSPL 或
|
|
53
|
-
ESC/POS 原生字节通过 BLE 写入才属于 `V8.Print`。
|
|
60
|
+
CPCL/ESC/POS 原生字节通过 BLE/SPP 写入才属于 `V8.Print`。
|
|
61
|
+
|
|
62
|
+
## 双型号兼容契约
|
|
63
|
+
|
|
64
|
+
| 型号 | 标签协议 | 传输 | 兼容承诺 |
|
|
65
|
+
|---|---|---|---|
|
|
66
|
+
| 佳博 GP-M322 | TSPL | BLE | `createNew().getData()` 原字节发送,协议适配层不得改写 |
|
|
67
|
+
| ZICOX CC4 | CPCL | BLE 优先,Android SPP 兜底 | 同一份标准 TSC 高层调用在首包写入前转换为 CPCL |
|
|
68
|
+
| 其它 TSPL | TSPL | BLE | 保持原字节路径 |
|
|
69
|
+
|
|
70
|
+
`createNewESC()` 在 CC4 上也原样发送,因为厂家声明 CC4 支持 ESC/POS。不要根据厂家 Demo
|
|
71
|
+
里存在测试字符串就擅自宣称其它协议;以产品页、准确手册和实机固件为准。
|
|
72
|
+
|
|
73
|
+
TSC 构建器给字节数组附加不可枚举的操作元数据,因此 GP 字节值、长度与数组枚举完全不变。
|
|
74
|
+
CC4 必须直接收到同一次 `getData()` 返回值;`Array.from`、展开、JSON 序列化等复制会丢失
|
|
75
|
+
元数据并失败关闭。适配器先完成整份转换和校验,再开始分包;不支持的命令不得产生半张输出。
|
|
76
|
+
|
|
77
|
+
CC4 可转换:纸张尺寸、速度、浓度、间隙/黑标、前后走纸、方向 0/1、参考点、线/框/反相、
|
|
78
|
+
文字、条码、二维码、位图及单次 `setPagePrint`。`init`/`setCls` 无需输出。原始 `addCommand`、
|
|
79
|
+
国家/代码页、`setFromfeed`、`setHome`、蜂鸣、限位、擦除和未知方法没有足够等价语义,必须
|
|
80
|
+
在首包写入前拒绝。扩展白名单前要同时增加协议单测和两台目标机回归。
|
|
81
|
+
|
|
82
|
+
Android SPP 与厂家 Demo 一致,优先 RFCOMM 通道 1,再以标准 UUID
|
|
83
|
+
`00001101-0000-1000-8000-00805F9B34FB` 兜底。自动模式只显示名称可识别为 CC4 的已配对
|
|
84
|
+
经典设备;广播名不规范时,用户先手工选择 `zicox-cc4`。Web Bluetooth 不能访问 SPP。
|
|
54
85
|
|
|
55
86
|
## 连接与发送语义
|
|
56
87
|
|
|
@@ -63,12 +94,17 @@ ESC/POS 原生字节通过 BLE 写入才属于 `V8.Print`。
|
|
|
63
94
|
| `reconnect()` | 使用已记住的设备 ID 或浏览器保留的设备授权重连,不弹选择框 |
|
|
64
95
|
| `getConnectionState()` | 返回可展示的连接、记忆、设备、错误和重连状态快照 |
|
|
65
96
|
| `subscribeConnection(listener)` | 立即回调当前快照并持续通知状态变化,返回取消订阅函数 |
|
|
66
|
-
| `
|
|
97
|
+
| `getPrinterProfile()` | 返回最终型号、标签指令和传输偏好;普通业务无需调用 |
|
|
98
|
+
| `setPrinterProfile(mode)` | 手工选 `gprinter-gp-m322`、`zicox-cc4`、`generic-tspl`,或恢复 `auto` |
|
|
99
|
+
| `prepareSend(bytes)` | 先恢复连接、完成型号协议适配,再进入应用级队列按包串行写入 |
|
|
67
100
|
| `Send(bytes)` | 依赖 `prepareSend` 已设置的内部游标,属于内部状态机入口,业务代码不要直接调用 |
|
|
68
101
|
| `setOneTimeData(bytes)` | 设置 BLE 包长;只接受 1–512 整数,连接页候选 20–190,默认 20 |
|
|
69
102
|
| `setPrinterNum(num)` | 重复发送同一缓冲区;只接受 1–99 整数,连接页候选 1–9 |
|
|
70
103
|
| `disconnect()` | 主动断开、停止自动重连并忘记当前设备 |
|
|
71
|
-
| `BLEInformation` |
|
|
104
|
+
| `BLEInformation` | 最近设备/型号/通道/服务/特征元数据,只用于诊断,不代表实时连接或打印回执 |
|
|
105
|
+
|
|
106
|
+
`getConnectionState()` 额外含 `transport`、`profileMode`、`profileId`、`profileName`、
|
|
107
|
+
`commandLanguage`;前端展示可以使用,打印判断仍使用 `isConnected()`。
|
|
72
108
|
|
|
73
109
|
`OpenBluetoothPage()` 不是“连接成功事件”;用户连上设备后仍要关闭弹窗,调用方才能继续。
|
|
74
110
|
设备元数据会写入 `localStorage` 与兼容用 `sessionStorage`。应用初始化、页面恢复、重新获得
|
|
@@ -115,8 +151,9 @@ async function printLabel(order) {
|
|
|
115
151
|
}
|
|
116
152
|
```
|
|
117
153
|
|
|
118
|
-
ESC/POS 小票使用
|
|
119
|
-
|
|
154
|
+
同一段标签代码在 GP-M322 上保持 TSPL,在 CC4 上转换为 CPCL。ESC/POS 小票使用
|
|
155
|
+
`createNewESC()`,完整顺序和 25 个真实方法见
|
|
156
|
+
[`bluetooth-print-api.md`](bluetooth-print-api.md)。发送成功只表示 BLE/SPP 写调用完成,不能
|
|
120
157
|
写成“打印机已走纸”或“物理打印成功”。当前源码虽发现 read/notify 特征,但没有订阅状态
|
|
121
158
|
通知,也没有消费 ACK、缺纸或故障回执。
|
|
122
159
|
|
|
@@ -157,6 +194,8 @@ async function printBatch(rows, startIndex) {
|
|
|
157
194
|
- Web Bluetooth 仅把四个常见服务 UUID 传入 `optionalServices`:`18f0`、`ff00`、
|
|
158
195
|
`49535343-fe7d-4ae5-8fa9-9fafd205e455`、`e7810a71-73ae-499d-8c15-faa9aef0c3f2`。
|
|
159
196
|
当前没有公开的自定义服务配置,并选择枚举到的第一个可写特征;其它型号可能需要扩展源码。
|
|
197
|
+
CC4 固件若只开放 SPP 或使用其它私有 UUID,Web 端不可连接;Android 5+App 使用已配对 SPP,
|
|
198
|
+
或先取得厂家准确 BLE UUID 再扩展源码,禁止猜 UUID。
|
|
160
199
|
- `prepareSend` 默认每包 20 字节、包间约 20ms;同一缓冲区多份打印间约 100ms。这只是
|
|
161
200
|
BLE 写节奏,不是打印完成等待时间。包长必须是已实测的正整数,空缓冲区不得发送。
|
|
162
201
|
- 当前分包公式使用 `Math.ceil(length / packetSize)`,长度恰好整除时不会产生 0 字节末包;
|
|
@@ -167,6 +206,8 @@ async function printBatch(rows, startIndex) {
|
|
|
167
206
|
大图可能产生大缓冲区;先缩放、二值化并用小图测试。
|
|
168
207
|
- `V8.Print` 使用应用级共享发送队列,跨 V8 上下文不会再并发覆盖 `currentTime`、`looptime`、
|
|
169
208
|
`lastData` 等共享状态。队列只保证写入顺序,不提供打印机 ACK、业务事务或自动重打语义。
|
|
209
|
+
- CC4 遇到不支持的方法、复制后丢失元数据、缺少或重复 `setPagePrint()` 时应零写入失败;不要
|
|
210
|
+
在业务层捕获后把原 TSPL 盲目重发给 CC4。
|
|
170
211
|
|
|
171
212
|
## 安全边界
|
|
172
213
|
|
|
@@ -182,10 +223,11 @@ async function printBatch(rows, startIndex) {
|
|
|
182
223
|
|
|
183
224
|
至少记录:
|
|
184
225
|
|
|
185
|
-
1.
|
|
186
|
-
2. 5+App
|
|
226
|
+
1. GP-M322 与 CC4 的固件、纸张规格、服务/写特征 UUID 或 SPP、指令集。
|
|
227
|
+
2. 5+App 或浏览器版本;首次授权/配对、自动/手工选型、再次连接、主动断开、页面刷新和断线重连。
|
|
187
228
|
3. 中文、数字、特殊字符、二维码、条码、长文本、图片和边界金额。
|
|
188
229
|
4. 默认 20 字节与目标包长;同时覆盖“长度恰好整除包长”。
|
|
189
230
|
5. 连续 20 张严格串行发送,无乱序、丢包、重复或任务状态互相污染。
|
|
190
231
|
6. 中途关机、缺纸、离开范围、权限撤销后的失败位置与恢复行为。
|
|
191
|
-
7.
|
|
232
|
+
7. 两种设备交替连接,证明 GP 原 TSPL 不变、CC4 收到 CPCL/ESC-POS;CC4 分别记录 BLE 与 SPP。
|
|
233
|
+
8. 页面只确认“数据已发送”;若业务要求确认物理结果,另接状态回读或人工确认。
|
|
@@ -3,7 +3,7 @@ name: v8-http-integration
|
|
|
3
3
|
description: Microi V8 HTTP 集成指南。用于通过 V8.Http.Get/Post/Patch、对应 Response 方法及后端 Async 方法调用接口,处理请求头、JSON/form/XML 载荷、超时、文件和响应解析,并兼容前后端 V8。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 HTTP 外部接口集成
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: v8-image-processing
|
|
|
3
3
|
description: Microi V8.Image 服务端图像处理指南。用于在接口引擎或后端 V8 事件中生成图片、横向/纵向/网格拼接、图层覆盖、水印、缩放、裁剪、旋转、翻转、格式转换、绘制文字与图形、生成二维码、读取图片信息,以及设计安全的 Base64/Data URI 图像处理流程。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Codex
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
8
|
# Microi V8 图像处理
|
|
9
9
|
|