/** * F3 — 节点 Provider Metadata API * * 后端 B4/B5/B6 Provider SPI 暴露每个节点类型的 form-create schema。 * 前端启动(或打开规则链编辑页)时一次性拉取,缓存到 Pinia。 * * 后端 B4/B5/B6 未就绪时使用 mock;对齐 F2 `useNodeCatalog` 的 NodeTypeMeta * 并扩展 `schema.rule` 字段。 */ import type { NodeTypeMeta } from '#/components/iot-dag'; import { requestClient } from '#/api/request'; // ────────────────────────────────────────────── // 类型定义 // ────────────────────────────────────────────── /** form-create rule 单项 — 与 @form-create/ant-design-vue 的 Rule 对齐(宽松定义) */ export interface FormCreateRuleItem { /** 组件类型(select / input / DeviceSelector 等) */ type: string; /** 字段名 */ field?: string; /** 显示标题(i18n key 或原始文案) */ title?: string; /** 组件 props */ props?: Record; /** 下拉选项 */ options?: Array<{ label: string; value: boolean | number | string }>; /** 校验规则(antd Form rule 风格) */ validate?: Array>; /** 默认值 */ value?: unknown; /** 子项(嵌套表单) */ children?: FormCreateRuleItem[]; } /** form-create schema(完整) */ export interface FormCreateSchema { /** 字段规则数组 */ rule: FormCreateRuleItem[]; /** 全局 option(submitBtn / resetBtn 等) */ option?: Record; } /** Provider 节点元数据(含 schema,比 NodeTypeMeta 多一层) */ export interface ProviderMetadata extends NodeTypeMeta { /** 动态表单 schema(form-create 配置) */ schema: FormCreateSchema; } // ────────────────────────────────────────────── // API // ────────────────────────────────────────────── /** * 拉取所有 Provider 节点元数据(含 schema) * * 后端端点约定:`GET /iot/rule/provider/metadata` * B4/B5/B6 就绪后返回结构需对齐 `ProviderMetadata[]`。 */ export function getProviderMetadata(): Promise { return requestClient.get('/iot/rule/provider/metadata'); }