Skip to content

Commit 44a2607

Browse files
authored
创建 index.mdx
1 parent a116aef commit 44a2607

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

content/docs/index.mdx

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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 仓库中按以下文件结构落地这些协议:
59+
packages/spec/
60+
├── src/
61+
│ ├── types/
62+
│ │ ├── meta/ <-- P0: Metamodel
63+
├── entity.ts (EntitySchema)
64+
├── field.ts (FieldSchema)
65+
└── view.ts (LayoutSchema)
66+
├── bundle/ <-- P1: Packaging
67+
├── manifest.ts (ManifestSchema)
68+
└── menu.ts (NavigationSchema)
69+
├── runtime/ <-- P2: Logic
70+
├── plugin.ts (Lifecycle)
71+
└── driver.ts (DriverInterface)
72+
└── auth/ <-- from plugin-auth
73+
└── session.ts (User/Session Interface)
74+
├── zods/ <-- 对应的 Zod 实现 (用于运行时校验)
75+
└── constants/ <-- 目录约定 (paths)
76+
└── package.json
77+

0 commit comments

Comments
 (0)