Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
5.9 KiB
5.9 KiB
🗄️ PostgreSQL Schema · 5张核心表建表脚本(铸渊 D45)
设计哲学
brain_nodes= Notion里的页面 → 每个认知节点brain_relations= Notion里的Relation → 节点之间的关联agent_configs= Agent注册表 → 谁在跑、跑什么agent_logs= 运行日志 → 追踪每次执行user_credits= 用户额度 → 商业化基础
与 website-brain/schema/001-init.sql 并存:
- website-brain 的 pages/databases/modules/persona_state 管网站展示层
- 本文件的 brain_nodes/brain_relations 管认知数据层
1. 节点表 · brain_nodes
核心表:每条记录 = 一个认知节点(类比 Notion 里的一个页面)
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR(64) PK | UUID自动生成,支持多源创建不冲突 |
title |
VARCHAR(500) NOT NULL | 节点标题 |
node_type |
VARCHAR(50) NOT NULL | page / folder / index / route / config / memory / log / instruction |
parent_id |
VARCHAR(64) FK | 父节点(ON DELETE SET NULL) |
path |
VARCHAR(1000) | 路径(如 /曜冥纪元/光湖灯塔/...) |
tags |
JSONB | 标签数组,GIN索引加速查询 |
source |
VARCHAR(50) NOT NULL | notion / github / gpt / manual / agent |
source_url |
VARCHAR(500) | 来源URL(Notion页面链接/GitHub文件路径) |
content_url |
VARCHAR(500) | → COS,长内容存这里 |
summary |
TEXT | 短内容/摘要直接存数据库 |
content_hash |
VARCHAR(64) | ⚡铸渊新增:检测内容变化,避免无意义COS覆写 |
version |
INT DEFAULT 1 | ⚡铸渊新增:版本追踪,配合归档 |
owner |
VARCHAR(50) NOT NULL | shuangyan / zhuyuan / qiuqiu / yaoming / system / user |
owner_user_id |
VARCHAR(64) | 用户场景下的用户ID |
status |
VARCHAR(20) DEFAULT 'active' | active / archived / draft / deleted |
created_at |
TIMESTAMPTZ | 创建时间 |
updated_at |
TIMESTAMPTZ | 更新时间(触发器自动维护) |
created_by |
VARCHAR(50) NOT NULL | 创建者 |
索引: parent_id, owner, node_type, status, path, tags(GIN)
2. 关系表 · brain_relations
节点之间的关联关系(类比 Notion 的 Relation 属性)
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR(64) PK | UUID自动生成 |
from_node_id |
VARCHAR(64) FK NOT NULL | 起始节点(ON DELETE CASCADE) |
to_node_id |
VARCHAR(64) FK NOT NULL | 目标节点(ON DELETE CASCADE) |
relation_type |
VARCHAR(50) NOT NULL | parent_child / reference / dependency / version / alias |
description |
VARCHAR(500) | 关系描述 |
weight |
SMALLINT DEFAULT 50 | ⚡铸渊新增:0-100权重,核心引用>偶然提及 |
created_at |
TIMESTAMPTZ | 创建时间 |
created_by |
VARCHAR(50) NOT NULL | 创建者 |
唯一约束: (from_node_id, to_node_id, relation_type) 防止重复关系
3. Agent配置表 · agent_configs
| 字段 | 类型 | 说明 |
|---|---|---|
agent_id |
VARCHAR(50) PK | Agent唯一ID(如SY-SCAN) |
name |
VARCHAR(200) NOT NULL | Agent名称 |
description |
TEXT | 功能描述 |
owner |
VARCHAR(50) DEFAULT 'system' | ⚡铸渊新增:notion / github / system |
script_path |
VARCHAR(500) | 脚本路径(如agents/sy-scan.js) |
cron_schedule |
VARCHAR(100) | cron表达式(交互级Agent为NULL) |
enabled |
BOOLEAN DEFAULT true | 是否启用 |
allowed_tools |
JSONB | 允许调用的MCP工具列表 |
model_config |
JSONB | 模型配置(primary/fallback/temperature) |
last_run_at |
TIMESTAMPTZ | 上次运行时间 |
last_run_status |
VARCHAR(20) | success / error / skipped / running |
4. 运行日志表 · agent_logs
| 字段 | 类型 | 说明 |
|---|---|---|
id |
BIGSERIAL PK | 自增ID(日志量大用BIGSERIAL) |
agent_id |
VARCHAR(50) FK NOT NULL | 关联Agent(ON DELETE CASCADE) |
run_at |
TIMESTAMPTZ | 运行时间 |
status |
VARCHAR(20) NOT NULL | success / error / warning / skipped |
message |
TEXT | 日志消息 |
details |
JSONB | 详细信息 |
duration_ms |
INT | 执行耗时(毫秒) |
5. 用户额度表 · user_credits
| 字段 | 类型 | 说明 |
|---|---|---|
user_id |
VARCHAR(64) PK | 用户唯一标识 |
total_charged |
DECIMAL(10,2) | 用户充值总额 |
actual_credit |
DECIMAL(10,2) | 扣完手续费后的实际额度 |
consumed |
DECIMAL(10,2) | 已消耗额度 |
remaining |
DECIMAL(10,2) | 剩余额度 |
preferred_model |
VARCHAR(50) | 偏好模型 |
自动化机制
updated_at 触发器
三张表(brain_nodes, agent_configs, user_credits)都配置了 update_updated_at() 触发器,UPDATE时自动刷新 updated_at 字段。
初始Agent数据
建表脚本用 INSERT ... ON CONFLICT DO NOTHING 幂等插入9个Agent配置:
系统级(7×24):
- SY-SCAN(owner:notion, 每6h, 纯逻辑不调模型)
- SY-CLASSIFY(owner:notion, 每2h, 规则优先+DeepSeek兜底)
- SY-SYNC-N2B(owner:notion, 每4h, 纯逻辑同步)
- SY-SYNC-B2N(owner:notion, 每天3:00, 默认关闭)
- SY-ARCHIVE(owner:notion, 每周日4:00, 纯逻辑归档)
- SY-TEST(owner:system, 每30min, 连通性检查)
交互级:
- SY-11(owner:system, 规则优先+DeepSeek兜底, temperature:0.1)
- SY-12(owner:system, 纯JS逻辑)
- SY-BRAIN-RW(owner:system, 全部16个工具权限, 动态调用模型)