# 🗄️ 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个工具权限, 动态调用模型) ---