@microi.net/cli 6.0.9 → 6.1.1
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 +116 -116
- package/scripts/microi-cli.js +1 -1
- package/scripts/microi-skills.meta.json +312 -312
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +45 -45
- package/skills/README.md +1 -1
- package/skills/ai-engine/SKILL.md +2 -2
- package/skills/ai-engine/references/ai-employees.md +48 -48
- package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +2 -2
- package/skills/app-store/SKILL.md +531 -531
- package/skills/business-blueprint/SKILL.md +193 -193
- package/skills/datasource-engine/SKILL.md +93 -93
- package/skills/dos-orm/SKILL.md +105 -105
- package/skills/dos-orm/references/api-reference.md +229 -229
- package/skills/email-engine/SKILL.md +81 -81
- package/skills/email-engine/references/v8-email.md +34 -34
- package/skills/job-engine/SKILL.md +176 -176
- package/skills/message-notification/SKILL.md +156 -156
- package/skills/message-notification/references/contracts.md +102 -102
- package/skills/microi/SKILL.md +14 -14
- package/skills/microi-ai-app-auth.js +1 -1
- package/skills/microi-ai-application/SKILL.md +115 -115
- package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
- 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 +10 -10
- 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 +10 -10
- 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 +10 -10
- package/skills/microi-codex/SKILL.md +130 -130
- package/skills/microi-codex-installer/SKILL.md +1 -1
- package/skills/microi-datasource-mapping/SKILL.md +131 -122
- package/skills/microi-db-schema/SKILL.md +175 -175
- package/skills/microi-db-schema/references/core-tables.md +695 -695
- package/skills/microi-db-schema/references/form-component-options.md +256 -256
- package/skills/microi-db-schema/references/schema-overview.md +202 -202
- package/skills/microi-db-schema/references/schema.md +646 -646
- package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
- package/skills/microi-deployment/SKILL.md +260 -260
- package/skills/microi-deployment/references/deployment-matrix.md +109 -109
- package/skills/microi-docs-coverage/SKILL.md +133 -133
- package/skills/microi-docs-coverage/references/capability-map.md +91 -91
- package/skills/microi-form-engine/SKILL.md +338 -338
- package/skills/microi-form-engine/references/component-catalog.md +218 -218
- package/skills/microi-form-engine/references/data-source-events.md +124 -124
- package/skills/microi-left-right-layout/SKILL.md +141 -141
- package/skills/microi-microservice/SKILL.md +6 -1
- package/skills/microi-microservice/references/runtime-delivery.md +282 -282
- package/skills/microi-solution-quotation/SKILL.md +78 -78
- package/skills/microi-sso/SKILL.md +102 -102
- package/skills/microi-sso/references/acceptance.md +1 -1
- package/skills/microi-sso/references/configuration-and-security.md +53 -53
- package/skills/microi-sso/references/inbound.md +53 -53
- package/skills/microi-sso/references/outbound.md +43 -43
- package/skills/microi-system-delivery/SKILL.md +102 -100
- package/skills/microi-system-delivery/references/context-quality.md +56 -56
- package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +11 -11
- 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 +12 -12
- package/skills/microi-system-delivery/references/progressive-03-/345/256/211/345/205/250/344/270/216/350/267/250/347/253/257/351/252/214/346/224/266.md +71 -71
- package/skills/module-engine/SKILL.md +297 -297
- package/skills/module-engine/references/module-config.md +204 -204
- package/skills/ocr-engine/SKILL.md +113 -113
- package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +10 -10
- package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +12 -12
- package/skills/performance-testing/SKILL.md +227 -227
- package/skills/playwright-e2e/SKILL.md +2 -0
- package/skills/print-engine/SKILL.md +259 -259
- package/skills/production-readonly-audit/SKILL.md +41 -41
- package/skills/report-engine/SKILL.md +83 -83
- package/skills/search-engine/SKILL.md +75 -75
- package/skills/spider-engine/SKILL.md +190 -190
- package/skills/system-observability/SKILL.md +264 -264
- package/skills/system-observability/references/memory-incident-triage.md +77 -77
- package/skills/translate-engine/SKILL.md +140 -140
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
- package/skills/ui-design/references/design-pattern-library.md +184 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/motion-and-media.md +78 -78
- package/skills/ui-design/references/product-flow-recipes.md +94 -94
- package/skills/uniapp-mall-assets/SKILL.md +176 -176
- package/skills/unity-integration/SKILL.md +178 -178
- package/skills/unity-integration/references/ai-app-delivery.md +1 -1
- package/skills/unity-integration/references/sdk-api.md +82 -82
- package/skills/unity-integration/references/toolbox-migration.md +66 -66
- package/skills/unity-integration/references/webgl-hosting.md +57 -57
- package/skills/v8-api-config/SKILL.md +400 -400
- package/skills/v8-cache-pattern/SKILL.md +320 -320
- package/skills/v8-debugging/SKILL.md +284 -284
- package/skills/v8-explorer-tree/SKILL.md +228 -228
- package/skills/v8-file-upload/SKILL.md +1 -1
- package/skills/v8-file-upload/references/cdn-alias-repair.md +13 -13
- package/skills/v8-formengine-http/SKILL.md +1 -1
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
- package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
- package/skills/v8-image-processing/SKILL.md +190 -190
- package/skills/v8-image-processing/references/api-reference.md +623 -623
- package/skills/v8-mongodb/SKILL.md +201 -201
- package/skills/v8-mq-mqtt/references/mqtt-production.md +352 -352
- package/skills/v8-saas-multi-tenant/SKILL.md +4 -0
- package/skills/v8-security/SKILL.md +2 -0
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +9 -3
- package/skills/v8-sql-query/SKILL.md +302 -302
- package/skills/v8-tcp-integration/SKILL.md +69 -2
- package/skills/v8-template-engine/SKILL.md +167 -167
- package/skills/v8-utilities/SKILL.md +1 -0
- package/skills/v8-utilities/references/client-api-index.md +143 -143
- package/skills/v8-utilities/references/platform-http-routes.md +83 -83
- package/skills/v8-utilities/references/server-api-index.md +2 -1
- package/skills/v8-workflow/references/workflow-configuration.md +49 -49
- package/skills/vision-engine/SKILL.md +160 -160
- package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
- package/skills/workspace-conventions/SKILL.md +168 -162
- 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 +2 -2
- package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +34 -34
- package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +6 -6
- package/skills/workspace-conventions/references/progressive-04-/345/267/245/344/275/234/345/214/272/344/270/216/345/271/263/345/217/260/344/270/223/351/241/271/344/277/235/351/232/234.md +188 -188
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: report-engine
|
|
3
|
-
description: Microi 报表引擎设计与验收规范。用于 Rpt_Report 虚拟表格、数据源、报表字段、查询/增删改接口替换、统计聚合、导出、行级权限和界面引擎图表。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
-
|
|
8
|
-
# Microi 报表引擎
|
|
9
|
-
|
|
10
|
-
## 定位
|
|
11
|
-
|
|
12
|
-
报表引擎以 `Rpt_Report`、报表字段配置和数据源引擎组成虚拟表格。表格展示使用报表引擎;ECharts 图表和仪表盘使用界面引擎。报表字段是虚拟字段,不能假设存在同名物理表列。
|
|
13
|
-
|
|
14
|
-
完整 AI 系统开发默认必须交付需求相关的业务统计、老板经营、领导管理报表。
|
|
15
|
-
这些决策看板基于界面引擎,读取 `../page-engine/SKILL.md`;本报表引擎负责其分页明细、
|
|
16
|
-
查询汇总表与导出,不能用一个虚拟表格或列表角标代替全部看板。菜单骨架、占位切换和指标
|
|
17
|
-
范围统一读取[菜单先行与经营报表增补要求](../microi-system-delivery/references/progressive-01-标准工作流.md#菜单先行与经营报表增补要求强制)。
|
|
18
|
-
局部修改限相关报表,只读分析不写资源;完整开发不等于生产写入授权。
|
|
19
|
-
|
|
20
|
-
## 建模顺序
|
|
21
|
-
|
|
22
|
-
1. 明确指标口径、时间粒度、维度、权限和导出上限。
|
|
23
|
-
2. 创建只读数据源(SQL/V8/JSON),使用稳定 `DataSourceKey`。
|
|
24
|
-
3. 创建报表并绑定数据源。
|
|
25
|
-
4. 配置字段 `Name/Label/Component`、查询列、排序、格式和表内编辑。
|
|
26
|
-
5. 如需写操作,为查询/新增/修改/删除分别绑定专用接口引擎。
|
|
27
|
-
6. 菜单只暴露用户需要的报表入口,配置数据范围。
|
|
28
|
-
|
|
29
|
-
## 权限与 SQL
|
|
30
|
-
|
|
31
|
-
- 报表数据源必须应用当前租户和服务端用户数据范围。菜单权限不会自动保护任意聚合 SQL。
|
|
32
|
-
- 聚合结果也可能泄露敏感信息;小样本、人员薪资、客户金额等需最小分组阈值或字段脱敏。
|
|
33
|
-
- SQL 动态值参数化,维度/排序/指标使用白名单映射,不接收原始 SQL、列名或 `GROUP BY`。
|
|
34
|
-
- 管理员专用平台表不能作为普通用户报表数据源;只读委托表只有获得真实 `Read` 授权后才能查询,`mic_page/mic_print` 继续按角色权限处理。
|
|
35
|
-
|
|
36
|
-
## 写入型报表
|
|
37
|
-
|
|
38
|
-
统计报表通常来自多表。新增、修改、删除必须调用接口引擎,在一个事务中完成校验与写入:
|
|
39
|
-
|
|
40
|
-
```js
|
|
41
|
-
var result = await V8.ApiEngine.Run('report_adjust_inventory', {
|
|
42
|
-
RowId: V8.Form.Id,
|
|
43
|
-
ExpectedVersion: V8.Form.Version,
|
|
44
|
-
Quantity: Number(V8.Form.Quantity || 0)
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
接口引擎重新校验角色、记录范围、当前版本和业务状态。前端隐藏按钮、只读字段或报表行数据不能作为授权。
|
|
49
|
-
|
|
50
|
-
## 性能
|
|
51
|
-
|
|
52
|
-
- 默认分页,限制最大页数/每页行数/导出行数。
|
|
53
|
-
- 大聚合在数据库建立合适索引或使用预聚合表;不要每次全表扫描。
|
|
54
|
-
- 缓存 Key 包含 `OsClient + ReportId + 权限主体/授权版本 + 查询参数哈希`。
|
|
55
|
-
- 导出走后台任务;生成文件放私有桶并绑定菜单、记录和字段访问上下文。
|
|
56
|
-
|
|
57
|
-
## MCP 工作流
|
|
58
|
-
|
|
59
|
-
1. `microi_get_db_schema` 读取 `Rpt_Report`、数据源、字段、菜单和业务表。
|
|
60
|
-
2. `microi_save_data_source` 保存数据源并回读。
|
|
61
|
-
3. 创建/更新报表及字段;复杂写操作先创建接口引擎。
|
|
62
|
-
4. 设置菜单与角色权限。
|
|
63
|
-
5. 用真实普通角色验收列表、筛选、汇总、详情、编辑与导出。
|
|
64
|
-
|
|
65
|
-
## 图表
|
|
66
|
-
|
|
67
|
-
界面引擎图表应调用返回稳定 `{Code, Data}` 的统计接口引擎,不在前端下载明细再聚合。统计接口设置时间范围、维度和最大点数,返回空数据时保持稳定结构。
|
|
68
|
-
|
|
69
|
-
与看板配套的明细/导出必须共享指标公式、业务状态、时间字段/时区/区间边界、比较基期和
|
|
70
|
-
部门/人员/项目等筛选条件。聚合与穿透明细分别执行当前租户和用户数据权限,不能信任前端
|
|
71
|
-
带来的老板/领导角色或任意字段名。真实零值、没有数据、未配置来源与查询失败分别表达;
|
|
72
|
-
不能把失败转成成功零值。用同一筛选的明细合计独立核对看板数值,确无明细的汇总注明限制。
|
|
73
|
-
|
|
74
|
-
## 验收清单
|
|
75
|
-
|
|
76
|
-
- [ ] 指标口径、时区和小数精度明确
|
|
77
|
-
- [ ] 当前租户与行级范围在数据库查询中生效
|
|
78
|
-
- [ ] 虚拟字段与物理字段没有混用
|
|
79
|
-
- [ ] 写操作走事务接口引擎并校验并发版本
|
|
80
|
-
- [ ] 分页、聚合、导出均有资源上限
|
|
81
|
-
- [ ] 缓存按租户和权限隔离
|
|
82
|
-
- [ ] 普通角色、无权限角色、跨租户负向测试通过
|
|
83
|
-
- [ ] 配套界面引擎看板与穿透明细/导出使用同一口径,时间边界、筛选、零/空/失败及明细对账通过
|
|
1
|
+
---
|
|
2
|
+
name: report-engine
|
|
3
|
+
description: Microi 报表引擎设计与验收规范。用于 Rpt_Report 虚拟表格、数据源、报表字段、查询/增删改接口替换、统计聚合、导出、行级权限和界面引擎图表。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
+
|
|
8
|
+
# Microi 报表引擎
|
|
9
|
+
|
|
10
|
+
## 定位
|
|
11
|
+
|
|
12
|
+
报表引擎以 `Rpt_Report`、报表字段配置和数据源引擎组成虚拟表格。表格展示使用报表引擎;ECharts 图表和仪表盘使用界面引擎。报表字段是虚拟字段,不能假设存在同名物理表列。
|
|
13
|
+
|
|
14
|
+
完整 AI 系统开发默认必须交付需求相关的业务统计、老板经营、领导管理报表。
|
|
15
|
+
这些决策看板基于界面引擎,读取 `../page-engine/SKILL.md`;本报表引擎负责其分页明细、
|
|
16
|
+
查询汇总表与导出,不能用一个虚拟表格或列表角标代替全部看板。菜单骨架、占位切换和指标
|
|
17
|
+
范围统一读取[菜单先行与经营报表增补要求](../microi-system-delivery/references/progressive-01-标准工作流.md#菜单先行与经营报表增补要求强制)。
|
|
18
|
+
局部修改限相关报表,只读分析不写资源;完整开发不等于生产写入授权。
|
|
19
|
+
|
|
20
|
+
## 建模顺序
|
|
21
|
+
|
|
22
|
+
1. 明确指标口径、时间粒度、维度、权限和导出上限。
|
|
23
|
+
2. 创建只读数据源(SQL/V8/JSON),使用稳定 `DataSourceKey`。
|
|
24
|
+
3. 创建报表并绑定数据源。
|
|
25
|
+
4. 配置字段 `Name/Label/Component`、查询列、排序、格式和表内编辑。
|
|
26
|
+
5. 如需写操作,为查询/新增/修改/删除分别绑定专用接口引擎。
|
|
27
|
+
6. 菜单只暴露用户需要的报表入口,配置数据范围。
|
|
28
|
+
|
|
29
|
+
## 权限与 SQL
|
|
30
|
+
|
|
31
|
+
- 报表数据源必须应用当前租户和服务端用户数据范围。菜单权限不会自动保护任意聚合 SQL。
|
|
32
|
+
- 聚合结果也可能泄露敏感信息;小样本、人员薪资、客户金额等需最小分组阈值或字段脱敏。
|
|
33
|
+
- SQL 动态值参数化,维度/排序/指标使用白名单映射,不接收原始 SQL、列名或 `GROUP BY`。
|
|
34
|
+
- 管理员专用平台表不能作为普通用户报表数据源;只读委托表只有获得真实 `Read` 授权后才能查询,`mic_page/mic_print` 继续按角色权限处理。
|
|
35
|
+
|
|
36
|
+
## 写入型报表
|
|
37
|
+
|
|
38
|
+
统计报表通常来自多表。新增、修改、删除必须调用接口引擎,在一个事务中完成校验与写入:
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
var result = await V8.ApiEngine.Run('report_adjust_inventory', {
|
|
42
|
+
RowId: V8.Form.Id,
|
|
43
|
+
ExpectedVersion: V8.Form.Version,
|
|
44
|
+
Quantity: Number(V8.Form.Quantity || 0)
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
接口引擎重新校验角色、记录范围、当前版本和业务状态。前端隐藏按钮、只读字段或报表行数据不能作为授权。
|
|
49
|
+
|
|
50
|
+
## 性能
|
|
51
|
+
|
|
52
|
+
- 默认分页,限制最大页数/每页行数/导出行数。
|
|
53
|
+
- 大聚合在数据库建立合适索引或使用预聚合表;不要每次全表扫描。
|
|
54
|
+
- 缓存 Key 包含 `OsClient + ReportId + 权限主体/授权版本 + 查询参数哈希`。
|
|
55
|
+
- 导出走后台任务;生成文件放私有桶并绑定菜单、记录和字段访问上下文。
|
|
56
|
+
|
|
57
|
+
## MCP 工作流
|
|
58
|
+
|
|
59
|
+
1. `microi_get_db_schema` 读取 `Rpt_Report`、数据源、字段、菜单和业务表。
|
|
60
|
+
2. `microi_save_data_source` 保存数据源并回读。
|
|
61
|
+
3. 创建/更新报表及字段;复杂写操作先创建接口引擎。
|
|
62
|
+
4. 设置菜单与角色权限。
|
|
63
|
+
5. 用真实普通角色验收列表、筛选、汇总、详情、编辑与导出。
|
|
64
|
+
|
|
65
|
+
## 图表
|
|
66
|
+
|
|
67
|
+
界面引擎图表应调用返回稳定 `{Code, Data}` 的统计接口引擎,不在前端下载明细再聚合。统计接口设置时间范围、维度和最大点数,返回空数据时保持稳定结构。
|
|
68
|
+
|
|
69
|
+
与看板配套的明细/导出必须共享指标公式、业务状态、时间字段/时区/区间边界、比较基期和
|
|
70
|
+
部门/人员/项目等筛选条件。聚合与穿透明细分别执行当前租户和用户数据权限,不能信任前端
|
|
71
|
+
带来的老板/领导角色或任意字段名。真实零值、没有数据、未配置来源与查询失败分别表达;
|
|
72
|
+
不能把失败转成成功零值。用同一筛选的明细合计独立核对看板数值,确无明细的汇总注明限制。
|
|
73
|
+
|
|
74
|
+
## 验收清单
|
|
75
|
+
|
|
76
|
+
- [ ] 指标口径、时区和小数精度明确
|
|
77
|
+
- [ ] 当前租户与行级范围在数据库查询中生效
|
|
78
|
+
- [ ] 虚拟字段与物理字段没有混用
|
|
79
|
+
- [ ] 写操作走事务接口引擎并校验并发版本
|
|
80
|
+
- [ ] 分页、聚合、导出均有资源上限
|
|
81
|
+
- [ ] 缓存按租户和权限隔离
|
|
82
|
+
- [ ] 普通角色、无权限角色、跨租户负向测试通过
|
|
83
|
+
- [ ] 配套界面引擎看板与穿透明细/导出使用同一口径,时间边界、筛选、零/空/失败及明细对账通过
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: search-engine
|
|
3
|
-
description: Microi 搜索引擎索引、同步、查询与安全规范。用于 Elasticsearch 表索引、增量同步、字段映射、SearchAfter 分页、租户与菜单数据范围、重建和多节点验收。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
-
|
|
8
|
-
# Microi SearchEngine
|
|
9
|
-
|
|
10
|
-
## 能力与事实源
|
|
11
|
-
|
|
12
|
-
搜索引擎提供建索引/全量同步、单文档新增修改删除、字段映射、查询和 `SearchAfter` 深分页。数据库仍是业务事实源,搜索索引是可重建的读模型,不能直接作为权限、余额、库存或审批状态事实。
|
|
13
|
-
|
|
14
|
-
## 租户隔离
|
|
15
|
-
|
|
16
|
-
- 索引名必须包含规范化 `OsClient` 和表标识,禁止不同租户共用无过滤索引。
|
|
17
|
-
- V8/HTTP 调用的 `OsClient` 必须由 Token/服务端上下文确定,不能信任 Query/Body。
|
|
18
|
-
- 搜索服务连接、用户名和密码只从服务端 SaaS 配置读取,不进入前端 `SysConfig`、V8 返回或日志。
|
|
19
|
-
|
|
20
|
-
## 索引流程
|
|
21
|
-
|
|
22
|
-
1. 读取 `diy_table/diy_field` 确定可搜索字段、类型和分词需求。
|
|
23
|
-
2. 先扩展索引映射,再开始双写/增量同步。
|
|
24
|
-
3. 全量回填使用稳定游标或主键分页,记录 checkpoint。
|
|
25
|
-
4. 对账数据库数量、抽样字段和删除记录。
|
|
26
|
-
5. 切换读流量后保留旧索引回滚窗口。
|
|
27
|
-
|
|
28
|
-
可用的服务端方法包括 `AsyncIndex`、`AsyncTableDataToIndex`、`AddDocument`、`UpdateDocument`、`DeleteDocument`、`AddField`、`GetSearchResponse`。
|
|
29
|
-
|
|
30
|
-
## 查询安全
|
|
31
|
-
|
|
32
|
-
- 用户关键词作为值参数,不允许决定索引名、任意字段、脚本或原始 DSL。
|
|
33
|
-
- 排序字段从白名单映射;限制 `PageSize`、高亮长度和聚合桶数量。
|
|
34
|
-
- 普通用户的菜单 `SqlWhere`/行级范围不会天然出现在 Elasticsearch 查询中。必须将服务端计算出的允许记录范围同步为可过滤字段,或先取得授权 Id 集合再查询;不能搜索后再在前端过滤。
|
|
35
|
-
- 敏感字段不入索引,或使用独立受控索引;日志只记录 trace id、耗时和计数。
|
|
36
|
-
|
|
37
|
-
## 同步可靠性
|
|
38
|
-
|
|
39
|
-
数据库写成功、索引写失败时使用 outbox 事件,`EventId` 全局唯一。消费端按事件 Id 幂等;删除使用 tombstone。索引更新失败不能回滚已经提交的业务事务,应告警并重试。
|
|
40
|
-
|
|
41
|
-
全量重建和增量消费可能在多个节点同时运行,需分布式租约与 checkpoint 条件更新;本机静态标志不能作为“正在重建”的事实。
|
|
42
|
-
|
|
43
|
-
## 查询示例
|
|
44
|
-
|
|
45
|
-
```csharp
|
|
46
|
-
var result = await search.GetSearchResponse(new MicroiSearchEngineParam
|
|
47
|
-
{
|
|
48
|
-
OsClient = osClient,
|
|
49
|
-
TableName = "Diy_Product",
|
|
50
|
-
Keyword = keyword,
|
|
51
|
-
PageSize = Math.Min(pageSize, 100),
|
|
52
|
-
Sorts = new List<MicroiSearchEngineSortModel>
|
|
53
|
-
{
|
|
54
|
-
new MicroiSearchEngineSortModel { Field = "UpdateTime", Order = "desc" }
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
字段名与排序必须在进入此对象前经过服务端白名单。
|
|
60
|
-
|
|
61
|
-
## MCP/交付流程
|
|
62
|
-
|
|
63
|
-
- 先用 `microi_get_db_schema` 和菜单元数据确认字段与权限。
|
|
64
|
-
- 搜索配置写入后回读实际索引名、字段映射和租户连接。
|
|
65
|
-
- 用管理员、普通有权限用户、无权限用户和另一个租户验收。
|
|
66
|
-
- 覆盖全量重建中断、重复事件、删除、滚动升级、搜索服务短暂故障。
|
|
67
|
-
|
|
68
|
-
## 验收清单
|
|
69
|
-
|
|
70
|
-
- [ ] 索引按租户隔离,跨租户搜索为零
|
|
71
|
-
- [ ] 菜单/行级范围在查询前生效
|
|
72
|
-
- [ ] 字段、排序、分页、聚合均有白名单和上限
|
|
73
|
-
- [ ] 数据库与索引可对账、可重建
|
|
74
|
-
- [ ] outbox 重试幂等,无永久漏同步
|
|
75
|
-
- [ ] 密钥和敏感字段不进入前端/日志/索引
|
|
1
|
+
---
|
|
2
|
+
name: search-engine
|
|
3
|
+
description: Microi 搜索引擎索引、同步、查询与安全规范。用于 Elasticsearch 表索引、增量同步、字段映射、SearchAfter 分页、租户与菜单数据范围、重建和多节点验收。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
+
|
|
8
|
+
# Microi SearchEngine
|
|
9
|
+
|
|
10
|
+
## 能力与事实源
|
|
11
|
+
|
|
12
|
+
搜索引擎提供建索引/全量同步、单文档新增修改删除、字段映射、查询和 `SearchAfter` 深分页。数据库仍是业务事实源,搜索索引是可重建的读模型,不能直接作为权限、余额、库存或审批状态事实。
|
|
13
|
+
|
|
14
|
+
## 租户隔离
|
|
15
|
+
|
|
16
|
+
- 索引名必须包含规范化 `OsClient` 和表标识,禁止不同租户共用无过滤索引。
|
|
17
|
+
- V8/HTTP 调用的 `OsClient` 必须由 Token/服务端上下文确定,不能信任 Query/Body。
|
|
18
|
+
- 搜索服务连接、用户名和密码只从服务端 SaaS 配置读取,不进入前端 `SysConfig`、V8 返回或日志。
|
|
19
|
+
|
|
20
|
+
## 索引流程
|
|
21
|
+
|
|
22
|
+
1. 读取 `diy_table/diy_field` 确定可搜索字段、类型和分词需求。
|
|
23
|
+
2. 先扩展索引映射,再开始双写/增量同步。
|
|
24
|
+
3. 全量回填使用稳定游标或主键分页,记录 checkpoint。
|
|
25
|
+
4. 对账数据库数量、抽样字段和删除记录。
|
|
26
|
+
5. 切换读流量后保留旧索引回滚窗口。
|
|
27
|
+
|
|
28
|
+
可用的服务端方法包括 `AsyncIndex`、`AsyncTableDataToIndex`、`AddDocument`、`UpdateDocument`、`DeleteDocument`、`AddField`、`GetSearchResponse`。
|
|
29
|
+
|
|
30
|
+
## 查询安全
|
|
31
|
+
|
|
32
|
+
- 用户关键词作为值参数,不允许决定索引名、任意字段、脚本或原始 DSL。
|
|
33
|
+
- 排序字段从白名单映射;限制 `PageSize`、高亮长度和聚合桶数量。
|
|
34
|
+
- 普通用户的菜单 `SqlWhere`/行级范围不会天然出现在 Elasticsearch 查询中。必须将服务端计算出的允许记录范围同步为可过滤字段,或先取得授权 Id 集合再查询;不能搜索后再在前端过滤。
|
|
35
|
+
- 敏感字段不入索引,或使用独立受控索引;日志只记录 trace id、耗时和计数。
|
|
36
|
+
|
|
37
|
+
## 同步可靠性
|
|
38
|
+
|
|
39
|
+
数据库写成功、索引写失败时使用 outbox 事件,`EventId` 全局唯一。消费端按事件 Id 幂等;删除使用 tombstone。索引更新失败不能回滚已经提交的业务事务,应告警并重试。
|
|
40
|
+
|
|
41
|
+
全量重建和增量消费可能在多个节点同时运行,需分布式租约与 checkpoint 条件更新;本机静态标志不能作为“正在重建”的事实。
|
|
42
|
+
|
|
43
|
+
## 查询示例
|
|
44
|
+
|
|
45
|
+
```csharp
|
|
46
|
+
var result = await search.GetSearchResponse(new MicroiSearchEngineParam
|
|
47
|
+
{
|
|
48
|
+
OsClient = osClient,
|
|
49
|
+
TableName = "Diy_Product",
|
|
50
|
+
Keyword = keyword,
|
|
51
|
+
PageSize = Math.Min(pageSize, 100),
|
|
52
|
+
Sorts = new List<MicroiSearchEngineSortModel>
|
|
53
|
+
{
|
|
54
|
+
new MicroiSearchEngineSortModel { Field = "UpdateTime", Order = "desc" }
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
字段名与排序必须在进入此对象前经过服务端白名单。
|
|
60
|
+
|
|
61
|
+
## MCP/交付流程
|
|
62
|
+
|
|
63
|
+
- 先用 `microi_get_db_schema` 和菜单元数据确认字段与权限。
|
|
64
|
+
- 搜索配置写入后回读实际索引名、字段映射和租户连接。
|
|
65
|
+
- 用管理员、普通有权限用户、无权限用户和另一个租户验收。
|
|
66
|
+
- 覆盖全量重建中断、重复事件、删除、滚动升级、搜索服务短暂故障。
|
|
67
|
+
|
|
68
|
+
## 验收清单
|
|
69
|
+
|
|
70
|
+
- [ ] 索引按租户隔离,跨租户搜索为零
|
|
71
|
+
- [ ] 菜单/行级范围在查询前生效
|
|
72
|
+
- [ ] 字段、排序、分页、聚合均有白名单和上限
|
|
73
|
+
- [ ] 数据库与索引可对账、可重建
|
|
74
|
+
- [ ] outbox 重试幂等,无永久漏同步
|
|
75
|
+
- [ ] 密钥和敏感字段不进入前端/日志/索引
|