1- 🟢 P0: 核心元模型 (The Metamodel)
2- 没有这部分,ObjectQL 和 ObjectUI 无法通信,系统无法运转。这是“万物皆对象”的法律定义。
3- * [ ] 1 . 实体定义协议 (EntitySchema)
4- * 定义目标: 描述一个“对象”长什么样。
5- * 关键字段: name (机器名), label (显示名), dataSource (存哪), dbName (物理表名)。
6- * 用途: ObjectQL 解析 .gql 文件后生成的 AST 结构;/_ api/metadata/objects/{ name } 的返回值。
7- * [ ] 2 . 字段定义协议 (FieldSchema)
8- * 定义目标: 描述对象里的“属性”。
9- * 关键字段: type (text/number/lookup...), required, unique, defaultValue。
10- * 关键枚举: FieldType (必须枚举所有支持的类型,如 master_detail, formula, image)。
11- * 用途: 告诉前端渲染什么组件,告诉后端怎么建表。
12- * [ ] 3 . 视图/布局协议 (LayoutSchema)
13- * 定义目标: 描述界面如何排列。
14- * 关键结构:
15- * ListView: 列定义 (columns), 排序 (sort), 筛选 (filters)。
16- * FormView: 区域 (sections), 字段分组 (groups)。
17- * 用途: ObjectUI 根据这个 JSON 渲染页面,而不是写死 React 代码。
18- 🔵 P1: 插件与分发 (Packaging & Runtime)
19- 没有这部分,你的应用市场和插件机制就是空谈。
20- * [ ] 4 . 插件清单协议 (ManifestSchema)
21- * 定义目标: 描述一个软件包(插件/应用)。
22- * 文件对应: objectstack.config.ts 或 package.json > objectstack。
23- * 关键字段: id, version, type (app/plugin/driver), permissions (申请权限), menus (导航注入)。
24- * 用途: CLI 打包校验,应用商店展示。
25- * [ ] 5 . 生命周期接口 (PluginLifecycle)
26- * 定义目标: 插件在运行时如何被加载。
27- * 接口定义: interface ObjectStackPlugin
28- * 关键方法: onInstall(ctx), onEnable(ctx), onDisable(ctx)。
29- * Context 定义: ctx.ql (数据能力), ctx.os (系统能力), ctx.logger。
30- * 用途: ObjectOS 加载 node_modules 时的统一入口标准。
31- * [ ] 6 . 导航菜单协议 (NavigationSchema)
32- * 定义目标: 描述侧边栏菜单结构。
33- * 关键字段: label, icon, path, children, visible_on (权限控制)。
34- * 用途: 多个插件的菜单合并渲染到 ObjectCloud / Studio 的侧边栏。
35- 🟠 P2: 驱动与连接 (Drivers & Logic)
36- 这部分决定了你的系统扩展性(能不能连 Excel,能不能写自定义代码)。
37- * [ ] 7 . 数据驱动接口 (DriverInterface)
38- * 定义目标: 任何数据库要想接入 ObjectQL,必须实现的标准。
39- * 核心方法:
40- * find(entity, query)
41- * create(entity, data)
42- * update(entity, id, data)
43- * delete(entity, id)
44- * syncSchema(entity) (DDL 操作:建表/加字段)
45- * 用途: 让 driver-postgres, driver-excel, driver-salesforce 行为一致。
46- * [ ] 8 . 触发器上下文协议 (TriggerContext)
47- * 定义目标: 当用户写 beforeInsert 代码时,传入参数的标准。
48- * 接口定义:
49- * doc (当前记录)
50- * previousDoc (修改前的记录)
51- * userId (谁在操作)
52- * 用途: 规范化业务逻辑代码的编写。
53- * [ ] 9 . UI 组件契约 (WidgetContract)
54- * 定义目标: 第三方开发者开发自定义 UI 组件(如:地图选择器)的标准。
55- * 接口定义: interface FieldWidgetProps { value , onChange , readonly , options } 。
56- * 用途: 让社区开发的 React 组件能无缝嵌入到 ObjectUI 的表单中。
57- 💾 你的“立法”行动路线图
58- 建议你在 packages/spec 仓库中按以下文件结构落地这些协议:
1+
2+ ### 🟢 P0: 核心元模型 (The Metamodel)
3+
4+ * 没有这部分,ObjectQL 和 ObjectUI 无法通信,系统无法运转。这是“万物皆对象”的法律定义。*
5+
6+ * ** [ ] 1. 实体定义协议 (` EntitySchema ` )**
7+ * ** 定义目标** : 描述一个“对象”长什么样。
8+ * ** 关键字段** : ` name ` (机器名), ` label ` (显示名), ` dataSource ` (存哪), ` dbName ` (物理表名)。
9+ * ** 用途** : ObjectQL 解析 ` .gql ` 文件后生成的 AST 结构;` /_api/metadata/objects/{name} ` 的返回值。
10+
11+
12+ * ** [ ] 2. 字段定义协议 (` FieldSchema ` )**
13+ * ** 定义目标** : 描述对象里的“属性”。
14+ * ** 关键字段** : ` type ` (text/number/lookup...), ` required ` , ` unique ` , ` defaultValue ` 。
15+ * ** 关键枚举** : ` FieldType ` (必须枚举所有支持的类型,如 ` master_detail ` , ` formula ` , ` image ` )。
16+ * ** 用途** : 告诉前端渲染什么组件,告诉后端怎么建表。
17+
18+
19+ * ** [ ] 3. 视图/布局协议 (` LayoutSchema ` )**
20+ * ** 定义目标** : 描述界面如何排列。
21+ * ** 关键结构** :
22+ * ` ListView ` : 列定义 (` columns ` ), 排序 (` sort ` ), 筛选 (` filters ` )。
23+ * ` FormView ` : 区域 (` sections ` ), 字段分组 (` groups ` )。
24+
25+
26+ * ** 用途** : ObjectUI 根据这个 JSON 渲染页面,而不是写死 React 代码。
27+
28+
29+
30+ ---
31+
32+ ### 🔵 P1: 插件与分发 (Packaging & Runtime)
33+
34+ * 没有这部分,你的应用市场和插件机制就是空谈。*
35+
36+ * ** [ ] 4. 插件清单协议 (` ManifestSchema ` )**
37+ * ** 定义目标** : 描述一个软件包(插件/应用)。
38+ * ** 文件对应** : ` objectstack.config.ts ` 或 ` package.json > objectstack ` 。
39+ * ** 关键字段** : ` id ` , ` version ` , ` type ` (app/plugin/driver), ` permissions ` (申请权限), ` menus ` (导航注入)。
40+ * ** 用途** : CLI 打包校验,应用商店展示。
41+
42+
43+ * ** [ ] 5. 生命周期接口 (` PluginLifecycle ` )**
44+ * ** 定义目标** : 插件在运行时如何被加载。
45+ * ** 接口定义** : ` interface ObjectStackPlugin `
46+ * ** 关键方法** : ` onInstall(ctx) ` , ` onEnable(ctx) ` , ` onDisable(ctx) ` 。
47+ * ** Context 定义** : ` ctx.ql ` (数据能力), ` ctx.os ` (系统能力), ` ctx.logger ` 。
48+ * ** 用途** : ObjectOS 加载 ` node_modules ` 时的统一入口标准。
49+
50+
51+ * ** [ ] 6. 导航菜单协议 (` NavigationSchema ` )**
52+ * ** 定义目标** : 描述侧边栏菜单结构。
53+ * ** 关键字段** : ` label ` , ` icon ` , ` path ` , ` children ` , ` visible_on ` (权限控制)。
54+ * ** 用途** : 多个插件的菜单合并渲染到 ObjectCloud / Studio 的侧边栏。
55+
56+
57+
58+ ---
59+
60+ ### 🟠 P2: 驱动与连接 (Drivers & Logic)
61+
62+ * 这部分决定了你的系统扩展性(能不能连 Excel,能不能写自定义代码)。*
63+
64+ * ** [ ] 7. 数据驱动接口 (` DriverInterface ` )**
65+ * ** 定义目标** : 任何数据库要想接入 ObjectQL,必须实现的标准。
66+ * ** 核心方法** :
67+ * ` find(entity, query) `
68+ * ` create(entity, data) `
69+ * ` update(entity, id, data) `
70+ * ` delete(entity, id) `
71+ * ` syncSchema(entity) ` (DDL 操作:建表/加字段)
72+
73+
74+ * ** 用途** : 让 ` driver-postgres ` , ` driver-excel ` , ` driver-salesforce ` 行为一致。
75+
76+
77+ * ** [ ] 8. 触发器上下文协议 (` TriggerContext ` )**
78+ * ** 定义目标** : 当用户写 ` beforeInsert ` 代码时,传入参数的标准。
79+ * ** 接口定义** :
80+ * ` doc ` (当前记录)
81+ * ` previousDoc ` (修改前的记录)
82+ * ` userId ` (谁在操作)
83+
84+
85+ * ** 用途** : 规范化业务逻辑代码的编写。
86+
87+
88+ * ** [ ] 9. UI 组件契约 (` WidgetContract ` )**
89+ * ** 定义目标** : 第三方开发者开发自定义 UI 组件(如:地图选择器)的标准。
90+ * ** 接口定义** : ` interface FieldWidgetProps { value, onChange, readonly, options } ` 。
91+ * ** 用途** : 让社区开发的 React 组件能无缝嵌入到 ObjectUI 的表单中。
92+
93+
94+
95+ ---
96+
97+ ### 💾 你的“立法”行动路线图
98+
99+ 建议你在 ` packages/spec ` 仓库中按以下文件结构落地这些协议:
100+
101+ ``` text
59102packages/spec/
60103├── src/
61104│ ├── types/
@@ -75,3 +118,5 @@ packages/spec/
75118│ └── constants/ <-- 目录约定 (paths)
76119└── package.json
77120
121+ ```
122+
0 commit comments