Skip to content

Commit 8d3b999

Browse files
authored
更新 index.mdx
1 parent 44a2607 commit 8d3b999

1 file changed

Lines changed: 103 additions & 58 deletions

File tree

content/docs/index.mdx

Lines changed: 103 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,104 @@
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
59102
packages/spec/
60103
├── src/
61104
│ ├── types/
@@ -75,3 +118,5 @@ packages/spec/
75118
│ └── constants/ <-- 目录约定 (paths)
76119
└── package.json
77120
121+
```
122+

0 commit comments

Comments
 (0)