@microi.net/cli 5.9.7 → 5.9.9
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 +43 -43
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/assets/build-meta.json +4 -4
- package/cordis.patch.yml +1 -1
- package/package.json +82 -82
- package/scripts/microi-cli.js +54 -54
- package/scripts/microi-skills.meta.json +210 -210
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +25 -25
- package/skills/microi-client-frontend/SKILL.md +8 -2
- package/skills/microi-deployment/SKILL.md +6 -0
- package/skills/microi-docs-coverage/references/capability-map.md +1 -1
- 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 +20 -2
- package/skills/microi-uniapp-frontend/SKILL.md +5 -1
- package/skills/module-engine/SKILL.md +10 -0
- package/skills/playwright-e2e/SKILL.md +2 -0
- package/skills/workspace-conventions/SKILL.md +4 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-16T11:53:52.951Z",
|
|
4
4
|
"policy": {
|
|
5
5
|
"maxEntryLines": 285,
|
|
6
6
|
"referenceBudgetLines": 245,
|
|
@@ -169,11 +169,11 @@
|
|
|
169
169
|
]
|
|
170
170
|
},
|
|
171
171
|
"microi-client-frontend": {
|
|
172
|
-
"originalSha256": "
|
|
173
|
-
"originalLines":
|
|
172
|
+
"originalSha256": "55ca4a8abe9c6eb884c547b48ff581cc8d4bb03c29336939c65e0ae9056197db",
|
|
173
|
+
"originalLines": 712,
|
|
174
174
|
"prefixSha256": "19308dd1a04397f764cc5ab4fefe76093704564592396ce00482d28e952537b7",
|
|
175
175
|
"prefixBytes": 1400,
|
|
176
|
-
"entryLines":
|
|
176
|
+
"entryLines": 254,
|
|
177
177
|
"chunks": [
|
|
178
178
|
{
|
|
179
179
|
"id": "microi-client-frontend-000",
|
|
@@ -195,8 +195,8 @@
|
|
|
195
195
|
"id": "microi-client-frontend-002",
|
|
196
196
|
"ordinal": 2,
|
|
197
197
|
"destination": "microi-client-frontend/SKILL.md",
|
|
198
|
-
"sha256": "
|
|
199
|
-
"lines":
|
|
198
|
+
"sha256": "34b6dd5233aac8325da15be3dc3c6a866dbbe77fd93288d5b2ad194d646fcf08",
|
|
199
|
+
"lines": 118,
|
|
200
200
|
"heading": "2. 表单引擎三层结构"
|
|
201
201
|
},
|
|
202
202
|
{
|
|
@@ -763,8 +763,8 @@
|
|
|
763
763
|
]
|
|
764
764
|
},
|
|
765
765
|
"microi-system-delivery": {
|
|
766
|
-
"originalSha256": "
|
|
767
|
-
"originalLines":
|
|
766
|
+
"originalSha256": "e04b4ac9fc32d5b502b8dbaeb5fa1a3a799bb7181b20cd4e7e95e3d06757af3f",
|
|
767
|
+
"originalLines": 701,
|
|
768
768
|
"prefixSha256": "c6846a619a5b9291649fc44a36de5a0676ec2b1dfa94a57ad38f9620573cf4ff",
|
|
769
769
|
"prefixBytes": 4786,
|
|
770
770
|
"entryLines": 106,
|
|
@@ -821,8 +821,8 @@
|
|
|
821
821
|
"id": "microi-system-delivery-006",
|
|
822
822
|
"ordinal": 4,
|
|
823
823
|
"destination": "microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md",
|
|
824
|
-
"sha256": "
|
|
825
|
-
"lines":
|
|
824
|
+
"sha256": "3c429fa01c7c8b077ccb8bceca59ad0274f7b83e7989e2f21a861dd0e54f11aa",
|
|
825
|
+
"lines": 149,
|
|
826
826
|
"heading": "自动化测试必须覆盖的坑"
|
|
827
827
|
},
|
|
828
828
|
{
|
|
@@ -980,11 +980,11 @@
|
|
|
980
980
|
]
|
|
981
981
|
},
|
|
982
982
|
"microi-uniapp-frontend": {
|
|
983
|
-
"originalSha256": "
|
|
984
|
-
"originalLines":
|
|
983
|
+
"originalSha256": "f3836deef4b4652d5f1df9907a10a573d1c99359ebb712ca86f9e7020f634836",
|
|
984
|
+
"originalLines": 558,
|
|
985
985
|
"prefixSha256": "55f2799d872b4b9682449adf2e554003eb8642c111af262cacf42265b99dd5f5",
|
|
986
986
|
"prefixBytes": 3040,
|
|
987
|
-
"entryLines":
|
|
987
|
+
"entryLines": 213,
|
|
988
988
|
"chunks": [
|
|
989
989
|
{
|
|
990
990
|
"id": "microi-uniapp-frontend-000",
|
|
@@ -998,8 +998,8 @@
|
|
|
998
998
|
"id": "microi-uniapp-frontend-001",
|
|
999
999
|
"ordinal": 1,
|
|
1000
1000
|
"destination": "microi-uniapp-frontend/SKILL.md",
|
|
1001
|
-
"sha256": "
|
|
1002
|
-
"lines":
|
|
1001
|
+
"sha256": "acfd8dd91195e7930896bd54e6ae7ce3d3982bdeb0d674d98337878eab1a5e82",
|
|
1002
|
+
"lines": 31,
|
|
1003
1003
|
"heading": "标准产品、视图协议与租户扩展"
|
|
1004
1004
|
},
|
|
1005
1005
|
{
|
|
@@ -1382,11 +1382,11 @@
|
|
|
1382
1382
|
]
|
|
1383
1383
|
},
|
|
1384
1384
|
"playwright-e2e": {
|
|
1385
|
-
"originalSha256": "
|
|
1386
|
-
"originalLines":
|
|
1387
|
-
"prefixSha256": "
|
|
1388
|
-
"prefixBytes":
|
|
1389
|
-
"entryLines":
|
|
1385
|
+
"originalSha256": "d48252ddcd363ab11c564bf448d2bdd0336a531327ef909bbc8fbb9cc7b34cfa",
|
|
1386
|
+
"originalLines": 809,
|
|
1387
|
+
"prefixSha256": "95075494656694f0912b7449b57333794ca437a5b2ee97d80b1b452aa8154392",
|
|
1388
|
+
"prefixBytes": 2492,
|
|
1389
|
+
"entryLines": 201,
|
|
1390
1390
|
"chunks": [
|
|
1391
1391
|
{
|
|
1392
1392
|
"id": "playwright-e2e-000",
|
|
@@ -3241,18 +3241,18 @@
|
|
|
3241
3241
|
]
|
|
3242
3242
|
},
|
|
3243
3243
|
"workspace-conventions": {
|
|
3244
|
-
"originalSha256": "
|
|
3245
|
-
"originalLines":
|
|
3244
|
+
"originalSha256": "41a0ea967ef35e75b8873868319a36c30825f2b6878e447ba27213542e18499f",
|
|
3245
|
+
"originalLines": 648,
|
|
3246
3246
|
"prefixSha256": "45acfafcda30d35e7cabefaa67f8b73697d0f93724733d2469386a54e3910b76",
|
|
3247
3247
|
"prefixBytes": 1658,
|
|
3248
|
-
"entryLines":
|
|
3248
|
+
"entryLines": 120,
|
|
3249
3249
|
"chunks": [
|
|
3250
3250
|
{
|
|
3251
3251
|
"id": "workspace-conventions-000",
|
|
3252
3252
|
"ordinal": 0,
|
|
3253
3253
|
"destination": "workspace-conventions/SKILL.md",
|
|
3254
|
-
"sha256": "
|
|
3255
|
-
"lines":
|
|
3254
|
+
"sha256": "0b8322a967e67a45f195860314357a7b974555b6f3d0b642fe910dc769bd7e23",
|
|
3255
|
+
"lines": 60,
|
|
3256
3256
|
"heading": "任务启动前 Skill 读取规则(强制)"
|
|
3257
3257
|
},
|
|
3258
3258
|
{
|
|
@@ -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=34b6dd5233aac8325da15be3dc3c6a866dbbe77fd93288d5b2ad194d646fcf08 -->
|
|
62
62
|
## 2. 表单引擎三层结构
|
|
63
63
|
|
|
64
64
|
### 模块级跨端视图
|
|
@@ -159,14 +159,20 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
159
159
|
|
|
160
160
|
- 边角风格先读取当前用户 `CornerStyle`:`round/square` 显式覆盖;空值或 `System` 继承租户 `sys_config.CornerStyle`,租户空值默认为圆角。不得把空个人值提前归一为 `round`,否则会阻断租户直角设置。
|
|
161
161
|
- 桌面经典布局使用 `NavigationLayout=Side/Top/TopSide`,个人空值或 `System` 继承租户,租户空值为侧边导航。`TopSide` 将一级放顶部,当前一级的二级及更深菜单复用原侧栏;单个子菜单仍留在侧栏,无可见子菜单时隐藏侧栏并释放内容宽度。侧栏仍支持收起及 `MenuChildExpandMode=System/Down/Right`。顶部导航复用当前权限路由、角标与外链,空间不足收纳到更多菜单;移动端仍采用底部导航。当前路由与一级归属由 `hybrid-navigation.js` 统一投影,禁止修改共享权限树。
|
|
162
|
-
- 顶部导航整行(含功能图标和账号姓名)使用主题运行时的 `--sidebar-*`
|
|
162
|
+
- 顶部导航整行(含功能图标和账号姓名)使用主题运行时的 `--sidebar-*` 可读表面与前景;主题面板和业务弹层保留自身语义表面。主题入口为齿轮,界面密度在同一主题面板调整,已安装 `sys_user.UiDensityScale` 时保存当前账号、个人空值继承 `sys_config.UiDensityScale`,旧租户才使用按租户/账号隔离的设备回退;AI 入口使用圆圈内 AI 字母 SVG,不能回退魔法棒或图片。
|
|
163
163
|
- 头像菜单【修改密码】使用标准 `DiyCustomDialog + MicroAppDialog` 打开现有平台服务 `/personal-settings`,仅传 `Data.Action=ChangePassword` 选择密码展示模式;不能用宿主输入决定目标账号/租户,不新建密码旁路。当前密码校验、Passkey/TOTP/严格人脸一次性票据与提交继续复用个人中心,成功或卸载清除密码输入。定向回归使用 `hybrid-navigation.spec.mjs`、`password-dialog.spec.mjs` 和个人偏好资源测试。
|
|
164
164
|
- 桌面壳层使用视口高度与可收缩的 flex 内容区,只有路由内容滚动,导航和 Tab 不随页面滚动;移动端仍保留文档滚动。用户入口含头像与姓名,不能使用纯图标的固定 flex 宽度;异步图表须在真实 DOM 挂载后观察尺寸变化,避免侧边/顶部导航切换后撑破卡片。
|
|
165
165
|
- 主题色、浅色/深色、菜单子级展开方式等需要“换设备仍生效”的选择必须保存到当前 DiyToken 用户的 `sys_user` 白名单字段;`localStorage` 只作为未安装新字段租户和匿名启动阶段的兼容回退,不能作为跨设备事实源。
|
|
166
166
|
- 已安装用户偏好字段时优先级固定为“当前用户显式值 → 租户 `sys_config` → 平台安全默认”;个人菜单值 `System` 表示继承租户配置。不得让上一位用户的浏览器本地主题覆盖下一位已登录用户。
|
|
167
|
+
- 主题面板的主题色、亮暗模式、边角、导航、菜单展开、密度、三个装饰开关及登录风格均有同名系统全局默认,不新建重复字段。`framework-appearance.js` 统一应用运行状态;渲染继承值不能写成个人选择。`UiDensityScale` 安全范围为 90~110、步长 5,覆盖表单标签/普通控件、系统设置表单、侧栏、表格、Tab 与 Teleport 弹层;富文本、代码、地图和子表保持内容高度,触屏最小目标仍为 44px。
|
|
168
|
+
- 【恢复默认】沿原保存队列把 `ThemeMode/ThemeColor` 清空、`CornerStyle/NavigationLayout/MenuChildExpandMode/LoginStyle` 写 `System`、`UiDensityScale/DisableGradient/DisableShadow/DisableButtonIcon` 写 `null`,只作用当前用户。同时清旧设备回退与本身份缓存;不能修改 `sys_config` 或把平台默认值写成个人覆盖。开关 `0` 与 `null` 语义不同:`0` 可覆盖全局 `1`,`null` 继承全局。
|
|
169
|
+
- `DisableGradient/DisableShadow/DisableButtonIcon` 同时支持个人与租户默认,根标识分别为 `data-mci-disable-gradient/shadow/button-icon`。去装饰仍保留输入边界、键盘焦点、加载指示与纯图标操作。登录样式 `LoginStyle=Original/Minimal/Split/Console` 复用一套业务 mixin 与表单,不复制验证码、SSO、强认证、协议及回跳逻辑;匿名读取当前租户默认或本匿名上下文明确预览,不能读取上一账号的个人值。
|
|
170
|
+
- `sys_config.HideFrameworkFunctions` 只控制顶栏入口,固定 Key 为 `Chat/BackgroundTasks/Search/Language/Theme/AI/Bluetooth/SystemStyle/FullScreen`,账号头像姓名始终保留。它与控制移动端等范围的原 AI 禁用开关独立,也不能代替功能权限。所有入口提供 `data-framework-function` 便于验收,未知 Key 忽略。
|
|
171
|
+
- 新增全局开关 CSS 必须检查编译后选择器;scoped 中 `:global(html[attr]) .child` 会丢失后代范围,禁止用它隐藏装饰。使用独立非 scoped 且有完整登录/框架作用域的样式,或将完整选择器放进 `:global(...)`;必须断言开启全部开关时根 html、body、框架与弹层仍可见。
|
|
167
172
|
- 自助保存优先使用官方 `Managed` 接口引擎,由 `V8.CurrentUser.Id` 与 `V8.OsClient` 推导用户和租户,并在服务端构造固定白名单更新对象;接口参数禁止决定目标 Id/OsClient,也禁止写入 Account、Phone、Tenant、Dept、Role、Level、State、Pwd、认证因子和登录审计字段。只有缺少可复用可信原子能力时才新增 C# DTO/端点。保存成功后调用 `V8.Method.RefreshLoginUser` 刷新登录缓存,并让微服务宿主重新同步 `CurrentUser`。
|
|
168
173
|
- 右上角即时切换可以乐观应用并短防抖保存;远端保存失败时保留当前设备效果并明确提示。个人中心和右上角必须调用同一个应用包交付的白名单接口引擎(当前为 `platform-user-update-preferences`),不能分别形成两套字段、枚举或优先级。
|
|
169
174
|
- 导航切入或退出 `TopSide` 会重建顶栏组件;卸载前必须发送尚未保存的偏好,在途请求与后续选择共用按 store、API 地址、租户、账号和登录会话隔离的运行时队列。新顶栏继承失败状态和重试数据,旧响应不能覆盖更新的选择或跨账号合并队列;标准续签保留 `MicroiSessionId` 时也保留最终待保存选择,计算属性显式依赖 Pinia.Token。JWT 解码仅用于本地队列归属,服务端仍通过标准 DiyToken 验证授权;不得将会话凭据写入偏好存储、日志或响应。使用真实 Vue computed 和组件生命周期回归 `theme-select-autosave-lifecycle.spec.mjs` 验证卸载、在途合并、失败重试、续签及账号/租户/会话切换。
|
|
175
|
+
- 主题回归同时执行 `framework-appearance.spec.mjs`、`ui-density-runtime.spec.mjs` 与 `theme-select-autosave-lifecycle.spec.mjs`;真实浏览器至少验证 4K 系统设置与左菜单在 90/110 两档的尺寸变化、全局/个人继承与恢复、全部顶栏隐藏后账号仍在,以及装饰关闭后的亮暗和焦点可见性。
|
|
170
176
|
|
|
171
177
|
---
|
|
172
178
|
|
|
@@ -20,6 +20,12 @@ description: Microi 安装、部署、升级和本地运行指南。用于吾码
|
|
|
20
20
|
- 文件/对象存储:`../v8-file-upload/SKILL.md`
|
|
21
21
|
- 数据库模型:`../microi-db-schema/SKILL.md`
|
|
22
22
|
|
|
23
|
+
## 发布测试范围
|
|
24
|
+
|
|
25
|
+
常规发布按用户指定 MCP 的实际 MySQL、MongoDB 版本、Redis 和生效 MinIO 或 OSS/HDFS 选择测试矩阵;SQL Server 真实服务与兼容专项仅在用户明确指定解决 SQL Server 问题时执行,不作为每轮发布的默认前置条件,也无需反复申请免测。本文中的“Full/重新 Full”均指当前选定矩阵,已选必测项仍须全部通过。
|
|
26
|
+
|
|
27
|
+
选择、旧脚本冲突处理及结果记录统一读取 [发布测试矩阵](../microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md#按指定-mcp-选择发布测试矩阵) 和 `../workspace-conventions/SKILL.md`;实际目标未使用的提供商不能被虚构为已验证。
|
|
28
|
+
|
|
23
29
|
## 先确认部署类型
|
|
24
30
|
|
|
25
31
|
### 吾码服务器运维面板 Microi.Panel
|
|
@@ -34,7 +34,7 @@ Markdown。第一列是相对 `microi.doc/docs/doc/` 的路径;第二列 Skill
|
|
|
34
34
|
| `more/office.md` | v8-export-import, microi-microservice | Office 导入导出与在线编辑集成 |
|
|
35
35
|
| `more/security.md` | v8-security | 平台安全和兼容基线 |
|
|
36
36
|
| `more/sso.md` | microi-sso, v8-security, app-store | 双向 OIDC/SAML2/CAS、账号映射、协议端点、安全基线、商城发布与验收 |
|
|
37
|
-
| `more/sys-config.md` | v8-utilities, microi-deployment |
|
|
37
|
+
| `more/sys-config.md` | v8-utilities, microi-deployment, microi-client-frontend | 系统/租户配置、全局主题与个人覆盖、框架显隐和敏感边界 |
|
|
38
38
|
| `system-engine/ai-engine.md` | ai-engine, v8-http-integration, microi-ai-application | 模型代理、License、V8.AI、MCP 对话、跨端调用和安全 |
|
|
39
39
|
| `system-engine/ai-cad.md` | ai-engine, v8-api-config, microi-ai-application, app-store | 吾码接口引擎到 SolidWorks 桌面插件的参数计划、模型回读、BOM 与图纸交付边界 |
|
|
40
40
|
| `system-engine/digital-human-live.md` | ai-engine, microi-microservice, app-store, playwright-e2e | 自建数字人直播、本机推理、话术知识、OBS 接入、4K 功能截图与实测边界 |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> 按需读取;本文件由 SKILL.md 的原章节无损拆分。
|
|
4
4
|
|
|
5
|
-
<!-- microi-progressive:chunk id=microi-system-delivery-006 sha256=
|
|
5
|
+
<!-- microi-progressive:chunk id=microi-system-delivery-006 sha256=3c429fa01c7c8b077ccb8bceca59ad0274f7b83e7989e2f21a861dd0e54f11aa -->
|
|
6
6
|
## 自动化测试必须覆盖的坑
|
|
7
7
|
|
|
8
8
|
### 后端统一测试与发布门禁
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
`MICROI_TEST_ALLOW_WRITES=YES`。只有用户明确授权时才可对真实租户执行;
|
|
25
25
|
真实租户默认只做登录和只读烟测,写入必须限定到名称/说明明确为自动化
|
|
26
26
|
测试用途的专用表,并使用唯一前缀、`finally` 清理和清理回读。
|
|
27
|
-
- Full 的本地程序与依赖按 `../../workspace-conventions/SKILL.md` 的“本地测试程序与依赖生命周期”执行:优先复用健康的本地源码程序、隔离目录中的编译产物和同组既有依赖,以租户、数据库或命名空间隔离测试,不按任务重复创建 Docker/Compose
|
|
27
|
+
- Full 的本地程序与依赖按 `../../workspace-conventions/SKILL.md` 的“本地测试程序与依赖生命周期”执行:优先复用健康的本地源码程序、隔离目录中的编译产物和同组既有依赖,以租户、数据库或命名空间隔离测试,不按任务重复创建 Docker/Compose。每次测试成功、失败、取消或因资源不足暂停时,都结束本次自有测试进程并收回新建临时容器,独立回读进程、端口和容器状态;既有共享服务保持原状。这些生命周期要求不减少当前选定 Full 矩阵的用例、断言或发布门禁。
|
|
28
28
|
- Full 至少覆盖完整 Release 构建、FormEngine 单条/批量/按条件 CRUD、
|
|
29
29
|
查询和计数、ApiEngine GET/JSON POST、API 实际启动与健康检查、真实登录、
|
|
30
30
|
匿名系统配置脱敏、清理回读、NuGet 漏洞/弃用审计。NuGet 全面升级后不能
|
|
@@ -41,6 +41,24 @@
|
|
|
41
41
|
Redis/MongoDB 短暂故障、响应前重启和新旧版本共存。
|
|
42
42
|
两节点默认是两个本机源码或编译产物程序进程连接同组依赖,不等于两套 Docker 环境;破坏性故障测试仅作用于明确归属的隔离资源,不能停止复用的共享数据库或缓存。
|
|
43
43
|
|
|
44
|
+
### 按指定 MCP 选择发布测试矩阵
|
|
45
|
+
|
|
46
|
+
测试范围以 `workspace-conventions/SKILL.md` 的“平台回归与独立应用测试归属”为准。常规发布先核实用户指定的 Profile、ApiBase、OsClient 和实际依赖,再冻结本次必测清单;不能从本机恰好存在的连接或历史 Full 清单推导额外兼容矩阵。
|
|
47
|
+
|
|
48
|
+
| 依赖 | 常规发布范围 | 验收依据 |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| MySQL | 指定 MCP 实际使用的服务与版本 | 隔离数据的 CRUD、事务、升级兼容及清理回读 |
|
|
51
|
+
| MongoDB | 指定 MCP 实际使用的版本 | 实际读写、索引及本次功能相关持久化;不默认同时要求旧版和新版 |
|
|
52
|
+
| Redis | 指定 MCP 对应的实例与隔离命名空间 | 会话、缓存、TTL、锁或任务等本次链路,以及清理回读 |
|
|
53
|
+
| MinIO 或 OSS/HDFS | 该租户当前生效的提供商 | 实际上传、下载字节/哈希、公开/私有访问权限与自有测试对象清理;路由单测不能代替真实文件闭环 |
|
|
54
|
+
| SQL Server | 仅用户明确指定排查、修复或验收 SQL Server 问题时加入 | 对应版本、隔离连接与问题回归;常规发布标“不适用(未执行)” |
|
|
55
|
+
|
|
56
|
+
- 通用编译、离线单元/组件、安全、登录、业务闭环和候选源码/产物哈希校验仍按变更范围执行;指定依赖测试不能替代这些质量要求。
|
|
57
|
+
- 只有所选矩阵中的必测项才参与环境完整性与零失败、零跳过门禁。没有选择的 SQL Server 专项不属于失败、待办或需要再次申请的免测;不得报告为已通过。其他提供商或跨版本矩阵也只按明确的专项需求扩展。
|
|
58
|
+
- 混合 MySQL/SQL Server 用例必须按提供商独立选择夹具与断言;不能要求两种连接同时存在才运行 MySQL,也不能按整类排除而漏掉仍必测的 MySQL 行。
|
|
59
|
+
- 旧脚本若仍硬编码 SQL Server 必填、MongoDB 多版本齐备或全提供商清单,先按本规则适配矩阵选择和结果统计,再使用正式发布入口。禁止每轮要求用户重新批准 SQL Server 免测、只删除必填变量、吞掉 skipped/失败或绕过一键发布门禁。
|
|
60
|
+
- 记录目标 MCP、所选依赖/版本、用例数量、实际结果、不适用边界、候选哈希及资源回收证据;已选必测环境不可用时仍如实停止。生产故障注入或新增 Docker 依赖继续需要对应授权。
|
|
61
|
+
|
|
44
62
|
### 登录与账号密码
|
|
45
63
|
|
|
46
64
|
- E2E 必须支持提前录入测试账号密码:`PW_TEST_ACCOUNT`、`PW_TEST_PASSWORD`、`PW_LOGIN_ENGINE`。
|
|
@@ -26,9 +26,13 @@ UniApp/H5/小程序必须通过项目统一 `microi.v8.js` 的 `V8.uploadFile` /
|
|
|
26
26
|
创建、重构或修复任何 Microi 移动端项目前,必须同时应用 `microi.skills/microi-mobile-app-quality/SKILL.md`,并读取其[首版交付与外部服务验收](../microi-mobile-app-quality/references/mobile-first-delivery.md)。手机号快捷登录、会话续签、导航几何、真实地图、页面动效和公开发布回读从首版纳入需求与测试,不能先交静态占位版,再等待用户逐页指出问题。涉及后台与第三方服务时按实际业务范围执行,既有授权和租户策略优先。
|
|
27
27
|
|
|
28
28
|
<!-- /microi-progressive:chunk -->
|
|
29
|
-
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=
|
|
29
|
+
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=acfd8dd91195e7930896bd54e6ae7ce3d3982bdeb0d674d98337878eab1a5e82 -->
|
|
30
30
|
## 标准产品、视图协议与租户扩展
|
|
31
31
|
|
|
32
|
+
地图提供行政区与附近距离两类筛选时,应复用省市区字典,并允许省、市、区逐级选“全部”;省级“全部”须显式启用,不能改变普通地址录入的默认值。行政区域查询不依赖手机定位、不叠加附近半径,空地区仍可保留既有附近模式。范围筛选必须在原有菜单/租户/行权限内执行,分批读取并丢弃迟到响应;来源列表存在同表不同菜单时,地图入口与查询应保留准确的来源菜单和固定业务条件。验收覆盖全国、全省、全市、区县、直辖市、定位拒绝、旧接口兼容和快速切换。
|
|
33
|
+
|
|
34
|
+
历史经纬度列可能是 `varchar`,距离范围边界必须以 JSON 数值传输并绑定数值参数;`toFixed()` 返回字符串,须显式转回 `Number`。回归必须覆盖经度边界跨两位/三位数、纬度跨零及扩大半径后结果不减少,并用真实数据库只读比较文本参数与数值参数,不能只用数字坐标夹具验证前端距离函数。
|
|
35
|
+
|
|
32
36
|
动态表单的组织/树字段优先复用原生 `mci-native-field` 树形下拉与 `native-tree-options.mjs`,无需为小程序把后台 `Department` 改为普通 Select。读取 `Config.<Component>.Multiple/EmitPath`:组织单选叶值保存 Id,多选叶值保存 Id 数组,路径模式保存完整路径/路径数组,数组统一 JSON 序列化。支持祖先展开、搜索、清空、禁用、重试和只读回显;数据源旧模板不能代替当前授权组织树。业务字段联动放租户扩展,不执行任意前端 V8;验收覆盖保存格式、旧数据回显、失败/迟到响应及最近公司祖先联动。
|
|
33
37
|
|
|
34
38
|
Microi 标准小程序必须采用“平台内核 + 版本化元数据 + Profile + 租户插件”架构,不能把某个交付项目直接写死成平台产品:
|
|
@@ -17,6 +17,16 @@ description: Microi 模块引擎与 sys_menu 配置指南。用于创建或修
|
|
|
17
17
|
代码字段是否显示按钮由各字段 `Config.CodeEditor.DisplayMode` 决定,禁止按 `sys_menu` 表名强制覆盖;
|
|
18
18
|
未配置时默认 `Inline`,需要紧凑按钮的字段显式保存 `Dialog`。
|
|
19
19
|
|
|
20
|
+
列表【更多功能】使用与【更多搜索】一致的次级按钮样式。模块物理字段
|
|
21
|
+
`sys_menu.HideMoreFunctions` 对应【隐藏更多功能】,只有明确 `1/true` 隐藏当前模块入口,
|
|
22
|
+
缺失/空/0 保持显示;嵌入页 `PropsHideMoreFunctions=true` 同样可隐藏当前实例。
|
|
23
|
+
通过 `microi_update_module` 的 module 对象维护同名字段,写后回读并发布模块引擎官方应用,
|
|
24
|
+
不得把新配置写入废弃 `DiyConfig`。开关不删除 MoreBtns/PageBtns/FormBtns,也不能替代后端权限。
|
|
25
|
+
|
|
26
|
+
多选搜索必须显示可读的选项 Label;折叠时至少保留首个标签,其余可用数量和浮层呈现。
|
|
27
|
+
不得仅因 DOM 有文字就判定回显成功,需验证窄搜索槽位中的真实宽度、90~110 密度、选项
|
|
28
|
+
Key/Label 映射、清除与查询条件一致;不能为修复显示改动实际查询 Key 或业务数据源。
|
|
29
|
+
|
|
20
30
|
## 必读参考
|
|
21
31
|
|
|
22
32
|
- 字段、打开方式、查询配置、ViewSchema 和接口替换:
|
|
@@ -15,6 +15,8 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
|
|
|
15
15
|
|
|
16
16
|
`E2E` 是 `End-to-End`,中文通常叫"端到端测试"。它强调从用户入口开始,穿过前端页面、接口引擎、表单引擎、权限、缓存、数据库等真实链路,验证一条业务路径是否真的可交付。
|
|
17
17
|
|
|
18
|
+
真实依赖与发布范围沿用 `../workspace-conventions/SKILL.md` 的“平台回归与独立应用测试归属”:常规验证指定 MCP 实际使用的 MySQL、MongoDB、Redis 和 MinIO 或 OSS/HDFS,不要求额外 SQL Server 环境;仅用户明确指定 SQL Server 问题时才做其专项。按 [发布测试矩阵](../microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md#按指定-mcp-选择发布测试矩阵) 记录实际覆盖,保留正常登录、业务闭环与资源收尾,不以连接成功代替真实读写验收。
|
|
19
|
+
|
|
18
20
|
<!-- microi-progressive:begin -->
|
|
19
21
|
<!-- microi-progressive:chunk id=playwright-e2e-000 sha256=a6ef528a2a940fd0f58efaee6b73eb5dbc159db93d95afedf41c7b8642536d18 -->
|
|
20
22
|
## 是否需要 `-e2e` 后缀
|
|
@@ -14,7 +14,7 @@ description: 每次 Microi 任务开始前必读的基础规范。用于识别
|
|
|
14
14
|
工作区保护始终有效:保留他人差异与共享进程,临时产物只放根 `.tmp/`,闭源源码只从独立内部仓提交。修改/提交前读取 [共享工作区与 Git 保障](references/progressive-04-工作区与平台专项保障.md#多对话共享工作区变更归属保护强制);启动构建、测试服务或浏览器前读取同文件资源/OOM规则并检查现有资源。后端/任务/权限变更读取分布式与安全章节;平台源码定位、文档和 Skills 修改读取对应章节。平台能力四项检查仍固定保留在本入口。
|
|
15
15
|
|
|
16
16
|
<!-- microi-progressive:begin -->
|
|
17
|
-
<!-- microi-progressive:chunk id=workspace-conventions-000 sha256=
|
|
17
|
+
<!-- microi-progressive:chunk id=workspace-conventions-000 sha256=0b8322a967e67a45f195860314357a7b974555b6f3d0b642fe910dc769bd7e23 -->
|
|
18
18
|
## 任务启动前 Skill 读取规则(强制)
|
|
19
19
|
|
|
20
20
|
AI 处理任何 Microi 低代码、V8、MCP、OpenClaw、采集引擎、前端、后端、UniApp、文档、测试或交付任务前,必须先按任务类型读取相关 `microi.skills/**/SKILL.md`。不能等到写代码或出问题后才补读。
|
|
@@ -57,8 +57,10 @@ AI 处理任何 Microi 低代码、V8、MCP、OpenClaw、采集引擎、前端
|
|
|
57
57
|
- 创始人源码工作区中的每个平台功能新增、缺陷修复和兼容性调整都必须同时交付可重复执行的回归测试;先证明旧行为失败,再验证修复成功,覆盖正常、边界、失败、安全与存量兼容路径。不得只改源码或用手工截图代替自动回归。
|
|
58
58
|
- 平台 C# 单元/组件/集成测试归入 `Microi.Server/Microi.Tests`。平台前端、平台内置应用包与平台 V8 的 Node 行为测试可留在责任源码旁,由 `Microi.Tests/run-tests.ps1` 自动发现执行;平台真实浏览器、数据库及第三方集成归入 Full 或平台专项验收,不得冒充离线单测。新增公共后端能力同时补相应 HTTP 闭环。
|
|
59
59
|
- 官方或社区独立业务应用、游戏及客户项目的测试归应用自身源码根的 `tests/` 或独立测试工程,由该应用自己的测试和发布入口执行;不得放入 `Microi.Tests`、创建转调包装或接入平台 Quick/Full。官方发布身份不改变测试归属。应用开发中涉及平台通用缺陷时,仅把通用最小回归夹具加入平台门禁,应用业务断言仍在应用项目维护。
|
|
60
|
-
- `Microi一键编译发布.sh` 的所有 PC/API
|
|
60
|
+
- `Microi一键编译发布.sh` 的所有 PC/API 镜像路径(包括仅推送、热修复)都必须先通过按指定 MCP 实际依赖选定的 Full 发布矩阵;选中范围内缺少环境、零用例、失败、取消、跳过、待办或无法解析测试结果一律停止。未纳入本次矩阵的提供商标为“不适用(未执行)”,不冒充通过,也不单独阻塞常规发布。禁止关闭断言、删测试、排除已选失败项目或修改门禁阈值来发布。
|
|
61
61
|
- 测试成功必须绑定本次候选源码和实际构建上下文的内容哈希,构建后、每次推送前复核。旧产物没有可验证回执或源码/产物漂移时必须重建重测,禁止“当前源码通过测试 + 推送另一份旧 DLL/前端 dist”。 所有测试默认使用当前 MCP 经同源只读发现的 MongoDB 实际版本与当前租户实际生效的 HDFS 提供商;目标唯一时直接沿已授权隔离范围执行,不为旧 MongoDB 或其它 OSS/MinIO/S3 反复询问、新建服务或替换当前提供商。只有明确的兼容、迁移或提供商缺陷任务才扩展真实矩阵;未执行项如实记未覆盖,不以同一端点冒充多版本,也不因环境发现获得生产业务写入授权。
|
|
62
|
+
- 常规发布只验证用户指定 MCP 对应的实际依赖:MySQL、MongoDB 实际版本、Redis,以及租户实际生效的 MinIO 或 OSS/HDFS 等存储;不默认同时验证所有数据库版本或所有存储提供商。先核实 Profile、ApiBase、OsClient 和依赖类型,在已授权隔离范围执行;依赖发现不扩大生产写入或新建 Docker 测试依赖的授权。
|
|
63
|
+
- SQL Server 的真实连接、提供商兼容与专项验收默认不纳入常规发布矩阵;只有用户明确指定排查、修复或验收 SQL Server 问题时才执行。检测到 SQL Server 连接/驱动、旧 Full 清单或通用数据库代码变更都不能自行触发该专项,也不需要每次申请 SQL Server 免测。既有不连接 SQL Server 的离线单元断言照常保留,但不能据此声称 SQL Server 已实测。
|
|
62
64
|
- 交付记录逐项列明修复与测试映射、执行数量、未覆盖边界和镜像摘要。覆盖率与 Full 都不能证明所有租户业务、任意生产数据和第三方系统绝对无误;真实客户路径仍需只读验收。详细矩阵见 `microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md`。
|
|
63
65
|
|
|
64
66
|
### Microi吾码非阻塞自动更新(强制)
|