@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.
Files changed (122) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/assets/build-meta.json +5 -5
  7. package/cordis.patch.yml +1 -1
  8. package/package.json +1 -1
  9. package/scripts/mcp-server.js +116 -116
  10. package/scripts/microi-cli.js +1 -1
  11. package/scripts/microi-skills.meta.json +312 -312
  12. package/skills/.microi-skills-version.json +2 -2
  13. package/skills/.progressive-disclosure-manifest.json +45 -45
  14. package/skills/README.md +1 -1
  15. package/skills/ai-engine/SKILL.md +2 -2
  16. package/skills/ai-engine/references/ai-employees.md +48 -48
  17. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  18. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +2 -2
  19. package/skills/app-store/SKILL.md +531 -531
  20. package/skills/business-blueprint/SKILL.md +193 -193
  21. package/skills/datasource-engine/SKILL.md +93 -93
  22. package/skills/dos-orm/SKILL.md +105 -105
  23. package/skills/dos-orm/references/api-reference.md +229 -229
  24. package/skills/email-engine/SKILL.md +81 -81
  25. package/skills/email-engine/references/v8-email.md +34 -34
  26. package/skills/job-engine/SKILL.md +176 -176
  27. package/skills/message-notification/SKILL.md +156 -156
  28. package/skills/message-notification/references/contracts.md +102 -102
  29. package/skills/microi/SKILL.md +14 -14
  30. package/skills/microi-ai-app-auth.js +1 -1
  31. package/skills/microi-ai-application/SKILL.md +115 -115
  32. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  33. 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
  34. 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
  35. 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
  36. package/skills/microi-codex/SKILL.md +130 -130
  37. package/skills/microi-codex-installer/SKILL.md +1 -1
  38. package/skills/microi-datasource-mapping/SKILL.md +131 -122
  39. package/skills/microi-db-schema/SKILL.md +175 -175
  40. package/skills/microi-db-schema/references/core-tables.md +695 -695
  41. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  42. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  43. package/skills/microi-db-schema/references/schema.md +646 -646
  44. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  45. package/skills/microi-deployment/SKILL.md +260 -260
  46. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  47. package/skills/microi-docs-coverage/SKILL.md +133 -133
  48. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  49. package/skills/microi-form-engine/SKILL.md +338 -338
  50. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  51. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  52. package/skills/microi-left-right-layout/SKILL.md +141 -141
  53. package/skills/microi-microservice/SKILL.md +6 -1
  54. package/skills/microi-microservice/references/runtime-delivery.md +282 -282
  55. package/skills/microi-solution-quotation/SKILL.md +78 -78
  56. package/skills/microi-sso/SKILL.md +102 -102
  57. package/skills/microi-sso/references/acceptance.md +1 -1
  58. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  59. package/skills/microi-sso/references/inbound.md +53 -53
  60. package/skills/microi-sso/references/outbound.md +43 -43
  61. package/skills/microi-system-delivery/SKILL.md +102 -100
  62. package/skills/microi-system-delivery/references/context-quality.md +56 -56
  63. 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
  64. 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
  65. 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
  66. package/skills/module-engine/SKILL.md +297 -297
  67. package/skills/module-engine/references/module-config.md +204 -204
  68. package/skills/ocr-engine/SKILL.md +113 -113
  69. 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
  70. 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
  71. package/skills/performance-testing/SKILL.md +227 -227
  72. package/skills/playwright-e2e/SKILL.md +2 -0
  73. package/skills/print-engine/SKILL.md +259 -259
  74. package/skills/production-readonly-audit/SKILL.md +41 -41
  75. package/skills/report-engine/SKILL.md +83 -83
  76. package/skills/search-engine/SKILL.md +75 -75
  77. package/skills/spider-engine/SKILL.md +190 -190
  78. package/skills/system-observability/SKILL.md +264 -264
  79. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  80. package/skills/translate-engine/SKILL.md +140 -140
  81. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  82. package/skills/ui-design/references/design-pattern-library.md +184 -184
  83. package/skills/ui-design/references/mci-design-contract.md +163 -163
  84. package/skills/ui-design/references/motion-and-media.md +78 -78
  85. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  86. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  87. package/skills/unity-integration/SKILL.md +178 -178
  88. package/skills/unity-integration/references/ai-app-delivery.md +1 -1
  89. package/skills/unity-integration/references/sdk-api.md +82 -82
  90. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  91. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  92. package/skills/v8-api-config/SKILL.md +400 -400
  93. package/skills/v8-cache-pattern/SKILL.md +320 -320
  94. package/skills/v8-debugging/SKILL.md +284 -284
  95. package/skills/v8-explorer-tree/SKILL.md +228 -228
  96. package/skills/v8-file-upload/SKILL.md +1 -1
  97. package/skills/v8-file-upload/references/cdn-alias-repair.md +13 -13
  98. package/skills/v8-formengine-http/SKILL.md +1 -1
  99. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  100. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  101. package/skills/v8-image-processing/SKILL.md +190 -190
  102. package/skills/v8-image-processing/references/api-reference.md +623 -623
  103. package/skills/v8-mongodb/SKILL.md +201 -201
  104. package/skills/v8-mq-mqtt/references/mqtt-production.md +352 -352
  105. package/skills/v8-saas-multi-tenant/SKILL.md +4 -0
  106. package/skills/v8-security/SKILL.md +2 -0
  107. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +9 -3
  108. package/skills/v8-sql-query/SKILL.md +302 -302
  109. package/skills/v8-tcp-integration/SKILL.md +69 -2
  110. package/skills/v8-template-engine/SKILL.md +167 -167
  111. package/skills/v8-utilities/SKILL.md +1 -0
  112. package/skills/v8-utilities/references/client-api-index.md +143 -143
  113. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  114. package/skills/v8-utilities/references/server-api-index.md +2 -1
  115. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  116. package/skills/vision-engine/SKILL.md +160 -160
  117. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  118. package/skills/workspace-conventions/SKILL.md +168 -162
  119. 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
  120. 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
  121. 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
  122. 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,143 +1,143 @@
1
- # 前端 V8 API 索引
2
-
3
- 本索引对应 `microi.doc/docs/doc/v8-engine/v8-client.md` 和当前
4
- `Microi.Client` V8 定义。业务表字段如 `V8.Form.OrderNo` 不属于平台函数,
5
- 应按实际表结构理解。
6
-
7
- ## 上下文与状态
8
-
9
- | API/变量 | 说明 |
10
- |---|---|
11
- | `V8.Form`、`V8.OldForm` | 当前表单与已加载旧值 |
12
- | `V8.FormMode` | `Add`、`Edit`、`View` |
13
- | `V8.FormSubmitAction` | 提交动作 |
14
- | `V8.FormOutAction`、`V8.FormOutAfterAction` | 表单关闭/保存后的动作状态 |
15
- | `V8.LoadMode` | `Design` 或真实运行模式 |
16
- | `V8.EventName`、`V8.Event`、`V8.KeyCode` | 当前事件、原生事件和键码 |
17
- | `V8.ThisValue`、`V8.OldValue` | 当前字段值;`OldValue` 主要用于表格行内事件 |
18
- | `V8.TableId`、`V8.TableName`、`V8.TableModel` | 当前表/表单元数据 |
19
- | `V8.Row`、`V8.Rows`、`V8.RowIndex`、`V8.TableRowId` | 行事件上下文 |
20
- | `V8.TableRowSelected`、`V8.SelectedData` | 批量选中行,兼容别名 |
21
- | `V8.CurrentTableData` | 当前页表格数据 |
22
- | `V8.SearchParam` | 当前搜索快照 |
23
- | `V8.SysMenuId`、`V8.SysMenuModel` | 当前授权菜单 |
24
- | `V8.CurrentUser`、`V8.CurrentToken` | 当前用户和 Token;不得输出到日志/URL |
25
- | `V8.OsClient`、`V8.SysConfig`、`V8.ClientType` | 租户、客户端配置和终端类型 |
26
- | `V8.DataAppend` | 打开表单、列表或弹窗时传入的附加数据 |
27
- | `V8.ParentV8`、`V8.ParentForm` | 子表/弹窗访问父上下文 |
28
- | `V8.ParentV8.Form` | 读取父级表单数据 |
29
- | `V8.ParentV8.FormSet(field,value)` | 从子表调用父表字段赋值与联动 |
30
- | `V8.ApiReplace` | 当前表单/列表接口替换配置,只读使用 |
31
- | `V8.Result` | 模板或事件输出槽 |
32
-
33
- ## 表单与字段
34
-
35
- | API | 说明 |
36
- |---|---|
37
- | `V8.FormSet(field,value)` | 设置字段值并触发相应联动 |
38
- | `V8.Field` | 当前字段模型集合 |
39
- | `V8.FieldSet(field,prop,value)` | 修改 `Visible/Required/Readonly/Data` 等属性 |
40
- | `V8.FormSubmit(options)` | 提交表单;SubmitFormV8 内不得再次调用 |
41
- | `V8.FormClose()` | 强制关闭表单 |
42
- | `V8.CloseThisDialog()` | 关闭当前宿主弹窗/微应用弹窗 |
43
- | `V8.ReloadForm()` | 重新加载当前表单 |
44
- | `V8.HideFormBtn(...)` | 隐藏表单按钮 |
45
- | `V8.HideFormTab(name)`、`V8.ShowFormTab(name)`、`V8.ClickFormTab(name)` | 页签显隐与切换 |
46
- | `V8.GetFormTabs()` | 获取当前表单页签 |
47
- | `V8.ShowTableChildHideField(child,fields)` | 强制显示子表隐藏列并刷新 |
48
- | `V8.GetChildTableData(fieldName)` | 获取指定子表数据 |
49
- | `V8.RefreshChildTable(field,row?)` | 刷新子表 |
50
-
51
- ## 列表与搜索
52
-
53
- | API | 说明 |
54
- |---|---|
55
- | `V8.RefreshTable({_PageIndex})` | 刷新当前列表 |
56
- | `V8.SearchSet(value)` | 替换当前模块搜索条件 |
57
- | `V8.SearchAppend(value)` | 追加当前模块搜索条件 |
58
- | `V8.OpenTableSetWhere(field,where)` | 设置弹出表格不可被临时搜索覆盖的固定范围 |
59
- | `V8.AppendSearchChildTable(field,value)` | 历史兼容;新代码优先 `OpenTableSetWhere` |
60
- | `V8.TableSearchSet(field,value)` | 替换指定子表/表格搜索 |
61
- | `V8.TableSearchAppend(field,value)` | 追加指定子表/表格搜索 |
62
- | `V8.TableRefresh(field,param)` | 刷新指定子表/表格 |
63
- | `V8.ClearTableSelection()` | 清空当前列表勾选 |
64
-
65
- ## 交互与导航
66
-
67
- | API | 说明 |
68
- |---|---|
69
- | `V8.Tips(msg,ok?)` | 消息提示 |
70
- | `V8.ConfirmTips(content,callback,options?)` | HTML 模式确认框,只传可信/转义内容 |
71
- | `V8.Router.Push(...)` | 站内路由 |
72
- | `V8.Window.Open(...)` | 打开窗口 |
73
- | `V8.OpenForm(...)`、`V8.OpenFormWF(...)` | 历史表单/工作流打开入口 |
74
- | `V8.OpenAnyForm(options)` | 打开任意表单 |
75
- | `V8.OpenAnyTable(options)` | 打开任意列表 |
76
- | `V8.OpenDialog(options)` | 打开主前端已注册 Vue 组件 |
77
- | `V8.OpenAppDialog(options)` | 打开已发布 MicroService 页面 |
78
- | `V8.WF.StartWork(...)`、`V8.FormWF` | 前端工作流入口/当前工作流数据 |
79
-
80
- 三个以上输入、上传、表格、步骤条、Tab 或代码编辑器使用
81
- `V8.OpenAppDialog`,不要在 V8 代码中拼大段 HTML。
82
-
83
- ## 网络与引擎
84
-
85
- | API | 说明 |
86
- |---|---|
87
- | `V8.Http.Get(options)`、`V8.Http.Post(options)`、`V8.Http.PatchResponse(options)` | 推荐前端 HTTP Promise API |
88
- | `V8.Post(...)`、`V8.Get(...)` | 历史回调 API,兼容保留 |
89
- | `V8.ApiEngine.Run(...)` | 调用接口引擎,支持 Promise/回调 |
90
- | `V8.ApiEngine.RunBackground(...)` | 提交持久后台任务 |
91
- | `V8.DataSourceEngine` | 前端数据源引擎对象 |
92
- | `V8.DataSourceEngine.Run(...)` | 运行数据源引擎;旧 `GetData` 已弃用 |
93
- | `V8.FormEngine.GetTableData(...)` | 查询列表 |
94
- | `V8.FormEngine.GetFormData(...)` | 查询单条 |
95
- | `V8.FormEngine.DelFormData(...)` | 删除;权限仍由服务端校验 |
96
-
97
- 前端 `V8.FormEngine` 真实方法以当前客户端定义为准,均可按 Promise 使用;
98
- 不要给前端方法虚构后端专用的 `GetTableDataAsync` 名称。标准前端运行时没有公开
99
- `V8.ModuleEngine`,模块关联查询使用接口引擎、数据源引擎或受控 FormEngine。
100
-
101
- ## 工具能力
102
-
103
- | API | 说明 |
104
- |---|---|
105
- | `V8.IsNull(value)` | 兼容判断 `null/undefined/''/'null'/'undefined'` |
106
- | `V8.ChineseToPinyin(text,fullPyLen,type)` | 中文转拼音 |
107
- | `V8.NewGuid()` | 前端生成 GUID |
108
- | `await V8.NewServerGuid()` | 请求服务端生成 GUID |
109
- | `V8.Base64.encode(value)` | 前端 Base64 编码 |
110
- | `V8.Base64.decode(value)` | 前端 Base64 解码 |
111
- | `V8.Base64.isValid(value)` | 判断字符串是否为有效 Base64 |
112
- | `V8._` | Underscore 实例,如 `V8._.where(...)` |
113
- | `V8.Action.GetDateTimeNow()` | 兼容的前端全局时间函数 |
114
- | `V8.AddSysLog(...)` | 前端发起系统日志记录;不得含秘密 |
115
- | `V8.SendSystemMessage(...)` | 发送站内系统消息 |
116
- | `await V8.Method.ScanCode()` | 扫码;成功值同时写入 `V8.ScanCodeRes` |
117
- | `V8.Print.*` | TSPL/CPCL/ESC-POS 蓝牙标签与小票打印,兼容 GP-M322、CC4,见蓝牙打印参考 |
118
- | `V8.Identity.GetCapabilities()` | 读取当前租户强身份能力和本人登记状态 |
119
- | `V8.Identity.CreateActionHash(value)` | 为稳定业务命令生成 SHA-256 摘要 |
120
- | `V8.Identity.RegisterPasskey(options?)` | 登记当前用户 Passkey |
121
- | `V8.Identity.Verify({Purpose,ActionHash,Method,Code?})` | 完成 Passkey、Authenticator TOTP 或严格人脸验证并取得一次性后端票据;Totp 需 6 位 Code |
122
-
123
- 扫码应优先接收 Promise 返回值;兼容代码可在调用后读取 `V8.ScanCodeRes`。
124
- `V8.Identity` 是强身份验证模块。`V8.Identity.Verify` 的成功结果不能直接授权业务;后端必须重读权威数据、重算摘要并调用 `V8.Method.ConsumeIdentityVerificationTicket`。
125
- 蓝牙打印完整 API 包含 `V8.Print.createNew`、`V8.Print.createNewESC`、
126
- `V8.Print.OpenBluetoothPage`、`V8.Print.isConnected`、
127
- `V8.Print.reconnect`、`V8.Print.getConnectionState`、`V8.Print.subscribeConnection`、
128
- `V8.Print.getPrinterProfile`、`V8.Print.setPrinterProfile`、
129
- `V8.Print.prepareSend`、`V8.Print.Send`、`V8.Print.setOneTimeData`、
130
- `V8.Print.setPrinterNum`、`V8.Print.disconnect` 和
131
- `V8.Print.BLEInformation`。其中 `Send` 依赖 `prepareSend` 设置的共享分包游标,
132
- 只作内部状态机入口;业务代码必须调用并 `await prepareSend`。当前挂载范围、连接
133
- 真实性、佳博原 TSPL 回归、CC4 CPCL 适配、Android SPP 与串行约束见
134
- [`bluetooth-print.md`](../../v8-frontend-events/references/bluetooth-print.md),TSC/ESC
135
- 完整方法见
136
- [`bluetooth-print-api.md`](../../v8-frontend-events/references/bluetooth-print-api.md)。
137
-
138
- ## 主前端源码帮助对象
139
-
140
- `DiyCommon.GetApiBase()` 是 `Microi.Client` 主前端源码内部取得 API 根地址的帮助
141
- 方法,不属于租户前端 V8 的稳定公开对象。V8 代码优先使用受控 `V8.Http` 和
142
- `V8.SysConfig.ApiBase`;MicroService 从宿主数据读取 `apiBase`,不要假设子应用
143
- 全局存在 `DiyCommon`。
1
+ # 前端 V8 API 索引
2
+
3
+ 本索引对应 `microi.doc/docs/doc/v8-engine/v8-client.md` 和当前
4
+ `Microi.Client` V8 定义。业务表字段如 `V8.Form.OrderNo` 不属于平台函数,
5
+ 应按实际表结构理解。
6
+
7
+ ## 上下文与状态
8
+
9
+ | API/变量 | 说明 |
10
+ |---|---|
11
+ | `V8.Form`、`V8.OldForm` | 当前表单与已加载旧值 |
12
+ | `V8.FormMode` | `Add`、`Edit`、`View` |
13
+ | `V8.FormSubmitAction` | 提交动作 |
14
+ | `V8.FormOutAction`、`V8.FormOutAfterAction` | 表单关闭/保存后的动作状态 |
15
+ | `V8.LoadMode` | `Design` 或真实运行模式 |
16
+ | `V8.EventName`、`V8.Event`、`V8.KeyCode` | 当前事件、原生事件和键码 |
17
+ | `V8.ThisValue`、`V8.OldValue` | 当前字段值;`OldValue` 主要用于表格行内事件 |
18
+ | `V8.TableId`、`V8.TableName`、`V8.TableModel` | 当前表/表单元数据 |
19
+ | `V8.Row`、`V8.Rows`、`V8.RowIndex`、`V8.TableRowId` | 行事件上下文 |
20
+ | `V8.TableRowSelected`、`V8.SelectedData` | 批量选中行,兼容别名 |
21
+ | `V8.CurrentTableData` | 当前页表格数据 |
22
+ | `V8.SearchParam` | 当前搜索快照 |
23
+ | `V8.SysMenuId`、`V8.SysMenuModel` | 当前授权菜单 |
24
+ | `V8.CurrentUser`、`V8.CurrentToken` | 当前用户和 Token;不得输出到日志/URL |
25
+ | `V8.OsClient`、`V8.SysConfig`、`V8.ClientType` | 租户、客户端配置和终端类型 |
26
+ | `V8.DataAppend` | 打开表单、列表或弹窗时传入的附加数据 |
27
+ | `V8.ParentV8`、`V8.ParentForm` | 子表/弹窗访问父上下文 |
28
+ | `V8.ParentV8.Form` | 读取父级表单数据 |
29
+ | `V8.ParentV8.FormSet(field,value)` | 从子表调用父表字段赋值与联动 |
30
+ | `V8.ApiReplace` | 当前表单/列表接口替换配置,只读使用 |
31
+ | `V8.Result` | 模板或事件输出槽 |
32
+
33
+ ## 表单与字段
34
+
35
+ | API | 说明 |
36
+ |---|---|
37
+ | `V8.FormSet(field,value)` | 设置字段值并触发相应联动 |
38
+ | `V8.Field` | 当前字段模型集合 |
39
+ | `V8.FieldSet(field,prop,value)` | 修改 `Visible/Required/Readonly/Data` 等属性 |
40
+ | `V8.FormSubmit(options)` | 提交表单;SubmitFormV8 内不得再次调用 |
41
+ | `V8.FormClose()` | 强制关闭表单 |
42
+ | `V8.CloseThisDialog()` | 关闭当前宿主弹窗/微应用弹窗 |
43
+ | `V8.ReloadForm()` | 重新加载当前表单 |
44
+ | `V8.HideFormBtn(...)` | 隐藏表单按钮 |
45
+ | `V8.HideFormTab(name)`、`V8.ShowFormTab(name)`、`V8.ClickFormTab(name)` | 页签显隐与切换 |
46
+ | `V8.GetFormTabs()` | 获取当前表单页签 |
47
+ | `V8.ShowTableChildHideField(child,fields)` | 强制显示子表隐藏列并刷新 |
48
+ | `V8.GetChildTableData(fieldName)` | 获取指定子表数据 |
49
+ | `V8.RefreshChildTable(field,row?)` | 刷新子表 |
50
+
51
+ ## 列表与搜索
52
+
53
+ | API | 说明 |
54
+ |---|---|
55
+ | `V8.RefreshTable({_PageIndex})` | 刷新当前列表 |
56
+ | `V8.SearchSet(value)` | 替换当前模块搜索条件 |
57
+ | `V8.SearchAppend(value)` | 追加当前模块搜索条件 |
58
+ | `V8.OpenTableSetWhere(field,where)` | 设置弹出表格不可被临时搜索覆盖的固定范围 |
59
+ | `V8.AppendSearchChildTable(field,value)` | 历史兼容;新代码优先 `OpenTableSetWhere` |
60
+ | `V8.TableSearchSet(field,value)` | 替换指定子表/表格搜索 |
61
+ | `V8.TableSearchAppend(field,value)` | 追加指定子表/表格搜索 |
62
+ | `V8.TableRefresh(field,param)` | 刷新指定子表/表格 |
63
+ | `V8.ClearTableSelection()` | 清空当前列表勾选 |
64
+
65
+ ## 交互与导航
66
+
67
+ | API | 说明 |
68
+ |---|---|
69
+ | `V8.Tips(msg,ok?)` | 消息提示 |
70
+ | `V8.ConfirmTips(content,callback,options?)` | HTML 模式确认框,只传可信/转义内容 |
71
+ | `V8.Router.Push(...)` | 站内路由 |
72
+ | `V8.Window.Open(...)` | 打开窗口 |
73
+ | `V8.OpenForm(...)`、`V8.OpenFormWF(...)` | 历史表单/工作流打开入口 |
74
+ | `V8.OpenAnyForm(options)` | 打开任意表单 |
75
+ | `V8.OpenAnyTable(options)` | 打开任意列表 |
76
+ | `V8.OpenDialog(options)` | 打开主前端已注册 Vue 组件 |
77
+ | `V8.OpenAppDialog(options)` | 打开已发布 MicroService 页面 |
78
+ | `V8.WF.StartWork(...)`、`V8.FormWF` | 前端工作流入口/当前工作流数据 |
79
+
80
+ 三个以上输入、上传、表格、步骤条、Tab 或代码编辑器使用
81
+ `V8.OpenAppDialog`,不要在 V8 代码中拼大段 HTML。
82
+
83
+ ## 网络与引擎
84
+
85
+ | API | 说明 |
86
+ |---|---|
87
+ | `V8.Http.Get(options)`、`V8.Http.Post(options)`、`V8.Http.PatchResponse(options)` | 推荐前端 HTTP Promise API |
88
+ | `V8.Post(...)`、`V8.Get(...)` | 历史回调 API,兼容保留 |
89
+ | `V8.ApiEngine.Run(...)` | 调用接口引擎,支持 Promise/回调 |
90
+ | `V8.ApiEngine.RunBackground(...)` | 提交持久后台任务 |
91
+ | `V8.DataSourceEngine` | 前端数据源引擎对象 |
92
+ | `V8.DataSourceEngine.Run(...)` | 运行数据源引擎;旧 `GetData` 已弃用 |
93
+ | `V8.FormEngine.GetTableData(...)` | 查询列表 |
94
+ | `V8.FormEngine.GetFormData(...)` | 查询单条 |
95
+ | `V8.FormEngine.DelFormData(...)` | 删除;权限仍由服务端校验 |
96
+
97
+ 前端 `V8.FormEngine` 真实方法以当前客户端定义为准,均可按 Promise 使用;
98
+ 不要给前端方法虚构后端专用的 `GetTableDataAsync` 名称。标准前端运行时没有公开
99
+ `V8.ModuleEngine`,模块关联查询使用接口引擎、数据源引擎或受控 FormEngine。
100
+
101
+ ## 工具能力
102
+
103
+ | API | 说明 |
104
+ |---|---|
105
+ | `V8.IsNull(value)` | 兼容判断 `null/undefined/''/'null'/'undefined'` |
106
+ | `V8.ChineseToPinyin(text,fullPyLen,type)` | 中文转拼音 |
107
+ | `V8.NewGuid()` | 前端生成 GUID |
108
+ | `await V8.NewServerGuid()` | 请求服务端生成 GUID |
109
+ | `V8.Base64.encode(value)` | 前端 Base64 编码 |
110
+ | `V8.Base64.decode(value)` | 前端 Base64 解码 |
111
+ | `V8.Base64.isValid(value)` | 判断字符串是否为有效 Base64 |
112
+ | `V8._` | Underscore 实例,如 `V8._.where(...)` |
113
+ | `V8.Action.GetDateTimeNow()` | 兼容的前端全局时间函数 |
114
+ | `V8.AddSysLog(...)` | 前端发起系统日志记录;不得含秘密 |
115
+ | `V8.SendSystemMessage(...)` | 发送站内系统消息 |
116
+ | `await V8.Method.ScanCode()` | 扫码;成功值同时写入 `V8.ScanCodeRes` |
117
+ | `V8.Print.*` | TSPL/CPCL/ESC-POS 蓝牙标签与小票打印,兼容 GP-M322、CC4,见蓝牙打印参考 |
118
+ | `V8.Identity.GetCapabilities()` | 读取当前租户强身份能力和本人登记状态 |
119
+ | `V8.Identity.CreateActionHash(value)` | 为稳定业务命令生成 SHA-256 摘要 |
120
+ | `V8.Identity.RegisterPasskey(options?)` | 登记当前用户 Passkey |
121
+ | `V8.Identity.Verify({Purpose,ActionHash,Method,Code?})` | 完成 Passkey、Authenticator TOTP 或严格人脸验证并取得一次性后端票据;Totp 需 6 位 Code |
122
+
123
+ 扫码应优先接收 Promise 返回值;兼容代码可在调用后读取 `V8.ScanCodeRes`。
124
+ `V8.Identity` 是强身份验证模块。`V8.Identity.Verify` 的成功结果不能直接授权业务;后端必须重读权威数据、重算摘要并调用 `V8.Method.ConsumeIdentityVerificationTicket`。
125
+ 蓝牙打印完整 API 包含 `V8.Print.createNew`、`V8.Print.createNewESC`、
126
+ `V8.Print.OpenBluetoothPage`、`V8.Print.isConnected`、
127
+ `V8.Print.reconnect`、`V8.Print.getConnectionState`、`V8.Print.subscribeConnection`、
128
+ `V8.Print.getPrinterProfile`、`V8.Print.setPrinterProfile`、
129
+ `V8.Print.prepareSend`、`V8.Print.Send`、`V8.Print.setOneTimeData`、
130
+ `V8.Print.setPrinterNum`、`V8.Print.disconnect` 和
131
+ `V8.Print.BLEInformation`。其中 `Send` 依赖 `prepareSend` 设置的共享分包游标,
132
+ 只作内部状态机入口;业务代码必须调用并 `await prepareSend`。当前挂载范围、连接
133
+ 真实性、佳博原 TSPL 回归、CC4 CPCL 适配、Android SPP 与串行约束见
134
+ [`bluetooth-print.md`](../../v8-frontend-events/references/bluetooth-print.md),TSC/ESC
135
+ 完整方法见
136
+ [`bluetooth-print-api.md`](../../v8-frontend-events/references/bluetooth-print-api.md)。
137
+
138
+ ## 主前端源码帮助对象
139
+
140
+ `DiyCommon.GetApiBase()` 是 `Microi.Client` 主前端源码内部取得 API 根地址的帮助
141
+ 方法,不属于租户前端 V8 的稳定公开对象。V8 代码优先使用受控 `V8.Http` 和
142
+ `V8.SysConfig.ApiBase`;MicroService 从宿主数据读取 `apiBase`,不要假设子应用
143
+ 全局存在 `DiyCommon`。
@@ -1,83 +1,83 @@
1
- # Microi 平台 HTTP 路由索引
2
-
3
- 本索引用于识别中文官网示例中的平台路由。路由可用不等于当前用户有权限;始终
4
- 传当前租户 `OsClient`,使用受支持的 Token/访问密钥,并让服务端重新做菜单、
5
- 表单、字段和数据范围校验。
6
-
7
- ## 接口引擎
8
-
9
- | 路由 | 用途 |
10
- |---|---|
11
- | `POST /apiengine/{ApiEngineKey}` | 推荐的稳定接口引擎入口 |
12
- | `POST /api/ApiEngine/Run` | 仅旧客户端兼容,Body 传 `ApiEngineKey`;新增固定业务禁止使用 |
13
- | `/apiengine/{ApiEngineKey}--OsClient--{OsClient}--` | 仅用于确实无法设置 Header/Form/Query 的 GET/HEAD 场景 |
14
-
15
- 普通请求优先在唯一 `osclient` Header 传租户,也可在 Query/Form/JSON 中冗余;
16
- 固定业务必须使用真实引擎动态地址或唯一 `ApiAddress`,使日志、流量、审计和限流
17
- 直接按引擎归因;旧通用入口只能由显式 `RunLegacy` 调用。
18
- 不要无脑把特殊租户后缀加到每条 URL。官网中的
19
- `/apiengine/test1`、`/apiengine/get-product-list`、打印、支付和 Excel demo
20
- 都是业务 `ApiEngineKey` 示例,不是固定平台接口。
21
-
22
- ## FormEngine
23
-
24
- 标准 Controller 路由:
25
-
26
- | 路由 | 用途 |
27
- |---|---|
28
- | `POST /api/formengine/GetTableData` | 查询列表 |
29
- | `POST /api/formengine/GetFormData` | 查询单条 |
30
- | `POST /api/formengine/AddFormData` | 新增 |
31
- | `POST /api/formengine/UptFormData` | 更新 |
32
- | `POST /api/formengine/DelFormData` | 删除 |
33
- | `POST /api/formengine/UptFormDataByWhere` | 按条件更新 |
34
- | `POST /api/formengine/DelFormDataByWhere` | 按条件删除 |
35
- | `POST /api/formengine/GetTableDataAnonymous` | 表配置允许时匿名查列表 |
36
- | `POST /api/formengine/GetFormDataAnonymous` | 表配置允许时匿名查单条 |
37
- | `POST /api/formengine/AddFormDataAnonymous` | 表配置允许时匿名新增 |
38
-
39
- 动态路由还支持
40
- `/api/formengine/{operation}-{FormEngineKey}`(兼容无连字符操作名与连字符操作名)。
41
- 访问密钥只需获得相应表/页面和 `form:read` 等作用域,不应把每个动态 URL 加入
42
- 无条件白名单。完整调用模型见 `v8-formengine-http`。
43
-
44
- ## 文件、消息、验证码与诊断
45
-
46
- | 路由 | 用途与边界 |
47
- |---|---|
48
- | `GET /api/Captcha/getCaptcha` | 获取验证码图片;同时保存响应 `captchaid` |
49
- | `POST /api/Captcha/Recognize` | 受控验证码识别,主要供采集引擎 |
50
- | `POST /api/HDFS/Upload` | 受限文件上传;优先用平台 SDK/V8 Upload |
51
- | `POST /apiengine/platform-private-file-url` | 获取当前租户短期私有文件地址;必须携带权威资源上下文 |
52
- | `GET /api/HDFS/OpenPrivateFile` | 受权打开私有文件/Office 代理 |
53
- | `POST /api/DiyChat/SendSystemMessage` | 发送站内消息;前端优先 `V8.SendSystemMessage` |
54
- | `POST /apiengine/platform-mq` | MQ 管理入口;Body 使用 `Action=Send`,仅当前租户超级管理员 |
55
- | `GET /apiengine/platform-service-health?OsClient={OsClient}` | 新版客户端固定匿名健康契约;返回 `Data.Status=Healthy`,新二进制同时返回真实后端版本;应用包先发布时版本可暂时为空,但健康结论不失败;不查询业务表 |
56
- | `GET /api/Diagnostics/health` | 旧节点滚动升级兼容健康路由;新版客户端不以它作为主要契约 |
57
- | `GET /api/Diagnostics/liveness` | 进程存活检查,不代表已就绪接流量 |
58
-
59
- `/api/example`、`/api/example/1` 仅用于说明 `V8.Http` 的普通 Controller 地址,
60
- 不属于 Microi 固定接口。
61
-
62
- ## 管理与内部交付接口
63
-
64
- 下列路由不是普通业务 SDK:
65
-
66
- | 路由 | 限制 |
67
- |---|---|
68
- | `POST /api/DiyField/UptDiyFieldList` | 开发设计字段批量保存;需设计权限 |
69
- | `POST /api/FormEngine/ImportDiyTableRow` | 表格/子表导入;后端复核字段、外键和权限 |
70
- | `POST /api/SysUser/GetSysUserPassword` | 仅存量 DES 密码的超级管理员兼容查看;必须审计,访问密钥/普通角色拒绝 |
71
- | `POST /api/V8Engine/UploadApplicationAssetStream` | 管理员应用文件分片流式上传 |
72
- | `POST /api/V8Engine/FinalizeApplicationStreamPublish` | 校验清单并原子切换应用版本 |
73
-
74
- 应用流式发布必须使用 MCP/平台发布流程:文件逐个校验 SHA-256,版本目录不可变,
75
- 同一应用用跨节点锁串行,入口文件最后切换。不得把这两个内部路由包装成匿名上传。
76
-
77
- ## 安全检查
78
-
79
- - URL 不携带长期 Token、密码、连接串、私钥或 Redis 凭据。
80
- - 动态表名、ApiEngineKey、文件路径和 redirect 都先走白名单/授权。
81
- - 匿名路由只对明确开启的表或接口生效,仍要限流、限大小并做业务校验。
82
- - 管理接口必须核验当前租户与管理员身份,写后回读;超时先回读,不能盲目重试。
83
- - 示例 URL 中的租户、表 Key、接口 Key 和 Id 都是占位值,不复制为生产常量。
1
+ # Microi 平台 HTTP 路由索引
2
+
3
+ 本索引用于识别中文官网示例中的平台路由。路由可用不等于当前用户有权限;始终
4
+ 传当前租户 `OsClient`,使用受支持的 Token/访问密钥,并让服务端重新做菜单、
5
+ 表单、字段和数据范围校验。
6
+
7
+ ## 接口引擎
8
+
9
+ | 路由 | 用途 |
10
+ |---|---|
11
+ | `POST /apiengine/{ApiEngineKey}` | 推荐的稳定接口引擎入口 |
12
+ | `POST /api/ApiEngine/Run` | 仅旧客户端兼容,Body 传 `ApiEngineKey`;新增固定业务禁止使用 |
13
+ | `/apiengine/{ApiEngineKey}--OsClient--{OsClient}--` | 仅用于确实无法设置 Header/Form/Query 的 GET/HEAD 场景 |
14
+
15
+ 普通请求优先在唯一 `osclient` Header 传租户,也可在 Query/Form/JSON 中冗余;
16
+ 固定业务必须使用真实引擎动态地址或唯一 `ApiAddress`,使日志、流量、审计和限流
17
+ 直接按引擎归因;旧通用入口只能由显式 `RunLegacy` 调用。
18
+ 不要无脑把特殊租户后缀加到每条 URL。官网中的
19
+ `/apiengine/test1`、`/apiengine/get-product-list`、打印、支付和 Excel demo
20
+ 都是业务 `ApiEngineKey` 示例,不是固定平台接口。
21
+
22
+ ## FormEngine
23
+
24
+ 标准 Controller 路由:
25
+
26
+ | 路由 | 用途 |
27
+ |---|---|
28
+ | `POST /api/formengine/GetTableData` | 查询列表 |
29
+ | `POST /api/formengine/GetFormData` | 查询单条 |
30
+ | `POST /api/formengine/AddFormData` | 新增 |
31
+ | `POST /api/formengine/UptFormData` | 更新 |
32
+ | `POST /api/formengine/DelFormData` | 删除 |
33
+ | `POST /api/formengine/UptFormDataByWhere` | 按条件更新 |
34
+ | `POST /api/formengine/DelFormDataByWhere` | 按条件删除 |
35
+ | `POST /api/formengine/GetTableDataAnonymous` | 表配置允许时匿名查列表 |
36
+ | `POST /api/formengine/GetFormDataAnonymous` | 表配置允许时匿名查单条 |
37
+ | `POST /api/formengine/AddFormDataAnonymous` | 表配置允许时匿名新增 |
38
+
39
+ 动态路由还支持
40
+ `/api/formengine/{operation}-{FormEngineKey}`(兼容无连字符操作名与连字符操作名)。
41
+ 访问密钥只需获得相应表/页面和 `form:read` 等作用域,不应把每个动态 URL 加入
42
+ 无条件白名单。完整调用模型见 `v8-formengine-http`。
43
+
44
+ ## 文件、消息、验证码与诊断
45
+
46
+ | 路由 | 用途与边界 |
47
+ |---|---|
48
+ | `GET /api/Captcha/getCaptcha` | 获取验证码图片;同时保存响应 `captchaid` |
49
+ | `POST /api/Captcha/Recognize` | 受控验证码识别,主要供采集引擎 |
50
+ | `POST /api/HDFS/Upload` | 受限文件上传;优先用平台 SDK/V8 Upload |
51
+ | `POST /apiengine/platform-private-file-url` | 获取当前租户短期私有文件地址;必须携带权威资源上下文 |
52
+ | `GET /api/HDFS/OpenPrivateFile` | 受权打开私有文件/Office 代理 |
53
+ | `POST /api/DiyChat/SendSystemMessage` | 发送站内消息;前端优先 `V8.SendSystemMessage` |
54
+ | `POST /apiengine/platform-mq` | MQ 管理入口;Body 使用 `Action=Send`,仅当前租户超级管理员 |
55
+ | `GET /apiengine/platform-service-health?OsClient={OsClient}` | 新版客户端固定匿名健康契约;返回 `Data.Status=Healthy`,新二进制同时返回真实后端版本;应用包先发布时版本可暂时为空,但健康结论不失败;不查询业务表 |
56
+ | `GET /api/Diagnostics/health` | 旧节点滚动升级兼容健康路由;新版客户端不以它作为主要契约 |
57
+ | `GET /api/Diagnostics/liveness` | 进程存活检查,不代表已就绪接流量 |
58
+
59
+ `/api/example`、`/api/example/1` 仅用于说明 `V8.Http` 的普通 Controller 地址,
60
+ 不属于 Microi 固定接口。
61
+
62
+ ## 管理与内部交付接口
63
+
64
+ 下列路由不是普通业务 SDK:
65
+
66
+ | 路由 | 限制 |
67
+ |---|---|
68
+ | `POST /api/DiyField/UptDiyFieldList` | 开发设计字段批量保存;需设计权限 |
69
+ | `POST /api/FormEngine/ImportDiyTableRow` | 表格/子表导入;后端复核字段、外键和权限 |
70
+ | `POST /api/SysUser/GetSysUserPassword` | 仅存量 DES 密码的超级管理员兼容查看;必须审计,访问密钥/普通角色拒绝 |
71
+ | `POST /api/V8Engine/UploadApplicationAssetStream` | 管理员应用文件分片流式上传 |
72
+ | `POST /api/V8Engine/FinalizeApplicationStreamPublish` | 校验清单并原子切换应用版本 |
73
+
74
+ 应用流式发布必须使用 MCP/平台发布流程:文件逐个校验 SHA-256,版本目录不可变,
75
+ 同一应用用跨节点锁串行,入口文件最后切换。不得把这两个内部路由包装成匿名上传。
76
+
77
+ ## 安全检查
78
+
79
+ - URL 不携带长期 Token、密码、连接串、私钥或 Redis 凭据。
80
+ - 动态表名、ApiEngineKey、文件路径和 redirect 都先走白名单/授权。
81
+ - 匿名路由只对明确开启的表或接口生效,仍要限流、限大小并做业务校验。
82
+ - 管理接口必须核验当前租户与管理员身份,写后回读;超时先回读,不能盲目重试。
83
+ - 示例 URL 中的租户、表 Key、接口 Key 和 Id 都是占位值,不复制为生产常量。
@@ -115,7 +115,7 @@ MD5/SHA1 仅为兼容摘要;任何摘要都不能直接作为新密码存储
115
115
  ## 内置与自定义扩展
116
116
 
117
117
  `V8.Alipay`、`V8.AlipayV3`、`V8.WeChat`、`V8.Alidns`、`V8.System`、
118
- `V8.Image` 和 `V8.Tcp` 由当前 `Microi.V8Engine/V8Extend.cs` 注册。扩展可被裁剪或二次
118
+ `V8.Image`、`V8.Tcp` 和 `V8.IoT` 由当前 `Microi.V8Engine/V8Extend.cs` 注册。扩展可被裁剪或二次
119
119
  开发,调用前以目标部署源码和编辑器定义为准。
120
120
 
121
121
  - `V8.Alipay.CreatePay(...)` 创建支付宝支付参数;
@@ -164,6 +164,7 @@ outbox 编排放在接口引擎。密钥从当前租户 `V8.SysConfig.ServerPriv
164
164
  | 缓存 | `V8.Cache.Set/Get/Remove/Exists/KeyExist/HashSet/HashGet/HashGetAll/HashDelete/HashIncrement` |
165
165
  | HTTP | `V8.Http.Get/Post/Patch`、`GetResponse/PostResponse/PatchResponse` 及真实 `*Async` 版本 |
166
166
  | TCP | `V8.Tcp.Send/SendAsync/SendAndReceive/SendAndReceiveAsync`;原始字节与出站安全见 `v8-tcp-integration` |
167
+ | IoT 设备原连接下行 | `V8.IoT.Send({DeviceId,CommandId,FrameHex,ExpireSeconds})`;可信接口 Key、协议配置、Redis 路由及执行回执边界见 `v8-tcp-integration`,不包含厂家业务操作 |
167
168
  | 图片 | `V8.Image.Create/Merge/Overlay/Watermark/Resize/Crop/Rotate/Flip/Draw/Convert/GetInfo/CreateQRCode` |
168
169
  | Office | `V8.Office.ExportExcel/ExcelToList/ExportWord/ExportPowerPoint/SendEmail` |
169
170
  | OCR | `await V8.OCR.Recognize({...})`;服务端租户配置与调用参数隔离,详见 `ocr-engine` |
@@ -1,49 +1,49 @@
1
- # 工作流引擎配置清单
2
-
3
- 事实源:当前租户 `microi_get_db_schema`、`Microi.Core/Param/WFParam.cs`、
4
- `Microi.WorkFlow` 运行时、PC `views/workflow/component`。下表只描述审批工作流。
5
-
6
- ## 定义、节点、连线
7
-
8
- | 资源 | 可配置字段 | 用途与注意 |
9
- |---|---|---|
10
- | `wf_flowdesign` | `FlowName, Category, Description, Remark, Sort, Preview, JsonData` | 名称、分类、说明、排序、预览与画布数据;画布最终按 `wf_node/wf_line` 渲染。 |
11
- | `wf_flowdesign` | `TableId, IsEnable, Roles, StartV8, EndV8` | 关联业务 `diy_table.Id`、启用、允许发起角色、流程开始/结束事件。模块流程只选已启用项。 |
12
- | `wf_node` | `Id, NodeName, NodeType, Icon, Description, Remark, PositionLeft, PositionTop` | 稳定节点身份、类型和画布位置。坐标写为 CSS 像素;缺失时 MCP 自动布局。 |
13
- | `wf_node` | `Users, Roles, Depts, BindJobs, SameDeptApprove` | 前四者是 `[{Id,Name}]` JSON 审批人来源;`SameDeptApprove` 只进一步筛选同部门候选人,不能单独提供接收人。不能伪造跨租户 Id。 |
14
- | `wf_node` | `AllowSelectUsers, AllowAddUsers, AllowRecall, AllowHandOver, HideHandOverSelect, BackNodes, Timeout` | 上游手选下节点人员、加签、撤回、移交、隐藏移交选择、可退回节点、超时。`BackNodes` 保存 `[{Id,NodeName}]`;会签通常不启用手选。 |
15
- | `wf_node` | `CopyUsers, DisplayFields, HideFields, EditFields, FieldsConfig, FieldsConfigComponent, TableId` | 抄送 `IdName` 列表、节点表单字段权限、配置组件与业务表。字段配置应从当前表真实字段建模。 |
16
- | `wf_node` | `StartV8, StartV8Server, EndV8, EndV8Server, LineValueV8, AllowAddUserV8Code` | 前后端节点开始/结束事件、多出线选择与加签过滤代码。条件写在当前节点,不要误放在 `wf_line.V8Code`。 |
17
- | `wf_line` | `Id, FromNodeId, ToNodeId, LineName, LineValue, V8Code` | 稳定线身份、端点、展示标题、条件值与兼容线代码。标题用“起点 到 终点”;分支由源节点 `LineValueV8` 指定 `V8.NextNodeId` 或 `V8.LineValue`。 |
18
-
19
- `NodeType`:`Start` 发起;`Auto` 自动;`Business` 业务提交;
20
- `Approve` 审批;`Countersign` 会签;`End` 人工结束;`AutoEnd` 自动结束。
21
- 人工节点必须有真实接收人策略,否则流程可能创建实例却无待办。
22
-
23
- ## 实例与操作
24
-
25
- | 资源/动作 | 功能 |
26
- |---|---|
27
- | `wf_flow` | 流程实例、业务表/行、发起人、状态、最近表单 JSON、经办人与抄送汇总。`FormData` 会变化,不是原始快照。 |
28
- | `wf_work` | 每个接收人的待办/已办;按 `ReceiverId + WorkState` 确定可处理工作。 |
29
- | `wf_history` | 每一步的起止节点、连线、处理人、意见、表单与抄送历史。 |
30
- | `StartWork / StartWorkWithForm` | 发起流程;新业务行建议使用合并表单提交接口。 |
31
- | `SendWork / SendWorkWithForm` | 处理审批、业务节点、会签及后续自动节点。 |
32
- | `GetStartWFNode / GetWFNodeModel / GetNextNodeConfirmUsers` | 查询开始节点、节点属性及下一节点接收人。 |
33
- | `RecallWork / CancelFlow / HandOverWork` | 撤回、取消、移交。取消独立事务且可改写实例 `FormData`,须按业务终态复核。 |
34
- | `GetWFWork / GetWFFlow / GetWFHistory / GetWFStats / MarkCopyRead` | 待办、实例、历史、统计与抄送已读。普通用户须走身份与菜单/工作权限边界。 |
35
-
36
- ## MCP 到模块的生成顺序
37
-
38
- 1. 查询当前租户业务表、角色、用户、部门、岗位和现有流程;不要复制其它租户 Id。
39
- 2. Manifest 写入 `workflows[]` 的 `FlowDesign/Nodes/Lines`;人工节点设置人员策略,
40
- 所有连线指向同包节点,分支节点写 `LineValueV8`。
41
- 3. 模块设置 `openType:"WorkFlow"`、`table:"业务表名"`,同包流程传
42
- `flowName:"流程名称"`;现有流程传 `flowDesignId:"真实 Id"`。
43
- 4. 执行 `microi_plan_system`、`microi_check_workflow_package`,分支调用
44
- `microi_test_workflow_condition`;写入后回读三张定义表与 `sys_menu`,
45
- 用实际账号发起、处理、查看历史与流程图。
46
-
47
- `microi_check_workflow_package` 是本地结构检查;MCP 保存前还会核对当前租户的
48
- 用户、角色、部门和岗位 Id。账号是否仍有效、审批人是否有业务权限以及实际到达待办,
49
- 仍必须通过运行时与真实业务回读。
1
+ # 工作流引擎配置清单
2
+
3
+ 事实源:当前租户 `microi_get_db_schema`、`Microi.Core/Param/WFParam.cs`、
4
+ `Microi.WorkFlow` 运行时、PC `views/workflow/component`。下表只描述审批工作流。
5
+
6
+ ## 定义、节点、连线
7
+
8
+ | 资源 | 可配置字段 | 用途与注意 |
9
+ |---|---|---|
10
+ | `wf_flowdesign` | `FlowName, Category, Description, Remark, Sort, Preview, JsonData` | 名称、分类、说明、排序、预览与画布数据;画布最终按 `wf_node/wf_line` 渲染。 |
11
+ | `wf_flowdesign` | `TableId, IsEnable, Roles, StartV8, EndV8` | 关联业务 `diy_table.Id`、启用、允许发起角色、流程开始/结束事件。模块流程只选已启用项。 |
12
+ | `wf_node` | `Id, NodeName, NodeType, Icon, Description, Remark, PositionLeft, PositionTop` | 稳定节点身份、类型和画布位置。坐标写为 CSS 像素;缺失时 MCP 自动布局。 |
13
+ | `wf_node` | `Users, Roles, Depts, BindJobs, SameDeptApprove` | 前四者是 `[{Id,Name}]` JSON 审批人来源;`SameDeptApprove` 只进一步筛选同部门候选人,不能单独提供接收人。不能伪造跨租户 Id。 |
14
+ | `wf_node` | `AllowSelectUsers, AllowAddUsers, AllowRecall, AllowHandOver, HideHandOverSelect, BackNodes, Timeout` | 上游手选下节点人员、加签、撤回、移交、隐藏移交选择、可退回节点、超时。`BackNodes` 保存 `[{Id,NodeName}]`;会签通常不启用手选。 |
15
+ | `wf_node` | `CopyUsers, DisplayFields, HideFields, EditFields, FieldsConfig, FieldsConfigComponent, TableId` | 抄送 `IdName` 列表、节点表单字段权限、配置组件与业务表。字段配置应从当前表真实字段建模。 |
16
+ | `wf_node` | `StartV8, StartV8Server, EndV8, EndV8Server, LineValueV8, AllowAddUserV8Code` | 前后端节点开始/结束事件、多出线选择与加签过滤代码。条件写在当前节点,不要误放在 `wf_line.V8Code`。 |
17
+ | `wf_line` | `Id, FromNodeId, ToNodeId, LineName, LineValue, V8Code` | 稳定线身份、端点、展示标题、条件值与兼容线代码。标题用“起点 到 终点”;分支由源节点 `LineValueV8` 指定 `V8.NextNodeId` 或 `V8.LineValue`。 |
18
+
19
+ `NodeType`:`Start` 发起;`Auto` 自动;`Business` 业务提交;
20
+ `Approve` 审批;`Countersign` 会签;`End` 人工结束;`AutoEnd` 自动结束。
21
+ 人工节点必须有真实接收人策略,否则流程可能创建实例却无待办。
22
+
23
+ ## 实例与操作
24
+
25
+ | 资源/动作 | 功能 |
26
+ |---|---|
27
+ | `wf_flow` | 流程实例、业务表/行、发起人、状态、最近表单 JSON、经办人与抄送汇总。`FormData` 会变化,不是原始快照。 |
28
+ | `wf_work` | 每个接收人的待办/已办;按 `ReceiverId + WorkState` 确定可处理工作。 |
29
+ | `wf_history` | 每一步的起止节点、连线、处理人、意见、表单与抄送历史。 |
30
+ | `StartWork / StartWorkWithForm` | 发起流程;新业务行建议使用合并表单提交接口。 |
31
+ | `SendWork / SendWorkWithForm` | 处理审批、业务节点、会签及后续自动节点。 |
32
+ | `GetStartWFNode / GetWFNodeModel / GetNextNodeConfirmUsers` | 查询开始节点、节点属性及下一节点接收人。 |
33
+ | `RecallWork / CancelFlow / HandOverWork` | 撤回、取消、移交。取消独立事务且可改写实例 `FormData`,须按业务终态复核。 |
34
+ | `GetWFWork / GetWFFlow / GetWFHistory / GetWFStats / MarkCopyRead` | 待办、实例、历史、统计与抄送已读。普通用户须走身份与菜单/工作权限边界。 |
35
+
36
+ ## MCP 到模块的生成顺序
37
+
38
+ 1. 查询当前租户业务表、角色、用户、部门、岗位和现有流程;不要复制其它租户 Id。
39
+ 2. Manifest 写入 `workflows[]` 的 `FlowDesign/Nodes/Lines`;人工节点设置人员策略,
40
+ 所有连线指向同包节点,分支节点写 `LineValueV8`。
41
+ 3. 模块设置 `openType:"WorkFlow"`、`table:"业务表名"`,同包流程传
42
+ `flowName:"流程名称"`;现有流程传 `flowDesignId:"真实 Id"`。
43
+ 4. 执行 `microi_plan_system`、`microi_check_workflow_package`,分支调用
44
+ `microi_test_workflow_condition`;写入后回读三张定义表与 `sys_menu`,
45
+ 用实际账号发起、处理、查看历史与流程图。
46
+
47
+ `microi_check_workflow_package` 是本地结构检查;MCP 保存前还会核对当前租户的
48
+ 用户、角色、部门和岗位 Id。账号是否仍有效、审批人是否有业务权限以及实际到达待办,
49
+ 仍必须通过运行时与真实业务回读。