refactor: 简化schema结构,更新AGENTS.md
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import type { Entity } from '../core';
|
||||
import type { Action } from './action';
|
||||
|
||||
/**
|
||||
* 实体交互
|
||||
*
|
||||
* 泛化事件侦听器
|
||||
*
|
||||
* 【架构定位】:
|
||||
*
|
||||
* 低代码平台中负责响应任何“状态突变”的唯一入口。
|
||||
* 它的名字虽叫 Interaction(人机交互),但在架构底层,它不仅监听物理鼠标键盘,
|
||||
* 更监听系统级的数据流转。
|
||||
*
|
||||
* 【引擎实现指引】:
|
||||
*
|
||||
* 根据它所挂载的宿主实体不同,引擎应将其映射为不同的事件绑定:
|
||||
* 1. 挂载于 Component:映射为 DOM 原生事件或 React 组件暴露的业务事件(如 `onClick`, `onScroll`, `onRowSelect`)。
|
||||
* 2. 挂载于 Route/Page:映射为生命周期钩子(如 `onEnter`, `onLoad`)。
|
||||
* 3. 挂载于 Query/Mutation/Variable:映射为数据流的状态回调(如 `onSuccess`, `onError`, `onChange`)。
|
||||
*/
|
||||
export interface Interaction extends Entity {
|
||||
/**
|
||||
* 触发时机/事件名称 (Event Name)
|
||||
*
|
||||
* 引擎会根据此名称去注册对应的监听器。
|
||||
*/
|
||||
event: string;
|
||||
/**
|
||||
* 触发频率控制 (Debounce & Throttle)
|
||||
*
|
||||
* 处理高频数据流(如 Input 搜索框的 `onChange` 联动触发后端 Query)的核心防御机制。
|
||||
*
|
||||
* 引擎实现指引:
|
||||
*
|
||||
* 如果 enabled 为 true,引擎在派发底层的 `actions` 数组前,
|
||||
* 必须先经过 Lodash 或 es-toolkit 的 `debounce` 或 `throttle` 包装器。
|
||||
*/
|
||||
control: {
|
||||
enabled: boolean;
|
||||
type: 'debounce' | 'throttle';
|
||||
delay: number;
|
||||
};
|
||||
/**
|
||||
* 原生事件修饰符 (Event Modifiers)
|
||||
*
|
||||
* 引擎实现指引:
|
||||
*
|
||||
* 仅当该 Interaction 是由原生 DOM 事件(如 onClick 冒泡或 Form 默认提交)触发时生效。
|
||||
* 如果是 `Query.onSuccess` 这种纯逻辑事件,此配置应被忽略。
|
||||
*/
|
||||
modifiers: {
|
||||
preventDefault: boolean;
|
||||
stopPropagation: boolean;
|
||||
};
|
||||
/**
|
||||
* 动作执行序列 (Action Chain)
|
||||
*
|
||||
* 当事件触发(且通过频率控制与修饰符拦截)后,引擎需要按顺序串行(或并行)执行的命令集合。
|
||||
*
|
||||
* 必须为一个数组,允许一个按钮点击同时触发“保存数据”和“跳转页面”两个动作。
|
||||
*/
|
||||
actions: Action[];
|
||||
}
|
||||
Reference in New Issue
Block a user