Precipitate host contracts from task-plaza: visibleWhen equalsFrom, replaces gates, url openExternal, feishu data-sources (v1.0.128)
All checks were successful
技能自动化发布 / release (push) Successful in 14s
All checks were successful
技能自动化发布 / release (push) Successful in 14s
This commit is contained in:
@@ -170,14 +170,25 @@ Action 是否提供、挂哪些 `placements`,由本技能 **入口定位表**
|
||||
"visibleWhen": { "field": "status", "in": ["pending_review", "skipped"] }
|
||||
```
|
||||
|
||||
也支持 `{ "field": "status", "equals": "approved" }`。规则缺失或无法解析时宿主视为始终可见(兼容旧技能)。
|
||||
也支持:
|
||||
|
||||
| 形状 | 含义 |
|
||||
|------|------|
|
||||
| `{ "field": "status", "equals": "approved" }` | 等于常量 |
|
||||
| `{ "field": "status", "in": ["a", "b"] }` | 属于集合 |
|
||||
| `{ "field": "owner_user_id", "equalsFrom": "currentUser.userId" }` | 等于宿主当前用户(`userId` / `username`) |
|
||||
| `{ "field": "owner_user_id", "notEqualsFrom": "currentUser.userId" }` | 不等于当前用户 |
|
||||
| `{ "all": [ … ] }` / `{ "any": [ … ] }` | 组合 AND / OR |
|
||||
|
||||
规则缺失或无法解析时宿主视为始终可见(兼容旧技能)。
|
||||
|
||||
**要点:**
|
||||
|
||||
1. 只影响 **UI 是否展示**;CLI / Agent 仍可直接调同一 entrypoint,技能侧仍应校验状态。
|
||||
2. 比较用行的**存库原始值**(如 `approved`),不是界面中文「已采用」。
|
||||
3. 顶栏 / batch 按钮不受 `bind.visibleWhen` 约束(无「当前行」);批量入口靠勾选 + 技能跳过非法状态。
|
||||
4. 示例:[`assets/examples/bind-visible-when-row.action.example.json`](../assets/examples/bind-visible-when-row.action.example.json)。
|
||||
4. **宿主内置「编辑 / 删除」也会读同一套规则**:若本表声明了 `replaces: update` / `replaces: delete`,宿主行菜单的编辑/删除按钮按**该 replaces Action** 的 `bind.visibleWhen` 显隐(与技能 `row` 按钮同一求值器)。无 `visibleWhen` / 无 replaces → 行为与旧宿主一致(只看表级可否编辑/删除)。示例:[`assets/examples/replaces-delete-owner-visible.action.example.json`](../assets/examples/replaces-delete-owner-visible.action.example.json)。
|
||||
5. 示例(技能行按钮):[`assets/examples/bind-visible-when-row.action.example.json`](../assets/examples/bind-visible-when-row.action.example.json)。
|
||||
|
||||
### 数据管理:勾选驱动模式 `bind.selectionMode`
|
||||
|
||||
@@ -453,6 +464,7 @@ Action 是否提供、挂哪些 `placements`,由本技能 **入口定位表**
|
||||
- `update` / `delete` 可用 `inputMapping`(`$row.$pk`、`$selection.ids`)预填主键。
|
||||
- `import` 约定:`filePath`(或 `file`)+ 可选 `onError`(`skip`/`abort` 或上例中文枚举);技能自行解析文件与表头(须兼容宿主前缀 `*` 与 lookup `编号 · 名称`,见上文「导入表头与 lookup 单元格」)。
|
||||
- 整表 `_jiangchang_tables.readonly=1` 时仍隐藏宿主默认新增/编辑/导入与直写删除;**若声明了 `replaces: delete`,宿主仍显示「删除」并走技能 CLI**(不直写 SQLite)。
|
||||
- **按行显隐宿主编辑/删除**:`replaces: update` / `replaces: delete` 的 `bind.visibleWhen` 同时约束宿主行菜单「编辑」「删除」(见上文「行菜单显隐」第 4 点)。典型:仅本人可删 → `equalsFrom: currentUser.userId`;队列状态机表还常配合 Policy **`hostCapabilities` 不含 `edit`**,禁止裸改状态/结果链接(见 [`POLICY.md`](POLICY.md)「状态机表配方」)。
|
||||
- **列元数据复用**:Action 表单(含 toolbar/batch 弹窗与 create/update 抽屉)可将 `inputSchema` 字段对齐业务列,复用中文名与列上 **options**(静态枚举 `options_json` **数组**,或已解析的 lookup):
|
||||
- 优先让属性名 = 物理列名(如 `carrier_code` / `platform_key`);
|
||||
- 或 `bind.columnMapping`:`{ "carrierCode": "carrier_code" }`;
|
||||
|
||||
Reference in New Issue
Block a user