huoyan-enterprise/ddl.sql

2118 lines
55 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--
-- PostgreSQL database dump
--
\restrict IIs1ywVfui7Zb3f5SRgOBwj2LGJXpFF5jpVnQbpR7cCgjNpjBLehhEAmULW9yma
-- Dumped from database version 17.4 (Debian 17.4-1.pgdg120+2)
-- Dumped by pg_dump version 18.1
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: chat_message_file; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.chat_message_file (
id integer NOT NULL,
thread_id character varying(255) NOT NULL,
checkpoint_id character varying(255) NOT NULL,
message_index integer NOT NULL,
file_id integer NOT NULL,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP
);
--
-- Name: chat_message_file_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.chat_message_file_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: chat_message_file_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.chat_message_file_id_seq OWNED BY public.chat_message_file.id;
--
-- Name: chat_messages; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.chat_messages (
id integer NOT NULL,
thread_id character varying(255) NOT NULL,
checkpoint_id character varying(255) NOT NULL,
message_index integer NOT NULL,
role character varying(20) NOT NULL,
content text NOT NULL,
injected_content text,
has_files boolean DEFAULT false,
metadata jsonb,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
name character varying(255)
);
--
-- Name: TABLE chat_messages; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.chat_messages IS '聊天消息表存储用户原始消息和AI响应的关键信息';
--
-- Name: COLUMN chat_messages.thread_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.thread_id IS '会话线程ID';
--
-- Name: COLUMN chat_messages.checkpoint_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.checkpoint_id IS '关联的checkpoint ID';
--
-- Name: COLUMN chat_messages.message_index; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.message_index IS '消息在checkpoint中的索引从0开始';
--
-- Name: COLUMN chat_messages.role; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.role IS '消息角色user、assistant、system、tool';
--
-- Name: COLUMN chat_messages.content; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.content IS '用户的原始问题或AI的响应';
--
-- Name: COLUMN chat_messages.injected_content; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.injected_content IS '注入给AI的完整内容包含文件内容';
--
-- Name: COLUMN chat_messages.has_files; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.has_files IS '是否关联了文件';
--
-- Name: COLUMN chat_messages.metadata; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.metadata IS '额外信息token、模型、推理内容等';
--
-- Name: COLUMN chat_messages.name; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_messages.name IS '工具消息时的工具名称(如 internet_search、text_to_image';
--
-- Name: chat_messages_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.chat_messages_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: chat_messages_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.chat_messages_id_seq OWNED BY public.chat_messages.id;
--
-- Name: chat_thread_chunk; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.chat_thread_chunk (
id integer NOT NULL,
file_id integer NOT NULL,
thread_id character varying(255) NOT NULL,
chunk_index integer NOT NULL,
content text NOT NULL,
metadata jsonb,
vector_id character varying(255),
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
summary text
);
--
-- Name: chat_thread_chunk_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.chat_thread_chunk_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: chat_thread_chunk_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.chat_thread_chunk_id_seq OWNED BY public.chat_thread_chunk.id;
--
-- Name: chat_thread_file; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.chat_thread_file (
id integer NOT NULL,
thread_id character varying(255) NOT NULL,
user_id integer NOT NULL,
file_name character varying(255) NOT NULL,
file_path character varying(500) NOT NULL,
file_size integer DEFAULT 0,
file_type character varying(50) DEFAULT 'pdf'::character varying,
status character varying(20) DEFAULT 'processing'::character varying,
chunk_count integer DEFAULT 0,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
is_deleted boolean DEFAULT false,
deleted_at timestamp with time zone,
progress_percent smallint DEFAULT 0 NOT NULL,
processing_stage character varying(50),
CONSTRAINT ck_chat_thread_file_progress_percent CHECK (((progress_percent >= 0) AND (progress_percent <= 100)))
);
--
-- Name: COLUMN chat_thread_file.progress_percent; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_thread_file.progress_percent IS '处理进度 0-100';
--
-- Name: COLUMN chat_thread_file.processing_stage; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_thread_file.processing_stage IS 'processing 阶段';
--
-- Name: chat_thread_file_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.chat_thread_file_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: chat_thread_file_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.chat_thread_file_id_seq OWNED BY public.chat_thread_file.id;
--
-- Name: chat_threads; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.chat_threads (
id integer NOT NULL,
thread_id character varying(255) NOT NULL,
user_id integer NOT NULL,
title character varying(50) NOT NULL,
first_query text NOT NULL,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
message_count integer DEFAULT 1,
is_deleted boolean DEFAULT false,
knowledge_base_id integer,
novel_graph_id integer,
knowledge_graph_id integer,
ip character varying(128)
);
--
-- Name: TABLE chat_threads; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.chat_threads IS '聊天会话记录表,记录每个用户的会话基本信息';
--
-- Name: COLUMN chat_threads.id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.id IS '主键 ID';
--
-- Name: COLUMN chat_threads.thread_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.thread_id IS '会话线程 IDUUID 格式)';
--
-- Name: COLUMN chat_threads.user_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.user_id IS '用户 ID关联 user_list 表';
--
-- Name: COLUMN chat_threads.title; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.title IS '会话标题首次请求内容的前10个字';
--
-- Name: COLUMN chat_threads.first_query; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.first_query IS '首次请求的完整内容';
--
-- Name: COLUMN chat_threads.created_at; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.created_at IS '会话创建时间';
--
-- Name: COLUMN chat_threads.updated_at; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.updated_at IS '最后更新时间';
--
-- Name: COLUMN chat_threads.message_count; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.message_count IS '该会话的消息总数';
--
-- Name: COLUMN chat_threads.is_deleted; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.is_deleted IS '是否已删除(软删除标记)';
--
-- Name: COLUMN chat_threads.knowledge_graph_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.knowledge_graph_id IS '绑定的知识图谱 graphs.id与 knowledge_base_id 二选一';
--
-- Name: COLUMN chat_threads.ip; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.chat_threads.ip IS '最近一次发起聊天时的客户端 IP可选';
--
-- Name: chat_threads_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.chat_threads_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: chat_threads_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.chat_threads_id_seq OWNED BY public.chat_threads.id;
--
-- Name: checkpoint_blobs; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.checkpoint_blobs (
thread_id text NOT NULL,
checkpoint_ns text DEFAULT ''::text NOT NULL,
channel text NOT NULL,
version text NOT NULL,
type text NOT NULL,
blob bytea
);
--
-- Name: checkpoint_migrations; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.checkpoint_migrations (
v integer NOT NULL
);
--
-- Name: checkpoint_writes; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.checkpoint_writes (
thread_id text NOT NULL,
checkpoint_ns text DEFAULT ''::text NOT NULL,
checkpoint_id text NOT NULL,
task_id text NOT NULL,
idx integer NOT NULL,
channel text NOT NULL,
type text,
blob bytea NOT NULL,
task_path text DEFAULT ''::text NOT NULL
);
--
-- Name: checkpoints; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.checkpoints (
thread_id text NOT NULL,
checkpoint_ns text DEFAULT ''::text NOT NULL,
checkpoint_id text NOT NULL,
parent_checkpoint_id text,
type text,
checkpoint jsonb NOT NULL,
metadata jsonb DEFAULT '{}'::jsonb NOT NULL
);
--
-- Name: department; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.department (
id integer NOT NULL,
enterprise_id integer NOT NULL,
name character varying(255) NOT NULL,
parent_id integer,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
leader_user_id integer
);
--
-- Name: TABLE department; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.department IS '部门';
--
-- Name: COLUMN department.leader_user_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.department.leader_user_id IS '部门负责人 user_id对应 role=leader 的用户';
--
-- Name: department_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.department_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: department_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.department_id_seq OWNED BY public.department.id;
--
-- Name: enterprise; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.enterprise (
id integer NOT NULL,
name character varying(255) NOT NULL,
code character varying(64),
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
ai_display_name character varying(128) DEFAULT '智能助手 AI'::character varying NOT NULL
);
--
-- Name: TABLE enterprise; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.enterprise IS '企业(单租户部署通常仅一条记录)';
--
-- Name: COLUMN enterprise.ai_display_name; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.enterprise.ai_display_name IS 'AI 助手对外展示名称(写入系统提示词等),管理端可修改';
--
-- Name: enterprise_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.enterprise_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: enterprise_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.enterprise_id_seq OWNED BY public.enterprise.id;
--
-- Name: graphs; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.graphs (
id integer NOT NULL,
user_id integer NOT NULL,
name character varying(255) NOT NULL,
description text,
csv_file_name character varying(255),
node_count integer DEFAULT 0,
edge_count integer DEFAULT 0,
neo4j_graph_id character varying(100) NOT NULL,
graph_type character varying(20) DEFAULT 'knowledge'::character varying NOT NULL,
build_status character varying(20),
build_error text,
rag_chunk_count integer DEFAULT 0 NOT NULL,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
enterprise_id integer NOT NULL,
department_id integer,
creator_id integer NOT NULL,
visibility character varying(32) DEFAULT 'private'::character varying NOT NULL,
progress_percent smallint DEFAULT 0 NOT NULL,
processing_stage character varying(50),
CONSTRAINT ck_graphs_progress_percent CHECK (((progress_percent >= 0) AND (progress_percent <= 100))),
CONSTRAINT ck_graphs_visibility CHECK (((visibility)::text = ANY ((ARRAY['private'::character varying, 'department'::character varying, 'enterprise'::character varying])::text[])))
);
--
-- Name: TABLE graphs; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.graphs IS '知识图谱元数据表,图数据在 Neo4j向量块数量见 rag_chunk_count';
--
-- Name: COLUMN graphs.neo4j_graph_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.neo4j_graph_id IS 'Neo4j 中图谱唯一标识';
--
-- Name: COLUMN graphs.graph_type; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.graph_type IS '兼容字段,默认 knowledge';
--
-- Name: COLUMN graphs.build_status; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.build_status IS '构建状态pending/processing/completed/failed';
--
-- Name: COLUMN graphs.build_error; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.build_error IS '构建失败时的错误信息';
--
-- Name: COLUMN graphs.rag_chunk_count; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.rag_chunk_count IS 'Chroma 中知识图谱 RAG 分块数量';
--
-- Name: COLUMN graphs.creator_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.creator_id IS '创建者(与 user_id 通常一致,用于权限判断)';
--
-- Name: COLUMN graphs.visibility; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.visibility IS 'private | department | enterprise';
--
-- Name: COLUMN graphs.progress_percent; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.progress_percent IS '构建进度 0-100';
--
-- Name: COLUMN graphs.processing_stage; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.graphs.processing_stage IS '构建阶段: extracting/indexing/completed 等';
--
-- Name: graphs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.graphs_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: graphs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.graphs_id_seq OWNED BY public.graphs.id;
--
-- Name: kb_audit_log; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.kb_audit_log (
id integer NOT NULL,
enterprise_id integer NOT NULL,
actor_id integer NOT NULL,
target_user_id integer,
department_id integer,
kb_id integer,
file_id integer,
action character varying(50) NOT NULL,
ip character varying(128),
user_agent text,
metadata jsonb,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);
--
-- Name: TABLE kb_audit_log; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.kb_audit_log IS '知识库操作审计日志';
--
-- Name: COLUMN kb_audit_log.action; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.kb_audit_log.action IS 'upload | download | delete | archive | create_kb | delete_kb | permission_change';
--
-- Name: kb_audit_log_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.kb_audit_log_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: kb_audit_log_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.kb_audit_log_id_seq OWNED BY public.kb_audit_log.id;
--
-- Name: knowledge_base; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.knowledge_base (
id integer NOT NULL,
user_id integer NOT NULL,
name character varying(255) NOT NULL,
description text,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
is_deleted boolean DEFAULT false,
deleted_at timestamp with time zone,
enterprise_id integer DEFAULT 1 NOT NULL,
department_id integer,
creator_id integer,
visibility character varying(32) DEFAULT 'private'::character varying NOT NULL,
CONSTRAINT ck_knowledge_base_visibility CHECK (((visibility)::text = ANY ((ARRAY['private'::character varying, 'department'::character varying, 'enterprise'::character varying])::text[])))
);
--
-- Name: COLUMN knowledge_base.creator_id; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_base.creator_id IS '创建者(与 user_id 通常一致,用于权限判断)';
--
-- Name: COLUMN knowledge_base.visibility; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_base.visibility IS 'private | department | enterprise';
--
-- Name: knowledge_base_chunk; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.knowledge_base_chunk (
id integer NOT NULL,
file_id integer NOT NULL,
knowledge_base_id integer NOT NULL,
chunk_index integer NOT NULL,
content text NOT NULL,
metadata jsonb,
vector_id character varying(255),
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
summary text
);
--
-- Name: knowledge_base_chunk_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.knowledge_base_chunk_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: knowledge_base_chunk_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.knowledge_base_chunk_id_seq OWNED BY public.knowledge_base_chunk.id;
--
-- Name: knowledge_base_file; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.knowledge_base_file (
id integer NOT NULL,
knowledge_base_id integer NOT NULL,
user_id integer NOT NULL,
file_name character varying(255) NOT NULL,
file_path character varying(500) NOT NULL,
file_size bigint NOT NULL,
file_type character varying(50) DEFAULT 'pdf'::character varying NOT NULL,
status character varying(20) DEFAULT 'processing'::character varying NOT NULL,
chunk_count integer DEFAULT 0,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
is_deleted boolean DEFAULT false,
deleted_at timestamp with time zone,
progress_percent smallint DEFAULT 0 NOT NULL,
processing_stage character varying(50),
CONSTRAINT ck_kb_file_progress_percent CHECK (((progress_percent >= 0) AND (progress_percent <= 100)))
);
--
-- Name: COLUMN knowledge_base_file.progress_percent; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_base_file.progress_percent IS '处理进度 0-100';
--
-- Name: COLUMN knowledge_base_file.processing_stage; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_base_file.processing_stage IS 'processing 阶段: uploading/parsing/ocr/embedding/summarizing/completed 等';
--
-- Name: knowledge_base_file_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.knowledge_base_file_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: knowledge_base_file_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.knowledge_base_file_id_seq OWNED BY public.knowledge_base_file.id;
--
-- Name: knowledge_base_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.knowledge_base_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: knowledge_base_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.knowledge_base_id_seq OWNED BY public.knowledge_base.id;
--
-- Name: knowledge_processing_task; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.knowledge_processing_task (
id integer NOT NULL,
user_id integer NOT NULL,
knowledge_base_id integer NOT NULL,
task_name character varying(255) NOT NULL,
instruction text NOT NULL,
file_ids integer[] NOT NULL,
task_type character varying(50) NOT NULL,
status character varying(20) DEFAULT 'pending'::character varying,
result text,
result_file_url text,
error_message text,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
started_at timestamp with time zone,
completed_at timestamp with time zone,
progress_percent smallint DEFAULT 0 NOT NULL,
processing_stage character varying(50),
CONSTRAINT ck_kb_processing_task_progress_percent CHECK (((progress_percent >= 0) AND (progress_percent <= 100)))
);
--
-- Name: TABLE knowledge_processing_task; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.knowledge_processing_task IS '知识加工任务表:合并、对比、总结等异步任务';
--
-- Name: COLUMN knowledge_processing_task.result_file_url; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_processing_task.result_file_url IS '加工结果文件的 OSS 下载链接';
--
-- Name: COLUMN knowledge_processing_task.progress_percent; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_processing_task.progress_percent IS '任务进度 0-100';
--
-- Name: COLUMN knowledge_processing_task.processing_stage; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.knowledge_processing_task.processing_stage IS '任务阶段';
--
-- Name: knowledge_processing_task_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.knowledge_processing_task_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: knowledge_processing_task_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.knowledge_processing_task_id_seq OWNED BY public.knowledge_processing_task.id;
--
-- Name: user_list; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.user_list (
id integer NOT NULL,
username character varying(50) NOT NULL,
email character varying(255) NOT NULL,
phone character varying(255) NOT NULL,
github_id character varying(100),
github_username character varying(100),
github_avatar_url text,
github_access_token text,
github_token_expires_at timestamp with time zone,
display_name character varying(100),
avatar_url text,
bio text,
is_active boolean DEFAULT true,
email_verified boolean DEFAULT false,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
last_login_at timestamp with time zone,
hashed_password character varying(255),
is_search boolean DEFAULT false,
is_reasoner boolean DEFAULT false,
enterprise_id integer DEFAULT 1 NOT NULL,
department_id integer,
role character varying(32) DEFAULT 'employee'::character varying NOT NULL,
is_first_login boolean DEFAULT true NOT NULL,
allow_kb_upload boolean DEFAULT true NOT NULL
);
--
-- Name: COLUMN user_list.role; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.user_list.role IS 'admin | leader | employee';
--
-- Name: COLUMN user_list.is_first_login; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.user_list.is_first_login IS '首次登录可强制改密(可选业务)';
--
-- Name: COLUMN user_list.allow_kb_upload; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON COLUMN public.user_list.allow_kb_upload IS '是否允许上传文件到知识库(上级领导或 admin 可关闭)';
--
-- Name: user_list_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.user_list_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: user_list_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.user_list_id_seq OWNED BY public.user_list.id;
--
-- Name: chat_message_file id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_message_file ALTER COLUMN id SET DEFAULT nextval('public.chat_message_file_id_seq'::regclass);
--
-- Name: chat_messages id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_messages ALTER COLUMN id SET DEFAULT nextval('public.chat_messages_id_seq'::regclass);
--
-- Name: chat_thread_chunk id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_thread_chunk ALTER COLUMN id SET DEFAULT nextval('public.chat_thread_chunk_id_seq'::regclass);
--
-- Name: chat_thread_file id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_thread_file ALTER COLUMN id SET DEFAULT nextval('public.chat_thread_file_id_seq'::regclass);
--
-- Name: chat_threads id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_threads ALTER COLUMN id SET DEFAULT nextval('public.chat_threads_id_seq'::regclass);
--
-- Name: department id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.department ALTER COLUMN id SET DEFAULT nextval('public.department_id_seq'::regclass);
--
-- Name: enterprise id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.enterprise ALTER COLUMN id SET DEFAULT nextval('public.enterprise_id_seq'::regclass);
--
-- Name: graphs id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs ALTER COLUMN id SET DEFAULT nextval('public.graphs_id_seq'::regclass);
--
-- Name: kb_audit_log id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log ALTER COLUMN id SET DEFAULT nextval('public.kb_audit_log_id_seq'::regclass);
--
-- Name: knowledge_base id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base ALTER COLUMN id SET DEFAULT nextval('public.knowledge_base_id_seq'::regclass);
--
-- Name: knowledge_base_chunk id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_chunk ALTER COLUMN id SET DEFAULT nextval('public.knowledge_base_chunk_id_seq'::regclass);
--
-- Name: knowledge_base_file id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_file ALTER COLUMN id SET DEFAULT nextval('public.knowledge_base_file_id_seq'::regclass);
--
-- Name: knowledge_processing_task id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_processing_task ALTER COLUMN id SET DEFAULT nextval('public.knowledge_processing_task_id_seq'::regclass);
--
-- Name: user_list id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list ALTER COLUMN id SET DEFAULT nextval('public.user_list_id_seq'::regclass);
--
-- Name: chat_message_file chat_message_file_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_message_file
ADD CONSTRAINT chat_message_file_pkey PRIMARY KEY (id);
--
-- Name: chat_messages chat_messages_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_messages
ADD CONSTRAINT chat_messages_pkey PRIMARY KEY (id);
--
-- Name: chat_thread_chunk chat_thread_chunk_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_thread_chunk
ADD CONSTRAINT chat_thread_chunk_pkey PRIMARY KEY (id);
--
-- Name: chat_thread_file chat_thread_file_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_thread_file
ADD CONSTRAINT chat_thread_file_pkey PRIMARY KEY (id);
--
-- Name: chat_threads chat_threads_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_threads
ADD CONSTRAINT chat_threads_pkey PRIMARY KEY (id);
--
-- Name: checkpoint_blobs checkpoint_blobs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.checkpoint_blobs
ADD CONSTRAINT checkpoint_blobs_pkey PRIMARY KEY (thread_id, checkpoint_ns, channel, version);
--
-- Name: checkpoint_migrations checkpoint_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.checkpoint_migrations
ADD CONSTRAINT checkpoint_migrations_pkey PRIMARY KEY (v);
--
-- Name: checkpoint_writes checkpoint_writes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.checkpoint_writes
ADD CONSTRAINT checkpoint_writes_pkey PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx);
--
-- Name: checkpoints checkpoints_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.checkpoints
ADD CONSTRAINT checkpoints_pkey PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id);
--
-- Name: department department_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.department
ADD CONSTRAINT department_pkey PRIMARY KEY (id);
--
-- Name: enterprise enterprise_code_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.enterprise
ADD CONSTRAINT enterprise_code_key UNIQUE (code);
--
-- Name: enterprise enterprise_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.enterprise
ADD CONSTRAINT enterprise_pkey PRIMARY KEY (id);
--
-- Name: graphs graphs_neo4j_graph_id_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs
ADD CONSTRAINT graphs_neo4j_graph_id_key UNIQUE (neo4j_graph_id);
--
-- Name: graphs graphs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs
ADD CONSTRAINT graphs_pkey PRIMARY KEY (id);
--
-- Name: kb_audit_log kb_audit_log_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_pkey PRIMARY KEY (id);
--
-- Name: knowledge_base_chunk knowledge_base_chunk_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_chunk
ADD CONSTRAINT knowledge_base_chunk_pkey PRIMARY KEY (id);
--
-- Name: knowledge_base_file knowledge_base_file_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_file
ADD CONSTRAINT knowledge_base_file_pkey PRIMARY KEY (id);
--
-- Name: knowledge_base knowledge_base_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base
ADD CONSTRAINT knowledge_base_pkey PRIMARY KEY (id);
--
-- Name: knowledge_processing_task knowledge_processing_task_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_processing_task
ADD CONSTRAINT knowledge_processing_task_pkey PRIMARY KEY (id);
--
-- Name: chat_messages uk_checkpoint_message; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_messages
ADD CONSTRAINT uk_checkpoint_message UNIQUE (checkpoint_id, message_index);
--
-- Name: chat_message_file uk_message_file; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_message_file
ADD CONSTRAINT uk_message_file UNIQUE (checkpoint_id, message_index, file_id);
--
-- Name: chat_threads uk_thread_id; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_threads
ADD CONSTRAINT uk_thread_id UNIQUE (thread_id);
--
-- Name: user_list unique_email; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT unique_email UNIQUE (email);
--
-- Name: user_list unique_github_id; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT unique_github_id UNIQUE (github_id);
--
-- Name: department uq_department_enterprise_name; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.department
ADD CONSTRAINT uq_department_enterprise_name UNIQUE (enterprise_id, name);
--
-- Name: user_list user_list_phone_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT user_list_phone_key UNIQUE (phone);
--
-- Name: user_list user_list_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT user_list_pkey PRIMARY KEY (id);
--
-- Name: user_list user_list_username_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT user_list_username_key UNIQUE (username);
--
-- Name: checkpoint_blobs_thread_id_idx; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX checkpoint_blobs_thread_id_idx ON public.checkpoint_blobs USING btree (thread_id);
--
-- Name: checkpoint_writes_thread_id_idx; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX checkpoint_writes_thread_id_idx ON public.checkpoint_writes USING btree (thread_id);
--
-- Name: checkpoints_thread_id_idx; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX checkpoints_thread_id_idx ON public.checkpoints USING btree (thread_id);
--
-- Name: idx_chat_message_file_checkpoint; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_message_file_checkpoint ON public.chat_message_file USING btree (checkpoint_id, message_index);
--
-- Name: idx_chat_message_file_file_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_message_file_file_id ON public.chat_message_file USING btree (file_id);
--
-- Name: idx_chat_message_file_thread_checkpoint; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_message_file_thread_checkpoint ON public.chat_message_file USING btree (thread_id, checkpoint_id);
--
-- Name: idx_chat_message_file_thread_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_message_file_thread_id ON public.chat_message_file USING btree (thread_id);
--
-- Name: idx_chat_messages_checkpoint_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_checkpoint_id ON public.chat_messages USING btree (checkpoint_id);
--
-- Name: idx_chat_messages_content_search; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_content_search ON public.chat_messages USING gin (to_tsvector('simple'::regconfig, content));
--
-- Name: idx_chat_messages_has_files; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_has_files ON public.chat_messages USING btree (has_files);
--
-- Name: idx_chat_messages_metadata; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_metadata ON public.chat_messages USING gin (metadata);
--
-- Name: idx_chat_messages_role; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_role ON public.chat_messages USING btree (role);
--
-- Name: idx_chat_messages_thread_created; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_thread_created ON public.chat_messages USING btree (thread_id, created_at DESC);
--
-- Name: idx_chat_messages_thread_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_messages_thread_id ON public.chat_messages USING btree (thread_id);
--
-- Name: idx_chat_thread_chunk_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_chunk_created_at ON public.chat_thread_chunk USING btree (created_at);
--
-- Name: idx_chat_thread_chunk_file_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_chunk_file_id ON public.chat_thread_chunk USING btree (file_id);
--
-- Name: idx_chat_thread_chunk_file_thread; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_chunk_file_thread ON public.chat_thread_chunk USING btree (file_id, thread_id);
--
-- Name: idx_chat_thread_chunk_thread_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_chunk_thread_id ON public.chat_thread_chunk USING btree (thread_id);
--
-- Name: idx_chat_thread_chunk_vector_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_chunk_vector_id ON public.chat_thread_chunk USING btree (vector_id);
--
-- Name: idx_chat_thread_file_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_created_at ON public.chat_thread_file USING btree (created_at);
--
-- Name: idx_chat_thread_file_is_deleted; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_is_deleted ON public.chat_thread_file USING btree (is_deleted);
--
-- Name: idx_chat_thread_file_status; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_status ON public.chat_thread_file USING btree (status);
--
-- Name: idx_chat_thread_file_thread_deleted; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_thread_deleted ON public.chat_thread_file USING btree (thread_id, is_deleted);
--
-- Name: idx_chat_thread_file_thread_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_thread_id ON public.chat_thread_file USING btree (thread_id);
--
-- Name: idx_chat_thread_file_thread_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_thread_user ON public.chat_thread_file USING btree (thread_id, user_id);
--
-- Name: idx_chat_thread_file_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_thread_file_user_id ON public.chat_thread_file USING btree (user_id);
--
-- Name: idx_chat_threads_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_threads_created_at ON public.chat_threads USING btree (created_at DESC);
--
-- Name: idx_chat_threads_knowledge_graph_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_threads_knowledge_graph_id ON public.chat_threads USING btree (knowledge_graph_id);
--
-- Name: idx_chat_threads_novel_graph_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_threads_novel_graph_id ON public.chat_threads USING btree (novel_graph_id);
--
-- Name: idx_chat_threads_user_created; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_threads_user_created ON public.chat_threads USING btree (user_id, created_at DESC);
--
-- Name: idx_chat_threads_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_chat_threads_user_id ON public.chat_threads USING btree (user_id);
--
-- Name: idx_department_enterprise_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_department_enterprise_id ON public.department USING btree (enterprise_id);
--
-- Name: idx_department_leader_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_department_leader_user_id ON public.department USING btree (leader_user_id);
--
-- Name: idx_graphs_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_created_at ON public.graphs USING btree (created_at DESC);
--
-- Name: idx_graphs_creator; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_creator ON public.graphs USING btree (creator_id);
--
-- Name: idx_graphs_ent_vis; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_ent_vis ON public.graphs USING btree (enterprise_id, visibility);
--
-- Name: idx_graphs_enterprise; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_enterprise ON public.graphs USING btree (enterprise_id);
--
-- Name: idx_graphs_graph_type; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_graph_type ON public.graphs USING btree (user_id, graph_type);
--
-- Name: idx_graphs_neo4j_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_neo4j_id ON public.graphs USING btree (neo4j_graph_id);
--
-- Name: idx_graphs_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_graphs_user_id ON public.graphs USING btree (user_id);
--
-- Name: idx_kb_audit_log_action; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_action ON public.kb_audit_log USING btree (action);
--
-- Name: idx_kb_audit_log_actor_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_actor_id ON public.kb_audit_log USING btree (actor_id);
--
-- Name: idx_kb_audit_log_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_created_at ON public.kb_audit_log USING btree (created_at DESC);
--
-- Name: idx_kb_audit_log_department_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_department_id ON public.kb_audit_log USING btree (department_id);
--
-- Name: idx_kb_audit_log_ent_dept_created; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_ent_dept_created ON public.kb_audit_log USING btree (enterprise_id, department_id, created_at DESC);
--
-- Name: idx_kb_audit_log_enterprise_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_enterprise_id ON public.kb_audit_log USING btree (enterprise_id);
--
-- Name: idx_kb_audit_log_kb_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_kb_id ON public.kb_audit_log USING btree (kb_id);
--
-- Name: idx_kb_audit_log_target_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_audit_log_target_user_id ON public.kb_audit_log USING btree (target_user_id);
--
-- Name: idx_kb_chunk_file_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_chunk_file_id ON public.knowledge_base_chunk USING btree (file_id);
--
-- Name: idx_kb_chunk_kb_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_chunk_kb_id ON public.knowledge_base_chunk USING btree (knowledge_base_id);
--
-- Name: idx_kb_chunk_metadata; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_chunk_metadata ON public.knowledge_base_chunk USING gin (metadata);
--
-- Name: idx_kb_chunk_vector_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_chunk_vector_id ON public.knowledge_base_chunk USING btree (vector_id);
--
-- Name: idx_kb_file_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_file_created_at ON public.knowledge_base_file USING btree (created_at);
--
-- Name: idx_kb_file_kb_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_file_kb_id ON public.knowledge_base_file USING btree (knowledge_base_id);
--
-- Name: idx_kb_file_status; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_file_status ON public.knowledge_base_file USING btree (status);
--
-- Name: idx_kb_file_unique_active; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX idx_kb_file_unique_active ON public.knowledge_base_file USING btree (knowledge_base_id, file_name) WHERE (is_deleted = false);
--
-- Name: idx_kb_file_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_file_user_id ON public.knowledge_base_file USING btree (user_id);
--
-- Name: idx_kb_processing_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_processing_created_at ON public.knowledge_processing_task USING btree (created_at DESC);
--
-- Name: idx_kb_processing_kb_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_processing_kb_id ON public.knowledge_processing_task USING btree (knowledge_base_id);
--
-- Name: idx_kb_processing_status; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_processing_status ON public.knowledge_processing_task USING btree (status);
--
-- Name: idx_kb_processing_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_processing_user_id ON public.knowledge_processing_task USING btree (user_id);
--
-- Name: idx_kb_processing_user_status; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_kb_processing_user_status ON public.knowledge_processing_task USING btree (user_id, status);
--
-- Name: idx_knowledge_base_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_created_at ON public.knowledge_base USING btree (created_at);
--
-- Name: idx_knowledge_base_creator; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_creator ON public.knowledge_base USING btree (creator_id);
--
-- Name: idx_knowledge_base_ent_vis; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_ent_vis ON public.knowledge_base USING btree (enterprise_id, visibility) WHERE (is_deleted = false);
--
-- Name: idx_knowledge_base_enterprise; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_enterprise ON public.knowledge_base USING btree (enterprise_id);
--
-- Name: idx_knowledge_base_is_deleted; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_is_deleted ON public.knowledge_base USING btree (is_deleted);
--
-- Name: idx_knowledge_base_user_deleted; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_user_deleted ON public.knowledge_base USING btree (user_id, is_deleted);
--
-- Name: idx_knowledge_base_user_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_user_id ON public.knowledge_base USING btree (user_id);
--
-- Name: idx_knowledge_base_user_name; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_knowledge_base_user_name ON public.knowledge_base USING btree (user_id, name);
--
-- Name: idx_user_list_created_at; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_created_at ON public.user_list USING btree (created_at);
--
-- Name: idx_user_list_department_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_department_id ON public.user_list USING btree (department_id);
--
-- Name: idx_user_list_email; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_email ON public.user_list USING btree (email);
--
-- Name: idx_user_list_enterprise_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_enterprise_id ON public.user_list USING btree (enterprise_id);
--
-- Name: idx_user_list_github_id; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_github_id ON public.user_list USING btree (github_id);
--
-- Name: idx_user_list_role; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_role ON public.user_list USING btree (role);
--
-- Name: idx_user_list_username; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_list_username ON public.user_list USING btree (username);
--
-- Name: uk_chat_thread_file_thread_name_active; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX uk_chat_thread_file_thread_name_active ON public.chat_thread_file USING btree (thread_id, file_name) WHERE (is_deleted = false);
--
-- Name: uk_user_knowledge_base_name_active; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX uk_user_knowledge_base_name_active ON public.knowledge_base USING btree (user_id, name) WHERE (is_deleted = false);
--
-- Name: department department_enterprise_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.department
ADD CONSTRAINT department_enterprise_id_fkey FOREIGN KEY (enterprise_id) REFERENCES public.enterprise(id) ON DELETE CASCADE;
--
-- Name: department department_leader_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.department
ADD CONSTRAINT department_leader_user_id_fkey FOREIGN KEY (leader_user_id) REFERENCES public.user_list(id) ON DELETE SET NULL;
--
-- Name: department department_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.department
ADD CONSTRAINT department_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.department(id) ON DELETE SET NULL;
--
-- Name: chat_message_file fk_chat_message_file_file; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_message_file
ADD CONSTRAINT fk_chat_message_file_file FOREIGN KEY (file_id) REFERENCES public.chat_thread_file(id) ON DELETE CASCADE;
--
-- Name: chat_thread_chunk fk_chat_thread_chunk_file; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_thread_chunk
ADD CONSTRAINT fk_chat_thread_chunk_file FOREIGN KEY (file_id) REFERENCES public.chat_thread_file(id) ON DELETE CASCADE;
--
-- Name: chat_thread_file fk_chat_thread_file_user; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_thread_file
ADD CONSTRAINT fk_chat_thread_file_user FOREIGN KEY (user_id) REFERENCES public.user_list(id) ON DELETE CASCADE;
--
-- Name: chat_threads fk_chat_threads_knowledge_graph; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_threads
ADD CONSTRAINT fk_chat_threads_knowledge_graph FOREIGN KEY (knowledge_graph_id) REFERENCES public.graphs(id) ON DELETE SET NULL;
--
-- Name: graphs fk_graphs_user; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs
ADD CONSTRAINT fk_graphs_user FOREIGN KEY (user_id) REFERENCES public.user_list(id) ON DELETE CASCADE;
--
-- Name: knowledge_base_chunk fk_kb; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_chunk
ADD CONSTRAINT fk_kb FOREIGN KEY (knowledge_base_id) REFERENCES public.knowledge_base(id) ON DELETE CASCADE;
--
-- Name: knowledge_base_chunk fk_kb_file; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_chunk
ADD CONSTRAINT fk_kb_file FOREIGN KEY (file_id) REFERENCES public.knowledge_base_file(id) ON DELETE CASCADE;
--
-- Name: knowledge_processing_task fk_kb_processing_kb; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_processing_task
ADD CONSTRAINT fk_kb_processing_kb FOREIGN KEY (knowledge_base_id) REFERENCES public.knowledge_base(id) ON DELETE CASCADE;
--
-- Name: knowledge_processing_task fk_kb_processing_user; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_processing_task
ADD CONSTRAINT fk_kb_processing_user FOREIGN KEY (user_id) REFERENCES public.user_list(id) ON DELETE CASCADE;
--
-- Name: knowledge_base_file fk_knowledge_base; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base_file
ADD CONSTRAINT fk_knowledge_base FOREIGN KEY (knowledge_base_id) REFERENCES public.knowledge_base(id) ON DELETE CASCADE;
--
-- Name: chat_threads fk_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.chat_threads
ADD CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES public.user_list(id) ON DELETE CASCADE;
--
-- Name: graphs graphs_creator_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs
ADD CONSTRAINT graphs_creator_id_fkey FOREIGN KEY (creator_id) REFERENCES public.user_list(id) ON DELETE SET NULL;
--
-- Name: graphs graphs_department_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs
ADD CONSTRAINT graphs_department_id_fkey FOREIGN KEY (department_id) REFERENCES public.department(id) ON DELETE SET NULL;
--
-- Name: graphs graphs_enterprise_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.graphs
ADD CONSTRAINT graphs_enterprise_id_fkey FOREIGN KEY (enterprise_id) REFERENCES public.enterprise(id);
--
-- Name: kb_audit_log kb_audit_log_actor_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_actor_id_fkey FOREIGN KEY (actor_id) REFERENCES public.user_list(id) ON DELETE CASCADE;
--
-- Name: kb_audit_log kb_audit_log_department_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_department_id_fkey FOREIGN KEY (department_id) REFERENCES public.department(id) ON DELETE SET NULL;
--
-- Name: kb_audit_log kb_audit_log_enterprise_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_enterprise_id_fkey FOREIGN KEY (enterprise_id) REFERENCES public.enterprise(id) ON DELETE CASCADE;
--
-- Name: kb_audit_log kb_audit_log_file_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_file_id_fkey FOREIGN KEY (file_id) REFERENCES public.knowledge_base_file(id) ON DELETE SET NULL;
--
-- Name: kb_audit_log kb_audit_log_kb_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_kb_id_fkey FOREIGN KEY (kb_id) REFERENCES public.knowledge_base(id) ON DELETE SET NULL;
--
-- Name: kb_audit_log kb_audit_log_target_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.kb_audit_log
ADD CONSTRAINT kb_audit_log_target_user_id_fkey FOREIGN KEY (target_user_id) REFERENCES public.user_list(id) ON DELETE SET NULL;
--
-- Name: knowledge_base knowledge_base_creator_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base
ADD CONSTRAINT knowledge_base_creator_id_fkey FOREIGN KEY (creator_id) REFERENCES public.user_list(id) ON DELETE CASCADE;
--
-- Name: knowledge_base knowledge_base_department_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base
ADD CONSTRAINT knowledge_base_department_id_fkey FOREIGN KEY (department_id) REFERENCES public.department(id) ON DELETE SET NULL;
--
-- Name: knowledge_base knowledge_base_enterprise_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.knowledge_base
ADD CONSTRAINT knowledge_base_enterprise_id_fkey FOREIGN KEY (enterprise_id) REFERENCES public.enterprise(id);
--
-- Name: user_list user_list_department_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT user_list_department_id_fkey FOREIGN KEY (department_id) REFERENCES public.department(id) ON DELETE SET NULL;
--
-- Name: user_list user_list_enterprise_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_list
ADD CONSTRAINT user_list_enterprise_id_fkey FOREIGN KEY (enterprise_id) REFERENCES public.enterprise(id);
--
-- PostgreSQL database dump complete
--
\unrestrict IIs1ywVfui7Zb3f5SRgOBwj2LGJXpFF5jpVnQbpR7cCgjNpjBLehhEAmULW9yma