refactor: 简化schema结构,更新AGENTS.md

This commit is contained in:
2026-04-14 14:20:46 +08:00
parent c3846da8ae
commit 6d991326a5
37 changed files with 51 additions and 5 deletions
+64
View File
@@ -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[];
}