From 0e96664f321b9116ddfb5ee95e101144d6290bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=81=B0=E7=81=B0?= <654612@qq.com> Date: Tue, 24 Mar 2026 19:42:57 +0800 Subject: [PATCH] feat: add initial SQL database schema --- sql/init.sql | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 sql/init.sql diff --git a/sql/init.sql b/sql/init.sql new file mode 100644 index 0000000..9b295f6 --- /dev/null +++ b/sql/init.sql @@ -0,0 +1,29 @@ +-- 1. 存储模块定义(例如:AI 决定创建一个“线索管理”模块,它的字段定义存这里) +CREATE TABLE sys_entities ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + entity_code VARCHAR(50) UNIQUE NOT NULL, -- 模块标识,如 'crm_lead' + entity_name VARCHAR(100) NOT NULL, -- 模块名称,如 '销售线索' + schema_definition JSONB NOT NULL, -- 核心:存储字段定义的 JSON (类型、标签、校验) + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +-- 2. 存储动态业务数据(所有的业务数据都进这一张表,靠 entity_id 区分) +CREATE TABLE sys_dynamic_data ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + entity_id UUID REFERENCES sys_entities(id), + data JSONB NOT NULL, -- 核心:存储具体的业务字段数据 + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + creator_id VARCHAR(50) -- 预留租户或用户 ID +); + +-- 3. 存储 AI 会话记忆(LangChain4j 自动持久化对话用) +CREATE TABLE chat_memory ( + id SERIAL PRIMARY KEY, + chat_session_id VARCHAR(255) NOT NULL, + content TEXT NOT NULL, -- 存储对话内容 + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +-- 为 JSONB 字段创建 GIN 索引,保证以后千万级数据的查询速度 +CREATE INDEX idx_entity_data ON sys_dynamic_data USING GIN (data);