@microi.net/cli 4.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/LICENSE +21 -0
- package/README.md +66 -0
- package/dist/mcp-codex-stdio-adapter.js +189 -0
- package/dist/mcp-server.js +972 -0
- package/dist/mcp-trae-windows-launcher.cmd +21 -0
- package/dist/microi-cli-mcp.js +7 -0
- package/dist/microi-cli.js +1645 -0
- package/dist/microi-skills.meta.json +335 -0
- package/dist/microi.skills/.microi-skills-version.json +6 -0
- package/dist/microi.skills/README.md +276 -0
- package/dist/microi.skills/ai-engine/SKILL.md +140 -0
- package/dist/microi.skills/ai-engine/agents/openai.yaml +4 -0
- package/dist/microi.skills/app-store/SKILL.md +105 -0
- package/dist/microi.skills/app-store/agents/openai.yaml +4 -0
- package/dist/microi.skills/business-blueprint/SKILL.md +184 -0
- package/dist/microi.skills/datasource-engine/SKILL.md +89 -0
- package/dist/microi.skills/datasource-engine/agents/openai.yaml +4 -0
- package/dist/microi.skills/dos-orm/SKILL.md +76 -0
- package/dist/microi.skills/dos-orm/references/api-reference.md +229 -0
- package/dist/microi.skills/job-engine/SKILL.md +141 -0
- package/dist/microi.skills/job-engine/agents/openai.yaml +4 -0
- package/dist/microi.skills/message-notification/SKILL.md +113 -0
- package/dist/microi.skills/message-notification/agents/openai.yaml +6 -0
- package/dist/microi.skills/message-notification/references/contracts.md +99 -0
- package/dist/microi.skills/microi-ai-app-auth.js +651 -0
- package/dist/microi.skills/microi-ai-application/SKILL.md +80 -0
- package/dist/microi.skills/microi-ai-application/agents/openai.yaml +4 -0
- package/dist/microi.skills/microi-ai-application/references/frontend-baseline.md +164 -0
- package/dist/microi.skills/microi-client-frontend/SKILL.md +562 -0
- package/dist/microi.skills/microi-datasource-mapping/SKILL.md +108 -0
- package/dist/microi.skills/microi-db-schema/SKILL.md +170 -0
- package/dist/microi.skills/microi-db-schema/agents/openai.yaml +4 -0
- package/dist/microi.skills/microi-db-schema/references/core-tables.md +695 -0
- package/dist/microi.skills/microi-db-schema/references/form-component-options.md +256 -0
- package/dist/microi.skills/microi-db-schema/references/schema-overview.md +203 -0
- package/dist/microi.skills/microi-db-schema/references/schema.md +647 -0
- package/dist/microi.skills/microi-db-schema/references/table-catalog.md +1607 -0
- package/dist/microi.skills/microi-deployment/SKILL.md +117 -0
- package/dist/microi.skills/microi-deployment/references/deployment-matrix.md +94 -0
- package/dist/microi.skills/microi-docs-coverage/SKILL.md +91 -0
- package/dist/microi.skills/microi-docs-coverage/references/capability-map.md +65 -0
- package/dist/microi.skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +887 -0
- package/dist/microi.skills/microi-form-engine/SKILL.md +159 -0
- package/dist/microi.skills/microi-form-engine/references/component-catalog.md +116 -0
- package/dist/microi.skills/microi-form-engine/references/data-source-events.md +117 -0
- package/dist/microi.skills/microi-form-layout/SKILL.md +373 -0
- package/dist/microi.skills/microi-frontend-sdk/SKILL.md +304 -0
- package/dist/microi.skills/microi-left-right-layout/SKILL.md +132 -0
- package/dist/microi.skills/microi-microservice/SKILL.md +115 -0
- package/dist/microi.skills/microi-microservice/references/runtime-delivery.md +145 -0
- package/dist/microi.skills/microi-mobile-app-quality/SKILL.md +436 -0
- package/dist/microi.skills/microi-solution-quotation/SKILL.md +76 -0
- package/dist/microi.skills/microi-solution-quotation/agents/openai.yaml +4 -0
- package/dist/microi.skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -0
- package/dist/microi.skills/microi-system-delivery/SKILL.md +446 -0
- package/dist/microi.skills/microi-ui/SKILL.md +321 -0
- package/dist/microi.skills/microi-uniapp-frontend/SKILL.md +483 -0
- package/dist/microi.skills/microi.v8.js +1758 -0
- package/dist/microi.skills/module-engine/SKILL.md +131 -0
- package/dist/microi.skills/module-engine/references/module-config.md +174 -0
- package/dist/microi.skills/page-engine/SKILL.md +397 -0
- package/dist/microi.skills/performance-testing/SKILL.md +207 -0
- package/dist/microi.skills/playwright-e2e/SKILL.md +769 -0
- package/dist/microi.skills/print-engine/SKILL.md +237 -0
- package/dist/microi.skills/production-readonly-audit/SKILL.md +39 -0
- package/dist/microi.skills/report-engine/SKILL.md +69 -0
- package/dist/microi.skills/report-engine/agents/openai.yaml +4 -0
- package/dist/microi.skills/search-engine/SKILL.md +73 -0
- package/dist/microi.skills/search-engine/agents/openai.yaml +4 -0
- package/dist/microi.skills/spider-engine/SKILL.md +188 -0
- package/dist/microi.skills/translate-engine/SKILL.md +91 -0
- package/dist/microi.skills/translate-engine/agents/openai.yaml +4 -0
- package/dist/microi.skills/ui-design/SKILL.md +1575 -0
- package/dist/microi.skills/ui-design/assets/pattern-showcase/app.js +54 -0
- package/dist/microi.skills/ui-design/assets/pattern-showcase/index.html +163 -0
- package/dist/microi.skills/ui-design/assets/pattern-showcase/styles.css +311 -0
- package/dist/microi.skills/ui-design/assets/templates/MCI-DESIGN.md +98 -0
- package/dist/microi.skills/ui-design/references/design-pattern-library.md +171 -0
- package/dist/microi.skills/ui-design/references/mci-design-contract.md +84 -0
- package/dist/microi.skills/ui-design/references/motion-and-media.md +71 -0
- package/dist/microi.skills/ui-design/references/product-flow-recipes.md +94 -0
- package/dist/microi.skills/uniapp-mall-assets/SKILL.md +105 -0
- package/dist/microi.skills/v8-api-config/SKILL.md +272 -0
- package/dist/microi.skills/v8-cache-pattern/SKILL.md +286 -0
- package/dist/microi.skills/v8-crud-api/SKILL.md +398 -0
- package/dist/microi.skills/v8-debugging/SKILL.md +279 -0
- package/dist/microi.skills/v8-explorer-tree/SKILL.md +224 -0
- package/dist/microi.skills/v8-export-import/SKILL.md +590 -0
- package/dist/microi.skills/v8-file-upload/SKILL.md +497 -0
- package/dist/microi.skills/v8-formengine-http/SKILL.md +218 -0
- package/dist/microi.skills/v8-frontend-events/SKILL.md +349 -0
- package/dist/microi.skills/v8-frontend-events/references/bluetooth-print-api.md +107 -0
- package/dist/microi.skills/v8-frontend-events/references/bluetooth-print.md +185 -0
- package/dist/microi.skills/v8-http-integration/SKILL.md +379 -0
- package/dist/microi.skills/v8-image-processing/SKILL.md +187 -0
- package/dist/microi.skills/v8-image-processing/agents/openai.yaml +4 -0
- package/dist/microi.skills/v8-image-processing/references/api-reference.md +620 -0
- package/dist/microi.skills/v8-menu-buttons/SKILL.md +661 -0
- package/dist/microi.skills/v8-mongodb/SKILL.md +149 -0
- package/dist/microi.skills/v8-mq-mqtt/SKILL.md +227 -0
- package/dist/microi.skills/v8-saas-multi-tenant/SKILL.md +193 -0
- package/dist/microi.skills/v8-security/SKILL.md +417 -0
- package/dist/microi.skills/v8-sql-query/SKILL.md +290 -0
- package/dist/microi.skills/v8-table-event/SKILL.md +385 -0
- package/dist/microi.skills/v8-template-engine/SKILL.md +165 -0
- package/dist/microi.skills/v8-utilities/SKILL.md +79 -0
- package/dist/microi.skills/v8-utilities/references/client-api-index.md +136 -0
- package/dist/microi.skills/v8-utilities/references/platform-http-routes.md +80 -0
- package/dist/microi.skills/v8-utilities/references/server-api-index.md +129 -0
- package/dist/microi.skills/v8-workflow/SKILL.md +322 -0
- package/dist/microi.skills/workspace-conventions/SKILL.md +479 -0
- package/package.json +40 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: module-engine
|
|
3
|
+
description: Microi 模块引擎与 sys_menu 配置指南。用于创建或修改后台菜单、菜单统计角标、模块标题指标、复合列表列、移动端业务卡片、查询列、接口替换、跨端 ViewSchema、动态按钮、PageTabs、树形加表格布局和 MicroService 菜单。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Microi 模块引擎
|
|
7
|
+
|
|
8
|
+
模块引擎决定同一张表在某个菜单、角色和终端中“如何查询、展示和操作”。
|
|
9
|
+
配置实体是 `sys_menu`,不是 `sys_module`;表结构与字段仍属于
|
|
10
|
+
`diy_table/diy_field`。
|
|
11
|
+
|
|
12
|
+
## 必读参考
|
|
13
|
+
|
|
14
|
+
- 字段、打开方式、查询配置、ViewSchema 和接口替换:
|
|
15
|
+
`references/module-config.md`
|
|
16
|
+
- 动态按钮 JSON 与后台任务:`../v8-menu-buttons/SKILL.md`
|
|
17
|
+
- 树形+表格:`../microi-left-right-layout/SKILL.md`
|
|
18
|
+
- 表单控件:`../microi-form-engine/SKILL.md`
|
|
19
|
+
- 表单平铺、CollapseGroup 与 Tabs 决策:`../microi-form-layout/SKILL.md`
|
|
20
|
+
- MicroService 菜单:`../microi-microservice/SKILL.md`
|
|
21
|
+
|
|
22
|
+
## 创建/修改标准流程
|
|
23
|
+
|
|
24
|
+
1. `microi_get_db_schema` 读取真实 `diy_table`、字段、已有菜单和父菜单。
|
|
25
|
+
2. 绑定表的菜单使用 `microi_create_module`/Manifest,不直接写 `sys_menu`。
|
|
26
|
+
3. 明确 `openType`、父菜单、路由、PC/移动端显隐和角色范围。
|
|
27
|
+
4. 用字段名配置 `listFields/searchFields/sortFields/hiddenFields/mobileFields`;
|
|
28
|
+
MCP 解析为字段 Id 和 `SelectFields/SearchFieldIds/...`。
|
|
29
|
+
5. 同一次创建配齐业务按钮、FormBtns、PageTabs 和批量按钮。
|
|
30
|
+
6. 写后回读模块,检查字段映射、按钮 JSON、路由和目标页面。
|
|
31
|
+
7. 为管理员/目标角色分配菜单权限,并以真实登录用户验收。
|
|
32
|
+
|
|
33
|
+
## 绑定表菜单不能只写两个字段
|
|
34
|
+
|
|
35
|
+
除 `Name` 和 `DiyTableId` 外,至少配置或允许平台推断:
|
|
36
|
+
|
|
37
|
+
- `TableDiyFieldIds`
|
|
38
|
+
- `SelectFields`
|
|
39
|
+
- `SearchFieldIds`
|
|
40
|
+
- `SortFieldIds`
|
|
41
|
+
- `NotShowFields`
|
|
42
|
+
- `StatisticsFields`
|
|
43
|
+
- `MobileListFields`
|
|
44
|
+
- `CardTitleTagFields`
|
|
45
|
+
- `CardBottomTagFields`
|
|
46
|
+
- `DefaultOrderBy`
|
|
47
|
+
|
|
48
|
+
普通状态、开关等低基数字段不能机械创建单列索引。只有真实查询、关联、唯一约束
|
|
49
|
+
或扫描需要的索引才进入 Manifest 并通过 MCP 创建、回读。
|
|
50
|
+
|
|
51
|
+
## 打开方式
|
|
52
|
+
|
|
53
|
+
| OpenType | 用途 |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `Diy` | 标准表单引擎列表/表单 |
|
|
56
|
+
| `Component` | 主前端已注册 Vue 组件 |
|
|
57
|
+
| `Iframe` | 受控外部页面 |
|
|
58
|
+
| `SecondMenu` | 仅作为父菜单 |
|
|
59
|
+
| `Report` | 虚拟报表 |
|
|
60
|
+
| `MicroService` | 已发布前端微服务页面 |
|
|
61
|
+
|
|
62
|
+
Iframe 不把长期 Token、密码或连接串放 URL。第三方单点登录使用短期、一次性、
|
|
63
|
+
可撤销的服务端交换票据,限制 redirect/scope,并在落地后清理地址栏。
|
|
64
|
+
|
|
65
|
+
## 数据与业务逻辑
|
|
66
|
+
|
|
67
|
+
- 单表 CRUD 已由绑定表菜单提供,不额外创建重复接口引擎。
|
|
68
|
+
- 后端 V8 可用 `V8.ModuleEngine.GetTableData({...})`,通过
|
|
69
|
+
`ModuleEngineKey` 应用模块的关联表查询配置;标准前端 V8 不挂载
|
|
70
|
+
`V8.ModuleEngine`。
|
|
71
|
+
- 查询接口替换、导入/导出替换和跨表动作属于复杂逻辑时,使用接口引擎。
|
|
72
|
+
- 前端按钮只做确认、收集少量参数、调用接口和刷新;事务与最终校验在后端。
|
|
73
|
+
- 预计超过 2 分钟、500 条、1000 个扇出或 100 次外部调用时使用真实后台任务。
|
|
74
|
+
- 不复制官网旧“Redis 文本进度 + 长事务循环”导入示例作为新实现;必须有稳定
|
|
75
|
+
幂等键、业务任务状态、真实 Current/Total、失败恢复和必要的 checkpoint 分片。
|
|
76
|
+
|
|
77
|
+
## 跨端 ViewSchema
|
|
78
|
+
|
|
79
|
+
顶层 PC 数据列表默认使用紧凑的新模块标题样式;即使未启用 ViewSchema,也不能退回无标题的旧外观。无指标头部固定 `44px`、含指标头部固定 `58px`,连同间距总纵向占用约 `50px / 64px`。子表、关联表、嵌入表不重复显示,移动端由固定导航栏承载标题。`ViewSchema` 只负责个性化标题、指标、复合列和卡片,不改变 Detail/Edit 的显式启用语义。
|
|
80
|
+
|
|
81
|
+
PC 列表的固定结构顺序是“模块 Hero(标题/副标题/动态指标)→ PageTabs → 查询与表格”,Hero 必须渲染在页面多 Tab 上方。头部只使用一次性入场和一次性轻量光效,禁止持续循环动画;`prefers-reduced-motion: reduce` 必须关闭动画和过渡。
|
|
82
|
+
|
|
83
|
+
`ViewSchema` 是模块级视图,不写入已废弃的通用 `DiyConfig`。优先通过 sys_menu“跨端视图”的 `DiyModulePresentationDesigner` 配置;需要角色视图或 Detail/Edit 高级布局时再使用设计器的高级 JSON。启用后仍须:
|
|
84
|
+
|
|
85
|
+
- 配置 `EnableViewSchema`、语义版本和递增配置版本。
|
|
86
|
+
- 按 Scene、Device、RoleIds、Priority 选择视图。
|
|
87
|
+
- 配置损坏或客户端不支持时回退标准 `sys_menu + diy_table + diy_field`,不能白屏。
|
|
88
|
+
- 小程序只消费声明式动作,不执行 PC 的任意 `V8Code`。
|
|
89
|
+
- 声明式动作中的 ParamMap/VisibleWhen 只允许白名单字段,不使用 `eval`。
|
|
90
|
+
|
|
91
|
+
### 重要模块的统计与信息层级
|
|
92
|
+
|
|
93
|
+
- 待办、库存预警、未读、逾期、待收/待付等有行动含义的菜单,主动询问并配置
|
|
94
|
+
`MenuBadgeEnabled=1` 与 `MenuBadgeApiEngineKey`。接口统一返回
|
|
95
|
+
`{ Code:1, Data:{ Value: number } }`,并按当前用户权限统计。
|
|
96
|
+
- `Scene=List` 的 `Layout.Hero` 用 `Eyebrow/Title/Description/Metrics` 建立模块标题与
|
|
97
|
+
指标条。相同 `ApiEngineKey` 的指标必须由一个聚合接口批量返回,使用 `ValuePath`
|
|
98
|
+
取值;禁止一个指标一次请求。
|
|
99
|
+
- Hero 指标可用 `Source=DataCount` 读取当前筛选总记录数、用 `Source=PageCount` 读取本页
|
|
100
|
+
已加载记录数;两者复用列表结果,不调用额外接口。字段汇总继续用 `Field`,跨表或复合
|
|
101
|
+
统计才用 `ApiEngineKey + ValuePath`。
|
|
102
|
+
- `Layout.List.Columns[]` 用 `Field + Lines + TrailingFields` 配置双行/多行列和右侧
|
|
103
|
+
图标状态;声明支持 `Tone/Color/Icon/ShowLabel/Prefix/Suffix`,引用字段必须进入查询列。
|
|
104
|
+
- `Scene=Card, Device=Mobile` 用 `Layout.Card` 配置 `AvatarTextField/TitleField/TopFields/
|
|
105
|
+
SubtitleFields/RightFields/Fields/MetaFields/BottomFields`。未配置时继续兼容
|
|
106
|
+
`MobileListFields/CardTitleTagFields/CardBottomTagFields`。
|
|
107
|
+
- `PageTabs/MoreBtns/PageBtns/BatchSelectMoreBtns/ExportMoreBtns/FormBtns` 需要数量时配置
|
|
108
|
+
`BadgeEnabled/BadgeApiEngineKey`;一个接口接收当前页 `Ids + ButtonKeys` 并一次返回
|
|
109
|
+
`Data.Buttons` 与 `Data.Rows`,禁止逐行调用。
|
|
110
|
+
- 能直接用字段表达的信息优先配置复合列/卡片字段;只有确需 HTML 样式或组合逻辑时
|
|
111
|
+
才使用字段的 `V8TmpEngineTable`,且仍需遵守 DOMPurify 和查询字段范围。
|
|
112
|
+
|
|
113
|
+
### 表单布局协同
|
|
114
|
+
|
|
115
|
+
- `<=6` 个核心可见字段优先平铺;`7~29` 个字段按基础、业务、状态、附件等信息域使用
|
|
116
|
+
`CollapseGroup`;`30+` 个字段,或存在多个大型子表、扫码/代码编辑等强任务域时使用
|
|
117
|
+
表级 `diy_table.Tabs`。最终还要按有效表单行校正,避免产生只有少量字段的空洞 Tab。
|
|
118
|
+
- 新增 `Tabs/CollapseGroup/Divider/Alert` 等布局节点必须走明确的“仅元数据”专用路径。
|
|
119
|
+
普通新增字段接口可能同步对业务表执行物理 DDL,不能把向 `diy_field` 新增一行误认为
|
|
120
|
+
仅保存布局配置;写入后要同时回读元数据并核对业务表结构未新增实体列。
|
|
121
|
+
|
|
122
|
+
## 验收
|
|
123
|
+
|
|
124
|
+
- `Display/AppDisplay` 除明确隐藏外为 1,父子菜单层级正确。
|
|
125
|
+
- 路由刷新、直接访问、切换菜单均不 404/白屏。
|
|
126
|
+
- 列表字段、筛选、排序、统计、移动端卡片与预期一致。
|
|
127
|
+
- 权限用户可访问,未授权用户不能靠 URL、`_SysMenuId` 或前端字段绕过。
|
|
128
|
+
- MoreBtns/FormBtns/PageTabs/BatchSelectMoreBtns 显隐、调用和刷新正确;PageTabs 数字角标使用稳定 Tab Id 取 `Data.Buttons`。
|
|
129
|
+
- 菜单角标、模块指标和按钮角标按真实权限返回,零值/超限/接口失败降级正确且无 N+1。
|
|
130
|
+
- PC 复合列和 Mobile Card 引用的附加字段均在查询结果中;长文本、空值、模板值不破版。
|
|
131
|
+
- PC 和移动端分别验证;MicroService 还要验证运行时、页面路由和宿主上下文。
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# 模块引擎配置参考
|
|
2
|
+
|
|
3
|
+
## 核心归属
|
|
4
|
+
|
|
5
|
+
| 配置 | 归属 |
|
|
6
|
+
|---|---|
|
|
7
|
+
| 表与字段元数据 | `diy_table`、`diy_field` |
|
|
8
|
+
| 菜单、列表列、按钮、打开方式、ViewSchema | `sys_menu` |
|
|
9
|
+
| 接口替换业务逻辑 | `sys_apiengine` |
|
|
10
|
+
| 左右树配置 | `diy_LeftJoinRightView` |
|
|
11
|
+
| MicroService 运行时/页面 | `sys_microiservice`、`sys_microiservice_page` |
|
|
12
|
+
|
|
13
|
+
## 查询与显示
|
|
14
|
+
|
|
15
|
+
| 逻辑配置 | sys_menu 侧含义 |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `TableDiyFieldIds` | 当前模块可用字段全集 |
|
|
18
|
+
| `SelectFields` | 列表查询字段 |
|
|
19
|
+
| `SearchFieldIds` | 可搜索字段 |
|
|
20
|
+
| `SortFieldIds` | 可排序字段 |
|
|
21
|
+
| `NotShowFields` | 查询但不直接显示的字段 |
|
|
22
|
+
| `StatisticsFields` | 汇总字段 |
|
|
23
|
+
| `MobileListFields` | 移动端列表字段 |
|
|
24
|
+
| `CardTitleTagFields` | 卡片标题/标签字段 |
|
|
25
|
+
| `CardBottomTagFields` | 卡片底部字段 |
|
|
26
|
+
| `DefaultOrderBy` | 默认排序 |
|
|
27
|
+
| `MenuBadgeEnabled` | 左侧菜单统计角标开关 |
|
|
28
|
+
| `MenuBadgeApiEngineKey` | 菜单统计接口引擎 Key,返回 `Data.Value` |
|
|
29
|
+
|
|
30
|
+
默认隐藏 Id、外键、系统字段、布局字段、上传、富文本、地图和子表等重字段。
|
|
31
|
+
默认搜索优先名称、标题、编号、状态、类型、分类、负责人和时间;统计优先金额、
|
|
32
|
+
数量、价格、积分和余额。用户明确配置优先。
|
|
33
|
+
|
|
34
|
+
## 打开方式细节
|
|
35
|
+
|
|
36
|
+
### Diy
|
|
37
|
+
|
|
38
|
+
默认 `/diy/diy-table-rowlist`,绑定 `DiyTableId` 后自动具备列表、搜索、新增、
|
|
39
|
+
编辑、删除、导入和导出。
|
|
40
|
+
|
|
41
|
+
### Component
|
|
42
|
+
|
|
43
|
+
用于主前端源码已注册的组件。组件路径必须存在并经过目标前端构建验证。
|
|
44
|
+
|
|
45
|
+
### Iframe
|
|
46
|
+
|
|
47
|
+
仅允许受控 URL。地址接口引擎可返回动态 URL,但:
|
|
48
|
+
|
|
49
|
+
- 密钥只在后端使用;
|
|
50
|
+
- 外部 Token 短时缓存并按 `OsClient + 用户 + 目标系统` 隔离;
|
|
51
|
+
- URL 参数使用一次性交换码,不使用当前后台 JWT;
|
|
52
|
+
- 限制跳转域名并防 SSRF/开放重定向。
|
|
53
|
+
|
|
54
|
+
### SecondMenu
|
|
55
|
+
|
|
56
|
+
只承载子菜单,不绑定业务表;`HasChild` 与真实子菜单一致。
|
|
57
|
+
|
|
58
|
+
### Report
|
|
59
|
+
|
|
60
|
+
使用报表引擎虚拟表。读取 `report-engine/SKILL.md`。
|
|
61
|
+
|
|
62
|
+
### MicroService
|
|
63
|
+
|
|
64
|
+
必须同时绑定:
|
|
65
|
+
|
|
66
|
+
- `MicroServiceId`
|
|
67
|
+
- `MicroServicePageId`
|
|
68
|
+
- `MicroServiceRoutePath`
|
|
69
|
+
- `MicroServiceKey`
|
|
70
|
+
- `ComponentPath=/micro-app/host`
|
|
71
|
+
|
|
72
|
+
路由优先 `/micro-app/{MsKey}/{RoutePath}`,并兼容历史 Id 路由。
|
|
73
|
+
|
|
74
|
+
## 跨端 ViewSchema
|
|
75
|
+
|
|
76
|
+
专用物理字段:
|
|
77
|
+
|
|
78
|
+
| 字段 | 说明 |
|
|
79
|
+
|---|---|
|
|
80
|
+
| `EnableViewSchema` | 1 启用 |
|
|
81
|
+
| `ViewSchemaVersion` | 协议语义版本 |
|
|
82
|
+
| `ViewConfigVersion` | 每次发布递增,驱动缓存失效 |
|
|
83
|
+
| `ViewSchema` | Detail/Edit/List/Card JSON |
|
|
84
|
+
|
|
85
|
+
顶层 PC 列表不依赖 `EnableViewSchema` 才采用新样式:平台始终显示紧凑模块标题。模块表单中的 `DiyModulePresentationDesigner` 负责可视化编辑默认 List-PC 与 Card-Mobile 视图,并保留 Detail/Edit、角色视图及未知 JSON 字段。
|
|
86
|
+
|
|
87
|
+
视图项常用字段:`Key`、`Scene`、`Device`、`RoleIds`、`Priority`、`Layout`。
|
|
88
|
+
标准区块包括 `EntityHero`、`MetricStrip`、`ActionGrid`、
|
|
89
|
+
`ResponsiveSection`。声明式动作包括:
|
|
90
|
+
|
|
91
|
+
`ApiEngine`、`OpenDetail`、`OpenList`、`OpenForm`、`Navigate`、
|
|
92
|
+
`Dial`、`Scan`、`Map`、`Refresh`、`Back`、`Copy`。
|
|
93
|
+
|
|
94
|
+
`ParamMap` 可使用经过白名单处理的 `$form.Field`、`$user.Field`、
|
|
95
|
+
`$menu.Field`。小程序端不下载/执行任意 V8Code。
|
|
96
|
+
|
|
97
|
+
### List / Card 展示协议
|
|
98
|
+
|
|
99
|
+
| 配置路径 | 用途 | 核心字段 |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| `Layout.Hero` | 模块眉题、标题、说明、统计条 | `Eyebrow/Title/Description/Metrics` |
|
|
102
|
+
| `Hero.Metrics[]` | 内置、字段或接口引擎指标 | `Key/Label/Source/Field/ApiEngineKey/ValuePath/Prefix/Suffix/Tone/RefreshSeconds` |
|
|
103
|
+
| `Layout.List.Columns[]` | PC 复合列 | `Field/Lines/TrailingFields/RequiredFields/Align/MinWidth` |
|
|
104
|
+
| `Layout.Card` | 移动端业务卡片 | `AvatarTextField/TitleField/TopFields/SubtitleFields/RightFields/Fields/MetaFields/BottomFields` |
|
|
105
|
+
|
|
106
|
+
字段引用对象支持 `Name/AsName/Label/ShowLabel/Icon/Tone/Color/Prefix/Suffix/
|
|
107
|
+
FontWeight/DisplayStyle`。运行时会把引用字段并入 `_SelectFields`;查询接口替换也必须
|
|
108
|
+
返回这些字段。多字段模板沿用对应 `diy_field.V8TmpEngineTable`,不在 ViewSchema 内保存
|
|
109
|
+
可执行脚本。
|
|
110
|
+
|
|
111
|
+
Hero 必须在 PageTabs 上方渲染。PC 无指标/含指标头部分别为 `44px / 58px`,连同间距的
|
|
112
|
+
总纵向占用约 `50px / 64px`。只允许一次性入场与一次性轻量光效,禁止持续循环动画;
|
|
113
|
+
`prefers-reduced-motion: reduce` 下关闭动画和过渡。
|
|
114
|
+
|
|
115
|
+
`Hero.Metrics[].Source` 可直接配置 `DataCount`(当前筛选总记录数)或 `PageCount`(本页
|
|
116
|
+
加载数),两者复用列表结果且不请求接口。字段汇总使用 `Field`。动态指标接口按
|
|
117
|
+
`ApiEngineKey` 分组调用,参数包含 `MetricKeys`、当前模块/表、租户和筛选上下文;同一接口
|
|
118
|
+
应一次返回多个指标。`ValuePath` 例:`Data.UnpaidAmount`。
|
|
119
|
+
|
|
120
|
+
## 动态按钮位置
|
|
121
|
+
|
|
122
|
+
| 字段 | 位置 |
|
|
123
|
+
|---|---|
|
|
124
|
+
| `MoreBtns` | 行操作 |
|
|
125
|
+
| `FormBtns` | 表单底部 |
|
|
126
|
+
| `BatchSelectMoreBtns` | 批量勾选后 |
|
|
127
|
+
| `PageTabs` | 页面顶部 Tab,固定在模块 Hero 下方 |
|
|
128
|
+
| `PageBtns` | 页面级 |
|
|
129
|
+
| `ExportMoreBtns` | 导出扩展 |
|
|
130
|
+
|
|
131
|
+
按钮对象必须有稳定唯一 Id、Sort、Name、显隐逻辑和动作。后台任务按钮还要配置
|
|
132
|
+
ApiEngineKey、Workload、幂等字段、并发 Key、业务状态/任务 Id/进度/ETA 字段。
|
|
133
|
+
|
|
134
|
+
`PageTabs` 与五类按钮共用统计字段:`BadgeEnabled`、`BadgeApiEngineKey`、`BadgeValuePath`、`BadgeField`、
|
|
135
|
+
`BadgeTone`、`BadgeColor`、`BadgeMax`、`BadgeShowZero`、`BadgeRefreshSeconds`。接口一次接收当前页 `Ids` 与
|
|
136
|
+
`ButtonKeys`,推荐返回:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"Code": 1,
|
|
141
|
+
"Data": {
|
|
142
|
+
"Buttons": { "button-id": 12 },
|
|
143
|
+
"Rows": { "row-id": { "button-id": 2 } }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
行按钮的 `BadgeField` 直接读取当前行已有字段;PageTabs/页面按钮的 `BadgeField` 读取模块 `StatisticsFields` 页面汇总值,必须同时配置“统计列”。字段模式不调用接口;其它行统计必须批量聚合,禁止 N+1。
|
|
149
|
+
|
|
150
|
+
## 接口替换
|
|
151
|
+
|
|
152
|
+
可替换查询、新增、更新、删除、导入、导入进度和导出接口。替换后仍要保持平台
|
|
153
|
+
返回契约、权限、分页、统计、错误码和租户隔离。
|
|
154
|
+
|
|
155
|
+
- 查询:返回 `Code/Data/DataCount`,不可丢失菜单权限。
|
|
156
|
+
- 导入:读取文件、校验、分片写入、真实进度、幂等恢复。
|
|
157
|
+
- 导出:大数据使用后台任务/流式文件,不在请求内无界物化。
|
|
158
|
+
- 所有路径变量只能使用平台明确支持的占位符,不拼接 Token。
|
|
159
|
+
|
|
160
|
+
## PageTabs 两种模式
|
|
161
|
+
|
|
162
|
+
- 无目标菜单:在当前模块执行 V8,通常 `V8.SearchSet(...)`。
|
|
163
|
+
- 有 `TargetSysMenuId`:加载目标模块。目标菜单即使隐藏导航,也必须给角色权限。
|
|
164
|
+
|
|
165
|
+
PageTabs 可以通过 `BadgeApiEngineKey` 显示数字角标。接口按 `ButtonKeys` 一次返回所有 Tab 数量到 `Data.Buttons`,`BadgeValuePath` 可显式指定 `Data.Buttons.{TabId}`;失败只隐藏角标,不能阻断页签切换。
|
|
166
|
+
|
|
167
|
+
PageTabs 只表达当前模块的数据类别/状态,不能取代模块 Hero,也不能渲染到 Hero 上方。
|
|
168
|
+
|
|
169
|
+
跨表 Tab 应让每个目标菜单配置同一组 PageTabs,不在前端按菜单名写死。
|
|
170
|
+
|
|
171
|
+
## URL 参数
|
|
172
|
+
|
|
173
|
+
兼容参数包括 `ShowClassicTop`、`ShowClassicLeft`、`FormDataId`。它们只控制
|
|
174
|
+
界面/默认打开记录,不建立授权;记录仍须通过当前菜单和数据权限校验。
|