Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

91 lines
3.1 KiB
PL/PgSQL

-- ============================================================
-- 光湖网站总大脑 · L4 核心 Schema
-- PostgreSQL 初始化脚本
-- 版本: v0.1.0 · Phase 1 骨架期
-- 签发: 霜砚(PER-SY001) · 授权: 冰朔(TCS-0002∞)
-- ============================================================
-- 启用 UUID 扩展
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- ============================================================
-- 页面表 — 类 Notion Page
-- 支持富文本、嵌套块、多级层次
-- ============================================================
CREATE TABLE IF NOT EXISTS pages (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
parent_id UUID REFERENCES pages(id) ON DELETE SET NULL,
title VARCHAR(500) NOT NULL,
icon VARCHAR(100),
content JSONB DEFAULT '[]'::jsonb,
properties JSONB DEFAULT '{}'::jsonb,
persona_owner VARCHAR(50),
access_level VARCHAR(20) DEFAULT 'normal'
CHECK (access_level IN ('public', 'normal', 'restricted', 'classified')),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_pages_parent ON pages(parent_id);
CREATE INDEX idx_pages_persona ON pages(persona_owner);
-- ============================================================
-- 数据库表 — 类 Notion Database
-- 可配置属性、筛选、排序、视图
-- ============================================================
CREATE TABLE IF NOT EXISTS databases (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
title VARCHAR(500) NOT NULL,
schema JSONB DEFAULT '{}'::jsonb,
views JSONB DEFAULT '[]'::jsonb,
persona_owner VARCHAR(50),
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_databases_persona ON databases(persona_owner);
-- ============================================================
-- 模块注册表 — 热插拔模块管理
-- ============================================================
CREATE TABLE IF NOT EXISTS modules (
id VARCHAR(50) PRIMARY KEY,
name VARCHAR(200) NOT NULL,
status VARCHAR(20) DEFAULT 'active'
CHECK (status IN ('active', 'dormant', 'deprecated')),
api_routes JSONB DEFAULT '[]'::jsonb,
persona_binding VARCHAR(50),
version VARCHAR(20) DEFAULT '0.1.0',
deployed_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_modules_status ON modules(status);
-- ============================================================
-- 人格体状态表
-- ============================================================
CREATE TABLE IF NOT EXISTS persona_state (
persona_id VARCHAR(50) PRIMARY KEY,
display_name VARCHAR(100) NOT NULL,
status VARCHAR(20) DEFAULT 'active'
CHECK (status IN ('active', 'dormant', 'battle')),
memory_ref VARCHAR(500),
last_active TIMESTAMPTZ DEFAULT NOW(),
routing_rules JSONB DEFAULT '{}'::jsonb
);
-- ============================================================
-- updated_at 自动更新触发器
-- ============================================================
CREATE OR REPLACE FUNCTION update_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_pages_updated_at
BEFORE UPDATE ON pages
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();