@microi.net/cli 5.6.0 → 5.6.2
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/.mcp.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/README.md +71 -71
- package/assets/build-meta.json +7 -7
- package/assets/feature-matrix.json +129 -129
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/codex-marketplace.json +20 -20
- package/scripts/mcp-codex-stdio-adapter.js +189 -189
- package/scripts/mcp-server.js +99 -99
- package/scripts/mcp-trae-windows-launcher.cmd +21 -21
- package/scripts/microi-cli-mcp.js +7 -7
- package/scripts/microi-cli.js +39 -36
- package/scripts/microi-codex-broker.js +447 -447
- package/scripts/microi-codex-router.js +582 -582
- package/scripts/microi-skills.meta.json +226 -223
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +37 -37
- package/skills/README.md +1 -1
- package/skills/app-store/SKILL.md +199 -182
- package/skills/dos-orm/SKILL.md +96 -81
- package/skills/message-notification/SKILL.md +153 -126
- package/skills/microi-client-frontend/SKILL.md +11 -5
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/skills/microi-codex/SKILL.md +48 -46
- package/skills/microi-docs-coverage/SKILL.md +133 -123
- package/skills/microi-docs-coverage/references/capability-map.md +2 -2
- package/skills/microi-form-engine/SKILL.md +77 -53
- package/skills/microi-microservice/SKILL.md +17 -16
- package/skills/microi-sso/SKILL.md +91 -85
- package/skills/microi-system-delivery/SKILL.md +5 -4
- 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 +27 -22
- package/skills/microi.v8.js +1 -1
- package/skills/module-engine/SKILL.md +17 -1
- package/skills/print-engine/SKILL.md +47 -39
- package/skills/scripts/sync-embedded-skills.mjs +46 -0
- package/skills/scripts/validate-progressive-disclosure.mjs +57 -52
- package/skills/system-observability/SKILL.md +16 -4
- package/skills/v8-api-config/SKILL.md +382 -378
- package/skills/v8-file-upload/SKILL.md +157 -154
- 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 +133 -133
- package/skills/v8-formengine-http/SKILL.md +19 -1
- package/skills/v8-security/SKILL.md +25 -25
- package/skills/v8-sql-query/SKILL.md +130 -128
- package/skills/v8-table-event/SKILL.md +29 -22
- 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 +19 -19
- package/skills/v8-workflow/SKILL.md +54 -45
- package/skills/workspace-conventions/SKILL.md +259 -236
- 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 +208 -208
|
@@ -1,46 +1,48 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: microi-codex
|
|
3
|
-
description: 在 Codex 或 DeepSeek Harness 中完成 Microi吾码 VS Code 扩展的等价工作流,包括连接与登录、AI/MCP 初始化、V8/表单/模块/工作流同步、远程执行与诊断、性能测试、微应用、Playwright 和发布回读。用户提到吾码、Microi、V8引擎、Microi-V8-Engine 或要求使用吾码 AI 插件时使用。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Microi吾码 Codex / DeepSeek Harness Plugin
|
|
7
|
-
|
|
8
|
-
本插件与 `Microi.VSCode`、`@microi.net/cli` 共用配置、Token、MCP Server 和 Microi Skills。不要另写原生 HTTP、SQL 或第二套认证实现。
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
---
|
|
2
|
+
name: microi-codex
|
|
3
|
+
description: 在 Codex 或 DeepSeek Harness 中完成 Microi吾码 VS Code 扩展的等价工作流,包括连接与登录、AI/MCP 初始化、V8/表单/模块/工作流同步、远程执行与诊断、性能测试、微应用、Playwright 和发布回读。用户提到吾码、Microi、V8引擎、Microi-V8-Engine 或要求使用吾码 AI 插件时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Microi吾码 Codex / DeepSeek Harness Plugin
|
|
7
|
+
|
|
8
|
+
本插件与 `Microi.VSCode`、`@microi.net/cli` 共用配置、Token、MCP Server 和 Microi Skills。不要另写原生 HTTP、SQL 或第二套认证实现。
|
|
9
|
+
|
|
10
|
+
每次 Microi 对话先完整读取工作区 `microi.skills/workspace-conventions/SKILL.md`;工作区尚未初始化时读取本插件同级 `../workspace-conventions/SKILL.md`。按其中首部完成创始人身份识别及平台功能四项同步检查,再进入专项流程;完整规则只维护该基础入口,不复制到本路由。
|
|
11
|
+
|
|
12
|
+
## 非阻塞自动更新(强制)
|
|
13
|
+
|
|
14
|
+
Codex Router 启动后会异步调用 bundled CLI 的 `microi update --background`。需要了解完整安装/诊断机制时读取同级 `microi-codex-installer/SKILL.md`;更新检查不得发生在用户工作之前,也不得让任务等待。
|
|
15
|
+
|
|
16
|
+
自动更新会从 npm 官方 registry 升级 CLI,更新 Codex/DeepSeek Harness 插件并重新初始化工作区 AI/MCP。当前 Router、DSH 会话和已经启动的 MCP 继续使用旧版本,不被杀死或强制重载;新版供后续新进程使用。自动更新失败、被占用或用户暂不重载时,只记录/提示并继续当前、正在进行和新建任务;不得要求升级授权,也不得把版本状态当作业务门禁。
|
|
17
|
+
|
|
18
|
+
## 先确认工作区连接
|
|
19
|
+
|
|
20
|
+
1. 调用 `microi_codex`,传 `{ "action": "profiles" }`。
|
|
21
|
+
2. 只有一个已登录连接时,后续可以省略 `profile`;存在多个连接时,始终传 `profiles` 返回的稳定 `name`。
|
|
22
|
+
3. 尚未初始化时,插件根目录是本文件向上两级;使用其中的 `scripts/microi-cli.js`:
|
|
23
|
+
- `node <plugin-root>/scripts/microi-cli.js init --workspace <workspace>`
|
|
24
|
+
- 多连接:`profile list|add|remove`
|
|
25
|
+
- 登录:`auth login|status|logout --profile <name>`
|
|
26
|
+
- 诊断:`doctor --json`
|
|
27
|
+
4. 登录会在真实终端中隐式输入密码;不要把密码写入命令、日志、Skill、MCP 参数或工作区文件。Token 继续写入 `Microi-V8-Engine/.microi-mcp-tokens.json`,并按 API、OsClient、Type、Network 四段身份隔离。
|
|
28
|
+
|
|
29
|
+
## 功能路由
|
|
30
|
+
|
|
31
|
+
- 连接、登录、拉取、推送、差异和 AI 初始化:使用 bundled CLI 的 `profile`、`auth`、`pull`、`push`、`sync status`、`ai init`、`mcp init`、`doctor`。
|
|
32
|
+
- 接口引擎、表单事件、模块、字段、工作流和数据库结构:先用 `action="list_tools"` / `describe_tool`,再调用对应原始 `microi_*` 工具。写工具必须保留确认口令、审计与回读。
|
|
33
|
+
- 远程执行与调试:读取 `v8-debugging/SKILL.md`。Codex 用“获取源码 → 远程执行 → 定位堆栈/日志 → 最小补丁 → 再执行”的结构化循环代替 VS Code DAP 的可视化逐行面板;不得把未执行的源码检查称为真机调试成功。
|
|
34
|
+
- 性能测试:读取 `performance-testing/SKILL.md`,限制并发并输出样本、P95/P99、错误率和停止条件。
|
|
35
|
+
- 系统日志、内存吃满、OOM 与接口/V8 异常分配:读取 `system-observability/SKILL.md` 及其内存事故手册,使用专用 MCP 的 `Capabilities` → `Memory` → 事故历史/详情 → `Trace`,先查采集质量再归因。
|
|
36
|
+
- 微应用:读取 `microi-microservice/SKILL.md`,使用 scaffold、source sync、stream publish 和发布回读原工具;本地构建前遵守内存保护。
|
|
37
|
+
- Playwright:读取 `playwright-e2e/SKILL.md`,使用当前已登录浏览器或受控 Playwright;报告必须来自实际页面执行。
|
|
38
|
+
- 其他领域:从本插件同级 Skills 里选择最小相关 Skill,并完整读取后执行。
|
|
39
|
+
|
|
40
|
+
## 同步与安全边界
|
|
41
|
+
|
|
42
|
+
- `Microi-V8-Engine/.microi-config.json` 是三端连接配置事实源;未知字段必须保留。
|
|
43
|
+
- CLI、VS Code、Codex 与 DeepSeek Harness 插件可以在同一工作区并存;各端必须复用同一配置/Token/MCP 协议,带版本写入实行较新 provider 优先,禁止旧入口回写降级。`doctor.coexistence` 未通过时准确报告兼容风险并后台修复,但不得因此停止无关工作。
|
|
44
|
+
- 推送前先做远端差异检查。写请求超时只表示结果不确定,使用对应 get 工具短超时回读,禁止盲目重复创建或覆盖。
|
|
45
|
+
- 配置和 Token 文件使用现有原子写与锁协议;不要手工拼接或清空用户已有 MCP 配置。
|
|
46
|
+
- Codex Plugin 路由器只选择连接,业务行为必须继续走原 MCP bundle。
|
|
47
|
+
|
|
48
|
+
完整 VS Code 命令覆盖关系见插件根目录 `assets/feature-matrix.json`。
|
|
@@ -1,123 +1,133 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: microi-docs-coverage
|
|
3
|
-
description: Microi 中文官网文档与 Skills 能力覆盖审计。用于全面分析 microi.doc/docs/doc 与 docs/case、核对官方能力和 V8 函数是否已进入 microi.skills、补充或重构 Skills、维护文档到 Skill 的责任映射,以及防止后续新增中文文档造成 AI 知识漏项。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
|
-
|
|
8
|
-
# Microi 中文官网文档与 Skills 覆盖审计
|
|
9
|
-
|
|
10
|
-
当任务涉及“官网有但 AI 不知道”“全面同步官方文档到 Skills”“核对所有
|
|
11
|
-
V8 函数”或新增、调整官方中文文档时,使用本 Skill。
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- `
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- Skill
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
1
|
+
---
|
|
2
|
+
name: microi-docs-coverage
|
|
3
|
+
description: Microi 中文官网文档与 Skills 能力覆盖审计。用于全面分析 microi.doc/docs/doc 与 docs/case、核对官方能力和 V8 函数是否已进入 microi.skills、补充或重构 Skills、维护文档到 Skill 的责任映射,以及防止后续新增中文文档造成 AI 知识漏项。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
|
+
|
|
8
|
+
# Microi 中文官网文档与 Skills 覆盖审计
|
|
9
|
+
|
|
10
|
+
当任务涉及“官网有但 AI 不知道”“全面同步官方文档到 Skills”“核对所有
|
|
11
|
+
V8 函数”或新增、调整官方中文文档时,使用本 Skill。
|
|
12
|
+
|
|
13
|
+
创始人源码工作区中的平台功能还必须执行 [工作区基础规范](../workspace-conventions/SKILL.md)
|
|
14
|
+
的“平台功能四项同步检查”:本 Skill 负责文档与 AI 知识覆盖,不能替代官方应用包发布
|
|
15
|
+
或 MCP 能力验收。既有页面、Skill 或 MCP 已完整覆盖时记录依据,不重复创建同义内容。
|
|
16
|
+
|
|
17
|
+
## 范围与事实源
|
|
18
|
+
|
|
19
|
+
- 能力映射扫描 `microi.doc/docs/doc/**/*.md`,但排除受发版规则保护的
|
|
20
|
+
`microi.doc/docs/doc/about/update-log.md`;视觉与可读性审计还必须包含
|
|
21
|
+
`microi.doc/docs/case/**/*.md`。
|
|
22
|
+
- `index.md`、`apps.md`、`app-detail.md`、`profile.md`、`login.md` 与
|
|
23
|
+
`contact/index.md` 是由专用 Vue 组件承载的站点交互页,必须单独登记并按各自
|
|
24
|
+
页面契约验收,不能静默漏扫,也不能机械套用正文档排版。
|
|
25
|
+
- 不扫描、不手工维护 `microi.doc/docs/en/`;英文站由中文站统一翻译。
|
|
26
|
+
- `references/capability-map.md` 维护每篇中文文档的责任 Skill。
|
|
27
|
+
- 文档描述能力边界,当前源码、接口定义、组件清单和 MCP Schema 决定真实签名。
|
|
28
|
+
- 不把客户表名、业务字段、扩展数据库名称或示例返回字段误判为平台 API。
|
|
29
|
+
|
|
30
|
+
## 审计流程
|
|
31
|
+
|
|
32
|
+
1. 运行自动审计:
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
node microi.skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2. 先解决“未映射文档”和“无效责任 Skill”。每篇中文文档都必须在能力映射中
|
|
39
|
+
有明确负责人;宣传、培训、FAQ 等非 API 页面也要标明信息型覆盖。
|
|
40
|
+
3. 查看“未覆盖 V8 API、其它具名 API、MCP 工具”。逐项回到中文文档和
|
|
41
|
+
当前源码确认:
|
|
42
|
+
- 真实平台 API:补到对应 Skill 或 `v8-utilities` 索引。
|
|
43
|
+
- 业务数据路径:归一为 `V8.Form`、`V8.Param` 等上下文对象。
|
|
44
|
+
- 动态扩展名:归一为 `V8.Dbs`,不要固化客户数据库名称。
|
|
45
|
+
- 文档旧名或错误:以源码为准,说明兼容边界;不要为让审计通过而虚构 API。
|
|
46
|
+
4. 把高频决策和最小安全示例写进 `SKILL.md`;完整方法表、平台差异、硬件/
|
|
47
|
+
部署验收写进 `references/`,保持渐进披露。
|
|
48
|
+
5. 更新 `references/capability-map.md`,重新运行审计,直到严格检查通过。
|
|
49
|
+
6. 对每个新增或改动的 Skill 运行 `skill-creator` 的 `quick_validate.py`,
|
|
50
|
+
再执行 `git diff --check` 和相对链接检查。
|
|
51
|
+
7. 修改已注册的后端内嵌知识时,运行
|
|
52
|
+
`node microi.skills/scripts/sync-embedded-skills.mjs <skill-name...>`,再带 `--check`
|
|
53
|
+
回读一致性;它只更新已在 `Microi.AI.csproj` 注册的快照,正文仍来自 canonical Skills。
|
|
54
|
+
修改渐进内容后先显式刷新本次 Skill 的校验清单,再按名称验证;全库检查发现历史漂移时
|
|
55
|
+
单独记录,禁止修改无关 Skill 的哈希来掩盖漏项。插件/CLI 使用现有构建器同步分发副本,
|
|
56
|
+
打包成功不等于已发布到用户安装渠道。
|
|
57
|
+
|
|
58
|
+
## 中文文档视觉与可读性契约(强制)
|
|
59
|
+
|
|
60
|
+
文档正确但密密麻麻仍属于未完成。修改 `microi.doc/docs/doc/**/*.md` 或
|
|
61
|
+
`microi.doc/docs/case/**/*.md` 时同时遵守:
|
|
62
|
+
|
|
63
|
+
- 正文使用清晰的 H1/H2/H3 层级和 80–90 字符左右的阅读宽度;连续长段落拆为短段、列表、对比表、步骤、流程或有语义的卡片。不要为了“丰富”把每句话都做成卡片。
|
|
64
|
+
- 首屏先回答“这是什么、有什么价值、怎么选择”,再展开原理和完整参数;长篇高级细节可使用可访问的 `details/summary` 渐进披露。
|
|
65
|
+
- 三个以上可比较能力优先使用表格或网格卡片;三步以上的依赖流程优先使用流程图/步骤带。图标必须帮助辨识,不能只作装饰噪声。
|
|
66
|
+
- 颜色至少区分主能力、成功、警告、风险,但正文对比度必须满足易读要求;不能只靠颜色表达状态。亮色、暗色、窄屏和 `prefers-reduced-motion` 都要有样式。
|
|
67
|
+
- 真实案例截图进入 `docs/public/images/...`,使用稳定英文文件名、有效 `alt` 和简短图注;图片不得代替关键文字说明,移动端不得横向撑破页面。
|
|
68
|
+
- 整站共同规则优先落在 VitePress 主题层 `mci-site.scss` / `doc-readable.scss`,页面独有展示放独立 SCSS;禁止为几十篇 Markdown 机械复制内联 `<style>`。
|
|
69
|
+
- 新页面可复用 `.mci-doc-grid`、`.mci-doc-card`、`.mci-doc-chip`;产品页需要独立视觉时使用页面 marker + `body:has(...)` 限定作用域,不能污染登录页、首页或英文生成页。
|
|
70
|
+
- 改动后运行 `npm run check:readability` 与 `npm run check:content`,再在真实浏览器至少检查一个桌面宽度和一个移动宽度,覆盖亮/暗主题、代码块、表格、图片、侧栏与锚点。
|
|
71
|
+
- `microi.doc/docs/en/` 由脚本生成,不手工同步样式化内容;日常文档工作继续禁止修改 `about/update-log.md`。
|
|
72
|
+
|
|
73
|
+
自动可读性检查只能阻止缺少 H1、超长连续文字块或整站主题契约丢失,不能证明页面真正好看。最终仍要查看渲染结果,不能用构建成功替代视觉验收。
|
|
74
|
+
|
|
75
|
+
全站任务必须进一步执行以下闭环,禁止把“扫描到若干 `/doc` 文件”等同于
|
|
76
|
+
“全部中文阅读页已完善”:
|
|
77
|
+
|
|
78
|
+
1. 在 `docs/.vitepress/theme/doc-visual-profiles.js` 为每个 `/doc` 与 `/case` 中文阅读页明确选择 `overview`、`guide`、`reference`、`policy` 或 `showcase`。新增、删除、移动文档时,页面清单与视觉档案必须同步闭环;专用站点交互页需显式登记为独立范围,英文路由不得进入该表。
|
|
79
|
+
2. 运行 `npm run audit:visual` 查看逐页报告。强制检查应覆盖唯一 H1、首屏引导、章节密度、连续正文、页面类型对应的表格/列表/代码/图片/提示/自定义布局、图片 `alt` 和主题契约;交付前应达到 0 条阻断和 0 条密度建议。
|
|
80
|
+
3. 中文样式若用 `html:lang(zh) { ... }` 包裹,根暗色选择器必须写成 `&.dark`,使 Sass 编译为 `html:lang(zh).dark`;写 `.dark` 会错误编译为后代选择器并导致暗色覆盖失效。所有自定义浅/暗背景都必须与前景、次要文字、边框成对切换,并用测试验证正文至少达到 WCAG AA 4.5:1。
|
|
81
|
+
4. 在浏览器遍历全部中文阅读路由(包括 `/doc` 与 `/case`),检查页面类型类、唯一 H1、页面级横向溢出和明显低对比文字;再从五种视觉类型各选代表页,覆盖桌面/移动与亮色/暗色截图。专用站点交互页按自身组件测试与代表截图验收。只有已登记范围全部通过,才可描述为“全站视觉验收完成”。
|
|
82
|
+
5. 静态脚本、Sass 编译、单元测试、VitePress 构建和浏览器截图是不同证据层。任何一层因资源保护或环境问题跳过,最终必须明确写出,不能用其它层替代。
|
|
83
|
+
|
|
84
|
+
## 自动审计能证明什么
|
|
85
|
+
|
|
86
|
+
脚本验证:
|
|
87
|
+
|
|
88
|
+
- 中文文档清单与责任映射闭环;
|
|
89
|
+
- 映射中没有已删除文档或不存在的 Skill;
|
|
90
|
+
- 文档出现的标准化 `V8.*` 名称至少在某个 Skill Markdown 中出现;
|
|
91
|
+
- 文档出现的 `System`、`DiyCommon`、`SqlFunc`、`SqlSubQuery`、
|
|
92
|
+
`V8ExtensionRegistry` 具名 API 至少在某个 Skill 中出现;
|
|
93
|
+
- 文档出现的 `microi_*` MCP 工具名至少在某个 Skill 中出现;
|
|
94
|
+
- 文档出现的平台 HTTP 路由和平台全局函数至少在某个 Skill 中出现;
|
|
95
|
+
- 当前前端组件清单中的全部 `Control` 已进入表单组件参考;
|
|
96
|
+
- `v8-print.js`、`ble/tsc.js`、`ble/esc.js` 的公开蓝牙入口和全部构建器方法,
|
|
97
|
+
已同时进入中文官方文档、蓝牙 Skills 与前端 Monaco API 提示;
|
|
98
|
+
- `diy.common.js`、`diy-form.vue`、`diy-table.vue` 仍真实调用
|
|
99
|
+
`initV8Print`,且三处挂载范围已写入官方文档与 Skill;
|
|
100
|
+
- 动态业务路径被单独列出,便于人工复核。
|
|
101
|
+
|
|
102
|
+
脚本不能证明:
|
|
103
|
+
|
|
104
|
+
- Skill 的语义、示例、安全约束一定正确;
|
|
105
|
+
- 文档本身没有过时;
|
|
106
|
+
- 浏览器、蓝牙设备、打印机、数据库或多节点部署已经实测。
|
|
107
|
+
|
|
108
|
+
因此每轮全面同步还要做源码核对和按风险分层的真实验收,不能只追求字符串
|
|
109
|
+
覆盖率。
|
|
110
|
+
|
|
111
|
+
## 补充内容的归属
|
|
112
|
+
|
|
113
|
+
- 前端通用 API、扫码、消息、表格/表单助手:`v8-utilities`、
|
|
114
|
+
`v8-frontend-events`。
|
|
115
|
+
- 蓝牙直连运行、连接与批量语义:
|
|
116
|
+
`v8-frontend-events/references/bluetooth-print.md`;TSC/ESC 源码方法与编码:
|
|
117
|
+
`v8-frontend-events/references/bluetooth-print-api.md`;服务端模板打印仍归
|
|
118
|
+
`print-engine`。
|
|
119
|
+
- 后端通用上下文、Method、Base64、加密:`v8-utilities`。
|
|
120
|
+
- 表单设计器和字段组件:`microi-form-engine`。
|
|
121
|
+
- 菜单、模块与页面入口:`module-engine`。
|
|
122
|
+
- 部署、运行、配置和升级:`microi-deployment`。
|
|
123
|
+
- Dos.ORM 与扩展数据库:`dos-orm`。
|
|
124
|
+
- 微服务/前端微应用:`microi-microservice`。
|
|
125
|
+
- 其它专项能力优先补到已有同名 Engine/V8 Skill,避免再建内容重叠的 Skill。
|
|
126
|
+
|
|
127
|
+
## 禁止事项
|
|
128
|
+
|
|
129
|
+
- 不复制整篇官网文档到一个巨型 Skill。
|
|
130
|
+
- 不用叶子方法同名匹配掩盖对象归属错误。
|
|
131
|
+
- 不把 `V8.Form.OrderNo`、`V8.Param.id` 等业务字段当成平台函数。
|
|
132
|
+
- 不为了本次普通补充修改版本更新日志、英文文档或 Skills 版本清单。
|
|
133
|
+
- 不声称静态审计等于真实硬件、浏览器、远端或生产验收。
|
|
@@ -49,7 +49,7 @@ Markdown。第一列是相对 `microi.doc/docs/doc/` 的路径;第二列 Skill
|
|
|
49
49
|
| `system-engine/micro-app.md` | microi-microservice, microi-ai-application | 微服务/AI 前端应用的工程架构与交付 |
|
|
50
50
|
| `system-engine/multi-end-client.md` | microi-client-frontend, microi-mobile-app-quality, microi-uniapp-frontend | PC、WebOS、移动自适应、UniApp 与 App 边界 |
|
|
51
51
|
| `system-engine/microi-ui.md` | microi-ui | Microi.UI 组件和主题 |
|
|
52
|
-
| `system-engine/message-notification.md` | message-notification |
|
|
52
|
+
| `system-engine/message-notification.md` | message-notification | 统一消息通知微服务、原 mic_msgset 多通道配置、MCP/Skills、租户/产品版本与帐号范围、后端重启领取、居中弹窗与 SignalR/轮询恢复 |
|
|
53
53
|
| `system-engine/module-engine.md` | module-engine, v8-menu-buttons, v8-template-engine, microi-mobile-app-quality | 菜单统计、模块指标、复合列、移动卡片、按钮角标和页面入口 |
|
|
54
54
|
| `system-engine/mq.md` | v8-mq-mqtt | RabbitMQ 租户连接、队列规范化、事务发布、消费确认、有限重试、幂等与多节点运行 |
|
|
55
55
|
| `system-engine/mqtt-engine.md` | v8-mq-mqtt | MQTT Broker、SaaS 认证、Topic ACL、V8 事件、设备路由、下行与生产部署 |
|
|
@@ -70,7 +70,7 @@ Markdown。第一列是相对 `microi.doc/docs/doc/` 的路径;第二列 Skill
|
|
|
70
70
|
| `v8-engine/ai-apiengine.md` | ai-engine, v8-api-config | AI 辅助接口引擎开发 |
|
|
71
71
|
| `v8-engine/api-engine.md` | v8-api-config, v8-utilities | 接口上下文、配置、分布式锁续租和调用 |
|
|
72
72
|
| `v8-engine/apiengine-index.md` | v8-crud-api, v8-api-config | 接口引擎实战和规范 |
|
|
73
|
-
| `v8-engine/form-engine.md` | v8-crud-api, v8-formengine-http | FormEngine API
|
|
73
|
+
| `v8-engine/form-engine.md` | v8-crud-api, v8-formengine-http, module-engine, microi-form-engine | FormEngine API、HTTP、原生查询身份/统计范围与按表主库策略 |
|
|
74
74
|
| `v8-engine/mcp-server.md` | microi-system-delivery, microi-codex-installer, v8-security | MCP 工具、确认、审计、文件、日志、备份与访问密钥 |
|
|
75
75
|
| `v8-engine/v8-client.md` | v8-utilities, v8-frontend-events, v8-http-integration, v8-security, ai-engine, print-engine | 全部前端 V8、平台 AI、强身份验证、扫码和蓝牙打印 |
|
|
76
76
|
| `v8-engine/v8-server.md` | v8-utilities, v8-api-config, v8-http-integration, v8-security, ai-engine | 全部后端 V8、强身份票据、平台 AI 和专项路由 |
|
|
@@ -23,13 +23,13 @@ Config/Data、菜单查询列与缓存保持一致。
|
|
|
23
23
|
- 后端表单事件:`../v8-table-event/SKILL.md`
|
|
24
24
|
- 前端字段事件:`../v8-frontend-events/SKILL.md`
|
|
25
25
|
|
|
26
|
-
## 标准工作流
|
|
27
|
-
|
|
28
|
-
### 物理字段允许为空(强制)
|
|
29
|
-
|
|
30
|
-
除作为主键的 `Id` 外,通过 MCP、表单设计器、FormEngine、V8 或应用包新增、修改的普通字段,数据库列一律允许 `NULL`。`NotEmpty` 等业务必填要求只作用于表单/服务端校验,不能生成 `NOT NULL`。默认值和是否允许为空是两项独立属性;兼容旧列时只放宽可空约束,保留类型、有效默认值、字符集、排序规则、注释、索引和历史数据,不以补零/空串替代结构修复。
|
|
31
|
-
|
|
32
|
-
MySQL 的 `ALTER COLUMN DROP DEFAULT` 会让可空列也在省略字段时报 1364;移除普通标量列的旧默认值应使用 `SET DEFAULT NULL`。`IS_NULLABLE=YES` 和 `COLUMN_DEFAULT=NULL` 不足以证明可省略字段,需要通过 `SELECT DEFAULT(列) FROM 表 LIMIT 0` 验证。TEXT/BLOB 的缺失默认标志应保留完整列定义执行 `MODIFY COLUMN` 修复,不能对它们使用 `ALTER COLUMN SET DEFAULT NULL`。
|
|
26
|
+
## 标准工作流
|
|
27
|
+
|
|
28
|
+
### 物理字段允许为空(强制)
|
|
29
|
+
|
|
30
|
+
除作为主键的 `Id` 外,通过 MCP、表单设计器、FormEngine、V8 或应用包新增、修改的普通字段,数据库列一律允许 `NULL`。`NotEmpty` 等业务必填要求只作用于表单/服务端校验,不能生成 `NOT NULL`。默认值和是否允许为空是两项独立属性;兼容旧列时只放宽可空约束,保留类型、有效默认值、字符集、排序规则、注释、索引和历史数据,不以补零/空串替代结构修复。
|
|
31
|
+
|
|
32
|
+
MySQL 的 `ALTER COLUMN DROP DEFAULT` 会让可空列也在省略字段时报 1364;移除普通标量列的旧默认值应使用 `SET DEFAULT NULL`。`IS_NULLABLE=YES` 和 `COLUMN_DEFAULT=NULL` 不足以证明可省略字段,需要通过 `SELECT DEFAULT(列) FROM 表 LIMIT 0` 验证。TEXT/BLOB 的缺失默认标志应保留完整列定义执行 `MODIFY COLUMN` 修复,不能对它们使用 `ALTER COLUMN SET DEFAULT NULL`。
|
|
33
33
|
|
|
34
34
|
1. 先通过 `microi_get_db_schema` 读取目标租户的真实表、字段和菜单。
|
|
35
35
|
2. 从当前源码
|
|
@@ -42,32 +42,49 @@ MySQL 的 `ALTER COLUMN DROP DEFAULT` 会让可空列也在省略字段时报 13
|
|
|
42
42
|
`FormWidth=24`,普通字段省略。`CollapseGroup` 属于整行控件,必须显式保存
|
|
43
43
|
`FormWidth=24`,且 `Config.CollapseGroup.ShowFieldCount` 默认补为 `true`。
|
|
44
44
|
6. 绑定菜单后补齐/允许平台推断列表列、搜索列、隐藏列、排序列、移动端列和默认排序。
|
|
45
|
-
7. 回读 `diy_field`、刷新 schema 缓存,再在真实新增/编辑/查看表单中验收。
|
|
46
|
-
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
`
|
|
51
|
-
`
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
`
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
45
|
+
7. 回读 `diy_field`、刷新 schema 缓存,再在真实新增/编辑/查看表单中验收。
|
|
46
|
+
|
|
47
|
+
## 原生查询主库策略
|
|
48
|
+
|
|
49
|
+
- 对不能接受副本延迟的权限关系等表,显式配置 `diy_table.ReadPrimary=1`;普通表保持
|
|
50
|
+
`NULL/0`。只能从可信表元数据选择连接,禁止让查询请求的 `ReadPrimary`、`TableModel`
|
|
51
|
+
或 `DataBaseId` 控制主库/副本。此配置不扩大菜单、表、记录或字段权限。
|
|
52
|
+
- 原生 Get、List、Count/CountBatch、SUM 批量与回退、Tree 子计数和 Export 必须共用
|
|
53
|
+
目标表所属数据库的 writer 选择;扩展库不得误回租户基础库。主库不可用或配置非法必须
|
|
54
|
+
失败,不能以副本或0计数伪装成功。直接调用 `V8.DbRead` 的语义不变。
|
|
55
|
+
- 显式 `DbTrans` 保留,不为主库策略跳出事务;父事务旧 RR 快照仍可能看见旧授权关系,
|
|
56
|
+
不能声称仅开启本字段就实现与撤权原子串行。需要实时授权时采用独立受控主库身份读取。
|
|
57
|
+
- 标准 `microi_create_table`、`microi_update_table` 和 Manifest `tables[].readPrimary`
|
|
58
|
+
支持 `null/0/1`,省略保持已有配置,显式 `null` 清回缺省。先升级后端并安装正式表单
|
|
59
|
+
引擎字段,再配置;不通过定制 `.NET` 启动迁移或原始 SQL 补字段。
|
|
60
|
+
- 元数据冷回源使用主库,写后清表缓存并回读。验收分别证明字段定义、可空物理列、配置值、
|
|
61
|
+
普通身份真实 Rows/Count/SUM/Tree/Export 与撤权边界;离线会话选择测试不能冒充复制延迟
|
|
62
|
+
或七种数据库实机测试。所有新普通表字段保持可空,不把已有表批量设为主库。
|
|
63
|
+
|
|
64
|
+
## 上传字段配置(AI 生成时强制)
|
|
65
|
+
|
|
66
|
+
- 图片使用 `Config.ImgUpload`,至少明确 `Limit`、`Multiple`、`MaxCount`、`Preview`、
|
|
67
|
+
`MaxSize` 和 `Crop`;文件使用 `Config.FileUpload`,至少明确 `Limit`、`Multiple`、
|
|
68
|
+
`MaxCount`、`MaxSize`。完整键和值域读取 `references/component-catalog.md`。
|
|
69
|
+
- `ImgUpload.Preview` 未配置时默认开启压缩;普通业务图片优先保持开启。裁剪前的原图无论
|
|
70
|
+
展示图配置为公有或私有、是否压缩,都必须保存在 HDFS 私有桶,业务字段不得保存原图路径。
|
|
71
|
+
- `ImgUpload.Crop.Enabled` 只控制表单打开时是否默认选中裁剪。运行时的裁剪开关、存储范围、
|
|
72
|
+
单/多图数量、压缩状态和最大体积统一显示在紧凑上传面板中;不得把 `Enabled=false` 误解为
|
|
73
|
+
禁止用户裁剪。`Mode` 只允许 `free/fixed/select`。
|
|
74
|
+
- 图片和文件的拖放区都使用同一紧凑配置面板。`Multiple=true` 时必须设置业务合理的
|
|
75
|
+
`MaxCount`;`MaxSize` 单位为 MB,字段限制只能收紧租户/平台上限,不能放大。
|
|
76
|
+
- 富文本使用 `Config.RichText`:必须明确 `Limit`,并按需配置
|
|
77
|
+
`Image.Enabled/MaxSize/MaxCount/Preview/CompressMaxSize/CompressMaxWidth`、
|
|
78
|
+
`Video.Enabled/MaxSize/MaxCount`、`File.Enabled/MaxSize/MaxCount/Accept`。公开公告、商品详情
|
|
79
|
+
等匿名正文显式使用 `Limit=false`;内部正文使用 `true`。旧字段缺失配置时安全默认为私有桶,
|
|
80
|
+
图片默认压缩到约 500 KB、最长边 1920 px。
|
|
81
|
+
- 私有富文本只能持久化稳定对象标识,禁止把 HDFS 签名 URL、审计代理 Ticket 或 DiyToken 写入
|
|
82
|
+
HTML。每次查看/编辑按当前菜单、表、记录和字段权限换取新短效地址;外部匿名页面没有此权限
|
|
83
|
+
上下文,因此不能把私有 RichText 当作公开正文。普通用户通过当前表单新增/编辑授权后,后端
|
|
84
|
+
必须回读 `diy_field.Config.RichText.Limit` 决定公私桶;只改请求 `Limit=false` 不能绕过字段配置。
|
|
85
|
+
- 图片、文件和富文本上传必须携带 `FormEngineKey + FieldId + SysMenuId`,编辑记录再带
|
|
86
|
+
`FormDataId`,TableChild 再带父子授权上下文。后端不得按用户等级统一覆盖字段的“禁止匿名访问”;
|
|
87
|
+
无法回查字段与动作权限的普通上传才安全降级为私有桶。
|
|
71
88
|
|
|
72
89
|
新建表/模块时,除非用户显式指定或表单达到极重阈值(约 36+ 业务字段、2+ 子表或同等
|
|
73
90
|
重型控件密度),默认保存 `diy_table.FormOpenType=Dialog` 与 `FormOpenWidth=80%`。
|
|
@@ -100,10 +117,17 @@ Drawer 只服务超长复杂表单,不能作为所有 CRUD 模块的模板默
|
|
|
100
117
|
- 兼容旧模块 Hero 时仅迁移视觉、`Source=Field` 或显式记录作用域指标;列表总数、分类数量和
|
|
101
118
|
未引用当前 `Form/RecordId` 的全局接口统计不得进入单记录 Banner,缺省时回到当前记录和
|
|
102
119
|
授权 `TableChild` 的语义统计。
|
|
103
|
-
- 未配置的存量表由运行时按字段类型智能推断,不能因为物理字段为空而隐藏或展示空壳。
|
|
104
|
-
只有 `FormBannerEnabled=0` 才隐藏。
|
|
120
|
+
- 未配置的存量表由运行时按字段类型智能推断,不能因为物理字段为空而隐藏或展示空壳。
|
|
121
|
+
只有 `FormBannerEnabled=0` 才隐藏。
|
|
122
|
+
- 字段绑定须区分省略/`NULL` 与显式空字符串:`titleField/subtitleField/imageField/backgroundField`
|
|
123
|
+
省略或 `NULL` 表示未选择,允许兼容推断;显式 `""` 表示不绑定该字段,不能被推断值或旧别名
|
|
124
|
+
覆盖。取消标题/图片字段后仍保留表单名称/默认图标回退。完整验收须同时使用包含该语义的 MCP
|
|
125
|
+
与平台前端,逐项回读空字符串并验证实际表单;不能只看到写入 `Code=1` 就宣称生效。
|
|
105
126
|
- 完整系统 Manifest 使用 `tables[].formBanner`;未提供时 `microi_generate_system` 仍须写入
|
|
106
|
-
类型感知的默认值。逐步创建字段后调用 `microi_configure_form_banner` 并回读验证。
|
|
127
|
+
类型感知的默认值。逐步创建字段后调用 `microi_configure_form_banner` 并回读验证。
|
|
128
|
+
- `microi_generate_system` 的最终验收与 `microi_validate_system` 必须逐表回读 Banner 语义字段;
|
|
129
|
+
写入返回成功、结构验收 `Code=1` 都不能代替已持久化配置,`Data.Passed=false` 仍视为失败。
|
|
130
|
+
旧库缺少 Banner 物理列时先完成平台正式升级,再配置和重新验收,不直接执行 SQL 补列。
|
|
107
131
|
- 表单设计器验收必须覆盖有/无图片、有/无统计、子表完整聚合、接口失败回退、浅色、深色、
|
|
108
132
|
PC 和窄屏,并检查文字对比度以及不存在技术字段伪统计。
|
|
109
133
|
|
|
@@ -170,9 +194,9 @@ MCP 建模只使用:
|
|
|
170
194
|
### MCP 创建 `TableChild` 的两阶段流程
|
|
171
195
|
|
|
172
196
|
1. 创建主表和独立子表;在子表创建真实外键(如 `VisitId varchar(50)`)。
|
|
173
|
-
2. 在子表为回查创建与物理隔离方式一致的索引:表有 `OsClient` 时通常为
|
|
174
|
-
`(OsClient, VisitId)`,独立租户表没有该列时为 `(VisitId)`。索引写入 Manifest
|
|
175
|
-
`tables[].indexes`,并以 `microi_get_table_indexes` 回读;物理字段回读失败时停止配置。
|
|
197
|
+
2. 在子表为回查创建与物理隔离方式一致的索引:表有 `OsClient` 时通常为
|
|
198
|
+
`(OsClient, VisitId)`,独立租户表没有该列时为 `(VisitId)`。索引写入 Manifest
|
|
199
|
+
`tables[].indexes`,并以 `microi_get_table_indexes` 回读;物理字段回读失败时停止配置。
|
|
176
200
|
3. 为子表创建绑定其 `diyTableId` 的隐藏 CRUD 菜单:`Display=0`、`AppDisplay=0`、
|
|
177
201
|
`HasChild=0`。
|
|
178
202
|
4. 在完整系统 Manifest 的主表字段声明:
|
|
@@ -219,17 +243,17 @@ MCP 建模只使用:
|
|
|
219
243
|
}
|
|
220
244
|
```
|
|
221
245
|
|
|
222
|
-
`FieldRelations` 使用紧凑格式 `[["父表字段","子表字段",true?], ...]`。全部关系用于新增回写和导入回填;第三位 `true` 仅标记参与导入反查父表的关系。后端兼容旧三项配置,新版前端会合并去重并在字段下次保存时清除旧键。
|
|
223
|
-
|
|
224
|
-
- `TableChild` 的父关联键为空、`null` 或仅空白时必须失败关闭:不得发起子表列表请求,服务端
|
|
225
|
-
收到空关联键也必须返回空集合,不能把空筛选忽略后退化成全表查询。旧客户端无法在请求层保证时,
|
|
226
|
-
应让控件在关联键有效前保持不挂载;`DisablePagination` 必须为 `false`,只作为第二道限流保护。
|
|
227
|
-
- `InFormV8`、字段进入事件和抽屉打开回调不得为预生成的父 `Id` 持久化默认子记录;用户取消
|
|
228
|
-
新增不会提交父表,会留下无法回滚的孤儿数据。默认行应保留在前端状态,或在父表保存成功后通过
|
|
229
|
-
幂等的后端事件创建;不需要真实明细时保持 0 行。
|
|
230
|
-
|
|
231
|
-
`OpenTable` 用于弹出列表选择数据,固定授权范围用 `V8.OpenTableSetWhere`;`JoinTable`
|
|
232
|
-
用于展示关联集合,不能用前端拼接代替数据权限。
|
|
246
|
+
`FieldRelations` 使用紧凑格式 `[["父表字段","子表字段",true?], ...]`。全部关系用于新增回写和导入回填;第三位 `true` 仅标记参与导入反查父表的关系。后端兼容旧三项配置,新版前端会合并去重并在字段下次保存时清除旧键。
|
|
247
|
+
|
|
248
|
+
- `TableChild` 的父关联键为空、`null` 或仅空白时必须失败关闭:不得发起子表列表请求,服务端
|
|
249
|
+
收到空关联键也必须返回空集合,不能把空筛选忽略后退化成全表查询。旧客户端无法在请求层保证时,
|
|
250
|
+
应让控件在关联键有效前保持不挂载;`DisablePagination` 必须为 `false`,只作为第二道限流保护。
|
|
251
|
+
- `InFormV8`、字段进入事件和抽屉打开回调不得为预生成的父 `Id` 持久化默认子记录;用户取消
|
|
252
|
+
新增不会提交父表,会留下无法回滚的孤儿数据。默认行应保留在前端状态,或在父表保存成功后通过
|
|
253
|
+
幂等的后端事件创建;不需要真实明细时保持 0 行。
|
|
254
|
+
|
|
255
|
+
`OpenTable` 用于弹出列表选择数据,固定授权范围用 `V8.OpenTableSetWhere`;`JoinTable`
|
|
256
|
+
用于展示关联集合,不能用前端拼接代替数据权限。
|
|
233
257
|
|
|
234
258
|
### 子表验收与复盘
|
|
235
259
|
|
|
@@ -262,9 +286,9 @@ MCP 建模只使用:
|
|
|
262
286
|
- 权限树勾选子菜单时必须补齐全部祖先菜单的 `Read` 权限,祖先不得被动继承子菜单的增删改查;
|
|
263
287
|
这样既保证路由可见,又避免扩大业务操作权限。
|
|
264
288
|
|
|
265
|
-
## 固定审计字段
|
|
266
|
-
|
|
267
|
-
- 核心协议迁移也必须遵守普通物理列允许 NULL。流式发布的 SaaS 开关、协议版本、栅栏、门禁代次和审计字段不能在旧迁移补跑时重新设为 NOT NULL;默认值、状态机、身份校验和完整审计由可信程序保证,只有主键 Id 保持数据库非空约束。
|
|
289
|
+
## 固定审计字段
|
|
290
|
+
|
|
291
|
+
- 核心协议迁移也必须遵守普通物理列允许 NULL。流式发布的 SaaS 开关、协议版本、栅栏、门禁代次和审计字段不能在旧迁移补跑时重新设为 NOT NULL;默认值、状态机、身份校验和完整审计由可信程序保证,只有主键 Id 保持数据库非空约束。
|
|
268
292
|
|
|
269
293
|
- `Id`、`CreateTime`、`UpdateTime`、`UserId`、`UserName`、`IsDeleted` 是 DIY 表的正常固定字段。物理列存在时必须有对应 `diy_field` 元数据,不能长期出现在“异常字段修复”列表;`diy_table.DisplayDefaultField` 只控制设计器默认是否显示这些字段,不等于删除元数据。
|
|
270
294
|
- 统一通过平台修复接口或 MCP `microi_repair_audit_fields` 补齐/恢复元数据。修复必须按 `OsClient` 使用共享租约锁,可重复执行,只处理已存在的固定物理列,不借机执行 DDL,并在成功后清理字段缓存。
|