This commit is contained in:
@@ -1064,7 +1064,56 @@ const data = await jiangchang.call("方法名", { date: "2026-09-19" });
|
||||
|
||||
**多选存值与模板:** Action / CRUD 存 **`TEXT` 逗号分隔 id**(如 `1,2,5`);`{{engineIds}}` 原样替换进 CLI。多选字段在 `inputSchema` 里用 `type: "string"`(逗号串),不要用尚未稳定的 JSON array 当业务控件。
|
||||
|
||||
**多选控件(宿主策略):** 选项少(建议 ≤6)用勾选列表;选项多用字段内 Chip + 可搜索下拉(不是再开业务弹窗)。
|
||||
**多选控件(宿主策略):** 选项少(建议 ≤6)用勾选列表;选项多用字段内 Chip + 可搜索下拉(不是再开业务弹窗)。需要编号+文案的小表、翻页、本页全选时,用下面的 `paged_table`,不要再做一套控件。
|
||||
|
||||
#### 分页勾选小表(`presentation: "paged_table"`)
|
||||
|
||||
仍是 **`display_type: "lookup"`**。在已有 `lookup` 上增加 `presentation` 与可选 `page_size`。提交值与 `multiple: true` 相同:**TEXT 逗号分隔 id**。`local_sql` 与 `skill_cli` 都能用。列 Lookup(`_jiangchang_columns`)**不要**声明 `paged_table`。
|
||||
|
||||
```json
|
||||
{
|
||||
"articleIds": {
|
||||
"type": "string",
|
||||
"title": "选择文章",
|
||||
"description": "勾选要导入的文章。可翻页,可本页全选。",
|
||||
"display_type": "lookup",
|
||||
"lookup": {
|
||||
"source": "skill_cli",
|
||||
"skill": "geo-generate-article-all",
|
||||
"command": "title",
|
||||
"args": ["list-generated-json", "--platform", "toutiaohao"],
|
||||
"value_column": "id",
|
||||
"label_column": "title",
|
||||
"multiple": true,
|
||||
"presentation": "paged_table",
|
||||
"page_size": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 必填 | 说明 |
|
||||
|------|------|------|
|
||||
| `presentation` | 用小表时必填 | 只认 `"paged_table"`。省略或 `"select"` = 现有下拉 / 勾选 / Chip |
|
||||
| `page_size` | 否 | 每页条数,默认 10,限制 1–100 |
|
||||
| `multiple` | 建议 `true` | 小表按多选提交;一个都不勾时把字段放进 `required`,宿主拒绝空提交 |
|
||||
|
||||
**`skill_cli` 分页:** 宿主在 argv 后追加 `--page`、`--limit`。stdout **只有一行 JSON 对象**:`{"items":[{"id":"1","title":"标题"}],"total":42}`。`total` 是过滤后的总条数,不是本页条数。命令可以自己切片;若一次返回全量且带 `total`,宿主也会按页切开。
|
||||
|
||||
**空列表:** 分页小表把 `{"items":[],"total":0}` 且退出码 0 当成成功,界面显示「暂无可选项」。普通下拉 Lookup 仍把 0 条当成命令失败。不要为「没有数据」退出码 1,也不要往 stdout 打日志。
|
||||
|
||||
**同库过滤只有一列:** `local_sql` 的 `filter_column` / `filter_value` 只支持一个等值条件。要「已启用并且提示词齐全」这类两个条件,用一条只读 `skill_cli`,或先做成同库视图再 `local_sql`。同库、一个条件就能列出来的,优先 `local_sql`(打开即查库)。`skill_cli` 每次打开和翻页都会再起进程。
|
||||
|
||||
**只读列表命令要轻:** 供这张表调用的命令,在 `scripts/main.py` 分到该命令之前,不要 `import jiangchang_skill_core` 整包(包初始化会带上授权客户端),也不要导入 Playwright / 发布栈。0 条也打印空 `items` 后退出码 0。健康检查、真正执行任务仍走 `cli/app.py` 的 `setup_skill_logging`,不要把那条路径拆掉。
|
||||
|
||||
**反模式(在上一节之外再加):**
|
||||
|
||||
- 新造 `display_type: "paged_lookup"` 或另一套分页控件(应只加 `lookup.presentation`)
|
||||
- 列表命令在模块顶导入浏览器 / RPA / 整包 platform-kit,打开小表要等数秒
|
||||
- 没有数据时让命令失败,小表里出现英文报错而不是「暂无可选项」
|
||||
- 用两个 `filter_column` 表达 AND(宿主只认一个等值过滤)
|
||||
|
||||
形状参考:[`assets/examples/lookup-paged-table.action.example.json`](../assets/examples/lookup-paged-table.action.example.json)。
|
||||
|
||||
**可选「自动」(单选常见):** 字段不要放进 `required`;不要用 `minimum: 1` 卡死留空。宿主会省略空的可选数字参数,避免「提交的数据无效」。
|
||||
|
||||
@@ -1075,11 +1124,11 @@ const data = await jiangchang.call("方法名", { date: "2026-09-19" });
|
||||
- 标题写成「某某编号」,说明里教用户去左侧表抄 id
|
||||
- 用静态 `enum` 罗列会增长/变更的业务行(会过期)
|
||||
- 在技能里自己拼假 label 列代替宿主统一格式(难维护)
|
||||
- 另造 `lookup_multi` / 第二套 display_type(应只加 `multiple: true`)
|
||||
- 另造 `lookup_multi` / `paged_lookup` / 第二套 display_type(多选只加 `multiple: true`;小表只加 `presentation: "paged_table"`)
|
||||
- 为跨技能列表在本库维护镜像缓存表再 `local_sql`(应用 `skill_cli`)
|
||||
- 在列 `options_json` 上声明 `skill_cli`(列 Lookup **只**支持同库)
|
||||
|
||||
形状参考:[`assets/examples/lookup-action.example.json`](../assets/examples/lookup-action.example.json)、[`assets/examples/lookup-skill-cli.action.example.json`](../assets/examples/lookup-skill-cli.action.example.json)。
|
||||
形状参考:[`assets/examples/lookup-action.example.json`](../assets/examples/lookup-action.example.json)、[`assets/examples/lookup-skill-cli.action.example.json`](../assets/examples/lookup-skill-cli.action.example.json)、[`assets/examples/lookup-paged-table.action.example.json`](../assets/examples/lookup-paged-table.action.example.json)。
|
||||
|
||||
### 表单字段类型对照(须与 CRUD 对称)
|
||||
|
||||
@@ -1093,7 +1142,7 @@ Skill Action 弹窗与数据管理「新增 / 编辑」使用**同一套控件
|
||||
| 数字 | `type: number` | `display_type: number` 或 INT/REAL/NUMERIC |
|
||||
| 开关 | `type: boolean` | `display_type: boolean` |
|
||||
| 枚举下拉 | `enum: [...]` | `options_json` 数组 |
|
||||
| 关联下拉(Lookup) | 内联 `display_type: lookup` + `lookup`(`local_sql` / `skill_cli` / `external_api`;可选 `multiple`),或绑列 | 列侧仅同库 `local_sql`;多选存 `TEXT` 逗号分隔 id |
|
||||
| 关联下拉(Lookup) | 内联 `display_type: lookup` + `lookup`(`local_sql` / `skill_cli` / `external_api`;可选 `multiple`;可选 `presentation: "paged_table"`),或绑列 | 列侧仅同库 `local_sql`;多选存 `TEXT` 逗号分隔 id;分页小表只在 Action |
|
||||
| 密码 | `sensitive: true` | 列 `sensitive` |
|
||||
| 年份 | `display_type` 或 `format`: `year` | `display_type: year` → 存 `YYYY` |
|
||||
| 年月 | `display_type` 或 `format`: `year_month`(别名 `month`) | `display_type: year_month` → 存 `YYYY-MM` |
|
||||
@@ -1111,7 +1160,7 @@ Skill Action 弹窗与数据管理「新增 / 编辑」使用**同一套控件
|
||||
| **列筛选「值」** | **无对称**(Action 无表格筛选) | 见 [`SCHEMA.md`](SCHEMA.md)「数据管理:列筛选与全局搜索」:枚举 / boolean / lookup 在筛选栏用**下拉 Select**(非开关、非分段单选);存库仍用 value,展示与搜索认 label |
|
||||
|
||||
**本版不做(勿宣传):** 浏览器内文件上传控件、复杂 `oneOf` / nested object 专用表单;`visibleWhen` 多条件 AND/OR 树、跨 Action 依赖、CRUD 新增/编辑对称显隐;Action 参数表单的列筛选对称。
|
||||
(**Lookup 多选**已支持:同一 `lookup` + `multiple: true`,见上文;不是任意标签数组。)
|
||||
(**Lookup 多选**已支持:同一 `lookup` + `multiple: true`,见上文;不是任意标签数组。**分页勾选小表**已支持:同一 `lookup` + `presentation: "paged_table"`,见「分页勾选小表」。)
|
||||
(**本地路径选择**已支持:`file` / `directory` + 可选 `pathRoot`,见下节;提交值仍是本机绝对路径字符串,不是 multipart 上传。)
|
||||
|
||||
日期时间约定:
|
||||
|
||||
@@ -750,8 +750,9 @@ CREATE TABLE demo_items (
|
||||
- 单选:下拉 Select(现状)
|
||||
- 多选且选项较少(建议 ≤6):勾选列表
|
||||
- 多选且选项较多:字段内 Chip + 可搜索下拉(**不是**再开一层业务弹窗)
|
||||
- **分页勾选小表**(`lookup.presentation: "paged_table"`)只属于 **Action** 参数表单,列 Lookup 不声明。见 [`ACTIONS.md`](ACTIONS.md)「分页勾选小表」
|
||||
|
||||
Action 弹窗内联 Lookup 与上表 **同构**(字段名一致,含 `multiple`),见 [`ACTIONS.md`](ACTIONS.md)「跨表引用:Lookup」。
|
||||
Action 弹窗内联 Lookup 与上表 **同构**(字段名一致,含 `multiple`;Action 另可加 `presentation` / `page_size`),见 [`ACTIONS.md`](ACTIONS.md)「跨表引用:Lookup」。
|
||||
|
||||
示例:账号表的平台字段 → 平台信息表;凭据表的账号编号 → 账号信息表;私信 Action 选话术 → `message_templates`;抽检 Action 多选引擎 → `engines` + `multiple: true`。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user