@microi.net/cli 5.7.5 → 5.7.7
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/assets/build-meta.json +5 -5
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server.js +46 -46
- package/scripts/microi-cli.js +3 -3
- package/scripts/microi-skills.meta.json +200 -200
- package/skills/.microi-skills-version.json +6 -6
- package/skills/.progressive-disclosure-manifest.json +3566 -3566
- package/skills/microi-client-frontend/SKILL.md +7 -4
- package/skills/microi-codex/SKILL.md +5 -1
- package/skills/microi-datasource-mapping/SKILL.md +5 -1
- package/skills/microi-docs-coverage/references/capability-map.md +1 -0
- package/skills/page-engine/SKILL.md +14 -3
|
@@ -27,7 +27,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
27
27
|
---
|
|
28
28
|
|
|
29
29
|
<!-- /microi-progressive:chunk -->
|
|
30
|
-
<!-- microi-progressive:chunk id=microi-client-frontend-001 sha256=
|
|
30
|
+
<!-- microi-progressive:chunk id=microi-client-frontend-001 sha256=112177bb326f8d26803e3bd9248011d839fe8d081431320d0e09f90f82487984 -->
|
|
31
31
|
## 1. 技术栈和源码入口
|
|
32
32
|
|
|
33
33
|
### 详情评论与代码版本的按需读取
|
|
@@ -58,7 +58,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
60
|
<!-- /microi-progressive:chunk -->
|
|
61
|
-
<!-- microi-progressive:chunk id=microi-client-frontend-002 sha256=
|
|
61
|
+
<!-- microi-progressive:chunk id=microi-client-frontend-002 sha256=2a10489fe38576db661f08076d5bd9c7cf0a39a0329a137810d899d7a395d36d -->
|
|
62
62
|
## 2. 表单引擎三层结构
|
|
63
63
|
|
|
64
64
|
### 模块级跨端视图
|
|
@@ -157,7 +157,10 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
157
157
|
|
|
158
158
|
右上角主题设置的边角风格默认圆角;已安装 `sys_user.CornerStyle` 时从账号偏好恢复,旧租户才使用浏览器本地兼容值。根元素 `data-mci-corner-style` 控制全局角半径,覆盖动态挂载的 Element Plus 弹层。顶栏入口统一使用 40px 触控区域和 20px 图标,AI 入口使用图标组件,不使用图片。模块 `HideTableBanner`、`HideFormBanner` 只在值明确为 `1/true` 时隐藏对应 Banner,并跳过其专属统计请求;未安装开关字段的旧菜单继续显示。
|
|
159
159
|
|
|
160
|
-
-
|
|
160
|
+
- 边角风格先读取当前用户 `CornerStyle`:`round/square` 显式覆盖;空值或 `System` 继承租户 `sys_config.CornerStyle`,租户空值默认为圆角。不得把空个人值提前归一为 `round`,否则会阻断租户直角设置。
|
|
161
|
+
- 桌面经典布局使用 `NavigationLayout=Side/Top`,个人空值或 `System` 继承租户,租户空值为侧边导航。顶部导航复用当前权限路由、角标与外链,空间不足收纳到更多菜单;移动端仍采用底部导航。右上角同时配置 `MenuChildExpandMode=System/Down/Right`,通过同一个个人偏好接口跨设备保存。
|
|
162
|
+
- 桌面壳层使用视口高度与可收缩的 flex 内容区,只有路由内容滚动,导航和 Tab 不随页面滚动;移动端仍保留文档滚动。用户入口含头像与姓名,不能使用纯图标的固定 flex 宽度;异步图表须在真实 DOM 挂载后观察尺寸变化,避免侧边/顶部导航切换后撑破卡片。
|
|
163
|
+
- 主题色、浅色/深色、菜单子级展开方式等需要“换设备仍生效”的选择必须保存到当前 DiyToken 用户的 `sys_user` 白名单字段;`localStorage` 只作为未安装新字段租户和匿名启动阶段的兼容回退,不能作为跨设备事实源。
|
|
161
164
|
- 已安装用户偏好字段时优先级固定为“当前用户显式值 → 租户 `sys_config` → 平台安全默认”;个人菜单值 `System` 表示继承租户配置。不得让上一位用户的浏览器本地主题覆盖下一位已登录用户。
|
|
162
165
|
- 自助保存优先使用官方 `Managed` 接口引擎,由 `V8.CurrentUser.Id` 与 `V8.OsClient` 推导用户和租户,并在服务端构造固定白名单更新对象;接口参数禁止决定目标 Id/OsClient,也禁止写入 Account、Phone、Tenant、Dept、Role、Level、State、Pwd、认证因子和登录审计字段。只有缺少可复用可信原子能力时才新增 C# DTO/端点。保存成功后调用 `V8.Method.RefreshLoginUser` 刷新登录缓存,并让微服务宿主重新同步 `CurrentUser`。
|
|
163
166
|
- 右上角即时切换可以乐观应用并短防抖保存;远端保存失败时保留当前设备效果并明确提示。个人中心和右上角必须调用同一个应用包交付的白名单接口引擎(当前为 `platform-user-update-preferences`),不能分别形成两套字段、枚举或优先级。
|
|
@@ -187,7 +190,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
187
190
|
---
|
|
188
191
|
|
|
189
192
|
<!-- /microi-progressive:chunk -->
|
|
190
|
-
<!-- microi-progressive:chunk id=microi-client-frontend-004 sha256=
|
|
193
|
+
<!-- microi-progressive:chunk id=microi-client-frontend-004 sha256=7d9e9b8b8f6b2c790d3cefd02b9dc0cda5d55ede477f98a48d92c8975990d3ff -->
|
|
191
194
|
## 7. 验证建议
|
|
192
195
|
|
|
193
196
|
### 本地 ApiBase 与 OsClient 解析(强制)
|
|
@@ -24,7 +24,11 @@ description: 在 Microi Agent、Codex 或 DeepSeek Harness 中完成 Microi吾
|
|
|
24
24
|
- Windows 安装包的构建成功、Authenticode 签名、SmartScreen/商店信任、HDFS 上传与 CDN 回读是不同证据;双击 `一键打包Windows.cmd` 时自动探测 Microsoft Artifact Signing 或本机可信证书,没有凭据则继续生成明确标记的未签名包,显式 `-Signing Signed` 才失败关闭。签名必须先覆盖安装器及独立执行文件,再计算发布 SHA256。macOS 默认 `bash ./一键打包Mac.sh` 同样自动探测并在无凭据时生成未签名包;`--signed` 是正式门禁,必须在缺少证书或公证钥匙串时失败,并通过 `codesign`、`spctl`、`stapler validate` 后才标记已签名公证。
|
|
25
25
|
- 当前 Electron 桌面运行时不能直接打包 iOS/Android,也不能把现有 DMG 原样提交 Mac App Store。移动端和 MAS 版应作为受限客户端,复用账号、模型、会话、MCP 与桌面配对协议,把 Node/Harness/Shell/插件执行放到配对桌面或合规远端;分别完成 Apple/Google 签名和商店审核。
|
|
26
26
|
- 官方账号页和关于标签通过 `platform-current-user` 接口引擎读取当前 `sys_user.LicenseType`。桌面相关平台业务逻辑优先通过 `microi_itdos` 接口引擎实现;只有接口引擎缺少必需底层原子能力时才能改后端源码,并说明原因。
|
|
27
|
-
- 正式 Windows/macOS 安装包必须内置固定版本且经过 SHA-256 校验的 cloudflared,运行时优先使用安装包 `resources/bin`,避免首次联网临时下载。检查更新从 `https://api.itdos.com/microi-code/updates/` 的匿名接口引擎读取 YAML/JSON,安装包二进制仍通过 HDFS 流式发布。
|
|
27
|
+
- 正式 Windows/macOS 安装包必须内置固定版本且经过 SHA-256 校验的 cloudflared,运行时优先使用安装包 `resources/bin`,避免首次联网临时下载。检查更新从 `https://api.itdos.com/microi-code/updates/` 的匿名接口引擎读取 YAML/JSON,安装包二进制仍通过 HDFS 流式发布。
|
|
28
|
+
- Windows 安装验收必须包含旧卸载器损坏后的升级、同版本重装、超过 260 字符的路径以及全部文件 SHA-256 回读。安装器使用当次发布的兼容卸载器,并用固定哈希的 Unicode 7-Zip 直接解压到目标目录,禁止恢复临时目录解压后使用 NSIS `CopyFiles` 复制的流程;该流程会将路径或复制错误误报为“应用无法关闭”。进程检查仅匹配安装目录内的产品主程序及内置 Node,不能按整个目录匹配安装器或无关程序。
|
|
29
|
+
- 长路径验收必须先安装完整旧版本,再在同一目录覆盖升级及再次重装,不能只在空目录或仅含模拟卸载器的目录安装。卸载清理、旧文件备份迁移和失败回滚均须支持 Windows 扩展路径;通过真实 NSIS 与独占文件句柄验证长路径迁移和占用回滚,不能仅用 JS 文件操作或首次解压测试替代。
|
|
30
|
+
- Windows 1.2.7 起安装失败诊断直接集成于安装器:失败窗口提供「复制安装日志」与「打开日志」,不另发独立诊断工具。`build/microi-installer-log.nsh` 在实际清理/解压/回滚步骤写入安装目录外的 UTF-8 日志,`build/microi-installer-diagnostics.ps1` 作为内嵌的只读补充,记录 Win32 访问错误和 Restart Manager 占用 PID。整份日志通过原生 Unicode 剪贴板复制;超过容量时明确拒绝而不截断。验收须真实点击复制按钮、核对中文长日志、占用文件的 Win32=32 与回滚;卸载退出码 2 不等同于 Win32 错误码 2,本机通过不代表客户机升级通过。
|
|
31
|
+
- 桌面平台 Worker 必须在真实安装包内验证 IPC 与 Windows DPAPI。旧保险库只有成功解密且明文为零字节时才允许迁移为空文档;损坏或其他 Windows 用户的保险库保留原文件并返回具体错误。启动初始化拒绝不能让 Node 服务退出;单元测试、安装成功与真实桌面账号/AI 员工页面联调是三个独立验收层。
|
|
28
32
|
- dsh-desktop 升级必须遵循 `Microi.Agent/同步dsh-desktop上游.md` 的三方同步流程和补丁意图清单;`microi/`、`packages/microi-code-*` 与桥接代码是永久保护区,普通上游文件使用三方比较,补丁必须经 `npm ci` 重放。关于页、NOTICE、MIT License、DataElement 版权与两个上游仓库链接不得删除。停止或退出后的任务保留历史,当前 SDK 的跨进程历史仅供查看,需新建任务引用继续。
|
|
29
33
|
|
|
30
34
|
### 默认中文输出
|
|
@@ -16,7 +16,11 @@ Microi 低代码平台中,`Select / Radio / Checkbox` 等选项组件支持两
|
|
|
16
16
|
| **Key ≠ Value**(推荐) | `"key1\|label1,key2\|label2"` | key (如 `"VIP"`) | label (如 `"VIP会员"`) | `"VIP\|VIP会员,普通会员\|普通会员"` |
|
|
17
17
|
| **Key = Value**(简单) | `"值1,值2,值3"` | 原始值 (如 `"普通会员"`) | 原始值 (如 `"普通会员"`) | `"普通会员,VIP"` |
|
|
18
18
|
|
|
19
|
-
> ⚠️ 注意:若误将 Key 与 Value 设置为相同中文,后台和 DB 中存的就是中文字符串(如 `Level='普通会员'`)。
|
|
19
|
+
> ⚠️ 注意:若误将 Key 与 Value 设置为相同中文,后台和 DB 中存的就是中文字符串(如 `Level='普通会员'`)。
|
|
20
|
+
|
|
21
|
+
### 字段 V8 必须按保存格式读取选中值
|
|
22
|
+
|
|
23
|
+
`SelectSaveFormat='Text'` 时,`V8.Form.<字段>` 可以是保存字段的原始文本;旧配置可能仍为对象或 JSON 文本。按钮不能无条件读取 `.TableName`、`.Id` 等对象属性。先按真实 Config 提取值并校验非空,再调用接口;接口失败和网络异常均在 `finally` 恢复 Loading。验收须覆盖文本、旧对象、JSON 文本和空选项。
|
|
20
24
|
|
|
21
25
|
---
|
|
22
26
|
|
|
@@ -76,6 +76,7 @@ Markdown。第一列是相对 `microi.doc/docs/doc/` 的路径;第二列 Skill
|
|
|
76
76
|
| `v8-engine/apiengine-index.md` | v8-crud-api, v8-api-config | 接口引擎实战和规范 |
|
|
77
77
|
| `v8-engine/form-engine.md` | v8-crud-api, v8-formengine-http, module-engine, microi-form-engine | FormEngine API、HTTP、原生查询身份/统计范围与按表主库策略 |
|
|
78
78
|
| `v8-engine/mcp-server.md` | microi-system-delivery, microi-codex-installer, v8-security | MCP 工具、确认、审计、文件、日志、备份与访问密钥 |
|
|
79
|
+
| `v8-engine/microi-agent.md` | microi-codex, microi-codex-installer | Microi Agent 桌面安装、连接诊断与更新 |
|
|
79
80
|
| `v8-engine/v8-client.md` | v8-utilities, v8-frontend-events, v8-http-integration, v8-security, ai-engine, print-engine | 全部前端 V8、平台 AI、强身份验证、扫码和蓝牙打印 |
|
|
80
81
|
| `v8-engine/v8-server.md` | v8-utilities, v8-api-config, v8-http-integration, v8-security, ai-engine | 全部后端 V8、强身份票据、平台 AI 和专项路由 |
|
|
81
82
|
| `v8-engine/vs-code-plugin.md` | v8-explorer-tree, microi-client-frontend, workspace-conventions | VS Code 插件、Microi CLI、AI/MCP 初始化、类型、资源树和共享工作区 |
|
|
@@ -19,7 +19,17 @@ MCP 的生成/保存入口包含 `microi_build_page_design` 与 `microi_save_pag
|
|
|
19
19
|
|
|
20
20
|
用户提供参考截图时,先拆出面板行列比例、指标主次、图表与表格高度、标题/筛选位置,再用原生 pannel/statistic/chart/tabel/list 组合配置。不能把所有指标替换成一排大色块,也不能用模板假数据声称已接通客户业务。必须用同一视口截图检查浅色和平台深色,检查页面缩放后的断行与纵向空白;布局接近度和真实数据绑定分别验收。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
### 平台智能工作首页
|
|
23
|
+
|
|
24
|
+
保留 `aiengine` 原生 AI 创作中心,与 `homeoverview` 工作概览组成桌面首行 14/10 栅格;任务、月历与公告放在下一行,移动端自动切为 24 栅格。不能把任务的完整 15 行列表或未配置日程的大空白块直接堆在首屏。
|
|
25
|
+
|
|
26
|
+
- `homeoverview.widgetParams[0]` 为真实个人统计接口 `platform-home-overview`,`[1].value="compact"` 启用紧凑指标、常用应用与趋势;所有数据仍受当前用户权限过滤。
|
|
27
|
+
- `workcenter.widgetParams` 按索引依次为视图、工作菜单、流程菜单、公告菜单、日历菜单、分页条数;`[5].value=5` 用于首页任务,范围 5–20,不能影响独立“我的工作”页面。
|
|
28
|
+
- `diycalendar.widgetParams[0].value` 应绑定当前账号可访问、关联 `microi_calendar` 的真实模块 Id;`[1].value="compact"` 只压缩月历密度,仍须支持点击日期新增及事件编辑、删除。备注字段为 `Remark`。隐藏菜单也可以是授权入口,旧模块可能没有 `DiyTableName`,此时必须显式绑定实际模块,不把只读日期回退当作日程验收成功。无模块时展示本月日期并明确提示未配置,不伪造任务。
|
|
29
|
+
- `diytable.widgetParams[4].value="NoticeList"` 以只读公告列表展示真实授权公告;表、菜单仍在 `[0]/[1]`,模块缺失时使用 `referencePolicy.onMissing="RemoveWidget"` 移除可选组件及空容器。
|
|
30
|
+
- 修改已有首页前通过 MCP 读取页面及历史 `CurrentHash`,保存传 `expectedCurrentHash`,再回读 JSON 和历史,保留可恢复版本。
|
|
31
|
+
|
|
32
|
+
你正在为 Microi 吾码平台生成界面引擎页面的 JSON 数据。界面引擎页面由 `formData` 对象描述,用户导入 JSON 即可使用。
|
|
23
33
|
|
|
24
34
|
<!-- microi-progressive:begin -->
|
|
25
35
|
<!-- microi-progressive:chunk id=page-engine-000 sha256=e9ccd20e2c3504afc0a91f5dbe93ed755aed4e83e9ffec13af5b9d60528986e0 -->
|
|
@@ -172,10 +182,11 @@ $ApiBase$/apiengine/{ApiEngineKey}
|
|
|
172
182
|
```
|
|
173
183
|
|
|
174
184
|
<!-- /microi-progressive:chunk -->
|
|
175
|
-
<!-- microi-progressive:chunk id=page-engine-007 sha256=
|
|
185
|
+
<!-- microi-progressive:chunk id=page-engine-007 sha256=ce0486eb9d2282bc199972e167e85aca7b03860d15abdd03982c4a23a90e206e -->
|
|
176
186
|
## 运行态布局与滚动规范
|
|
177
187
|
|
|
178
|
-
- 页面只保留一个主滚动容器:仪表盘、首页和嵌套界面优先继承最外层页面滚动;单个 `pannel`、`workcenter`、`diytable`、`diycalendar`、嵌套 `pageengine` 在运行态默认使用内容自适应高度和 `overflow: visible`,不得无条件设置 `overflow: auto`。
|
|
188
|
+
- 页面只保留一个主滚动容器:仪表盘、首页和嵌套界面优先继承最外层页面滚动;单个 `pannel`、`workcenter`、`diytable`、`diycalendar`、嵌套 `pageengine` 在运行态默认使用内容自适应高度和 `overflow: visible`,不得无条件设置 `overflow: auto`。
|
|
189
|
+
- 经典桌面主滚动容器为路由内容区,导航与 Tab 留在视口内;移动端继续保留外层文档滚动。图表在异步挂载后绑定尺寸观察器,切换导航、收缩侧栏及改变窗口宽度都应重新测量,禁止仅隐藏溢出而保留错误画布宽度。真实回归覆盖两种导航、两种桌面宽度,以及日程创建后刷新、备注编辑和删除。
|
|
179
190
|
- 固定高度只用于设计器拖拽预览、图表画布或确有虚拟滚动需求的组件。设计态可按 `widgetOption.height` 提供滚动,运行态必须先验证内容能完整展开;不能用双滚动条掩盖容器高度不足。
|
|
180
191
|
- 表格型容器通常按 15 条数据验收,表头、工具栏、全部数据行和分页区应同时可见;首页紧凑表格可通过 `diy-table` 的 `PageSizeList` 追加 `[10]`,并在 `sys_menu.DefaultPageSize` 为空时默认选择候选页码中的最小值。空间不足时先压缩统计卡、工具栏、行高和间距,再考虑增加外层页面长度,不隐藏分页、不在卡片内部滚动。
|
|
181
192
|
- 同一行的容器使用一致的左右边距、内边距、标题高度和顶部基线;同层卡片间距必须相同,左右边缘、标题、工具栏和内容区应形成稳定对齐线。推荐使用统一的 8px 基础间距和 8/12/16px 倍数。
|