CREATE SCHEMA IF NOT EXISTS workcase; -- 系统外部人员(来客)管理 用于给系统外人员创建id DROP TABLE IF EXISTS sys.tb_guest CASCADE; CREATE TABLE sys.tb_guest( optsn VARCHAR(50) NOT NULL, -- 流水号 user_id VARCHAR(50) NOT NULL, -- 来客ID name VARCHAR(50) NOT NULL, -- 姓名 phone VARCHAR(50) DEFAULT NULL, -- 电话 email VARCHAR(50) DEFAULT NULL, -- 邮箱 wechat_id VARCHAR(50) DEFAULT NULL, -- 微信号 create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 update_time TIMESTAMPTZ DEFAULT NULL, -- 创建时间 delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 PRIMARY KEY (user_id), UNIQUE (wechat_id), UNIQUE (phone), UNIQUE (email) ); -- 客服对话记录,客服对话消息,包含ai、员工回答和来客提问,从ai.tb_chat同步ai对话时的数据 -- 先是ai对话,后转人工 -- 工单表 DROP TABLE IF EXISTS workcase.tb_workcase CASCADE; CREATE TABLE workcase.tb_workcase( optsn VARCHAR(50) NOT NULL, -- 流水号 workcase_id VARCHAR(50) NOT NULL, -- 工单ID chat_id VARCHAR(50) NOT NULL, -- 对话ID user_id VARCHAR(50) NOT NULL, -- 来客ID username VARCHAR(200) NOT NULL, -- 来客姓名 phone VARCHAR(20) NOT NULL, -- 来客电话 type VARCHAR(50) NOT NULL, -- 故障类型 device VARCHAR(50) NOT NULL, -- 设备名称 device_code VARCHAR(50) NOT NULL, -- 设备代码 imgs VARCHAR(50)[] DEFAULT '[]', -- 工单图片id emergency VARCHAR(50) NOT NULL DEFAULT 'normal', -- 紧急程度 normal-普通 emergency-紧急 status VARCHAR(50) NOT NULL DEFAULT 'pending', -- 状态 pending-待处理 processing-处理中 done-已完成 processor VARCHAR(50) DEFAULT NULL, -- 处理人 creator VARCHAR(50) NOT NULL, -- 创建人 create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间 deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除 PRIMARY KEY (workcase_id), UNIQUE (chat_id), UNIQUE (optsn) ); -- 工单处理过程表(包含工单流转) DROP TABLE IF EXISTS workcase.tb_workcase_process CASCADE; CREATE TABLE workcase.tb_workcase_process( optsn VARCHAR(50) NOT NULL, -- 流水号 workcase_id VARCHAR(50) NOT NULL, -- 工单ID process_id VARCHAR(50) NOT NULL, -- 过程id action VARCHAR(50) NOT NULL, -- 动作 info:记录,assign:指派,redeploy:转派,repeal:撤销,finish:完成 message VARCHAR(200) DEFAULT NULL, -- 消息 files VARCHAR(50)[] DEFAULT '[]', -- 携带文件 processor VARCHAR(50) DEFAULT NULL, -- 处理人(指派、转派专属) remark VARCHAR(500) DEFAULT NULL, -- 备注 creator VARCHAR(50) NOT NULL, -- 过程发起人 create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 PRIMARY KEY (process_id) ); -- 工单设备涉及的文件表 DROP TABLE IF EXISTS workcase.tb_workcase_device CASCADE; CREATE TABLE workcase.tb_workcase_device( optsn VARCHAR(50) NOT NULL, -- 流水号 workcase_id VARCHAR(50) NOT NULL, -- 工单ID device VARCHAR(50) NOT NULL, -- 设备名称 device_code VARCHAR(50) DEFAULT NULL, -- 设备代码 file_id VARCHAR(50) NOT NULL, -- 文件id file_name VARCHAR(50) NOT NULL, -- 文件名 file_root_id VARCHAR(50) DEFAULT NULL, -- 文件根id PRIMARY KEY(workcase_id, file_id) ); -- 来客对话、工单过程中生成的词云表 DROP TABLE IF EXISTS workcase.tb_word_cloud CASCADE; CREATE TABLE workcase.tb_word_cloud( optsn VARCHAR(50) NOT NULL, -- 流水号 word_id VARCHAR(50) NOT NULL, -- 词条ID word VARCHAR(100) NOT NULL, -- 词语 frequency INTEGER NOT NULL DEFAULT 1, -- 词频 source_type VARCHAR(20) NOT NULL, -- 来源类型 chat-聊天 workcase-工单 source_id VARCHAR(50) DEFAULT NULL, -- 来源ID(chat_id/workcase_id,NULL表示全局统计) category VARCHAR(50) DEFAULT NULL, -- 分类(如:故障类型、设备名称、情绪词等) stat_date DATE NOT NULL, -- 统计日期(按天聚合) create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 PRIMARY KEY (word_id), UNIQUE (word, source_type, source_id, stat_date) -- 同一天同一来源的词唯一 ); DROP TABLE IF EXISTS workcase.tb_word_cloud CASCADE; CREATE TABLE workcase.tb_word_cloud( word_id VARCHAR(50) NOT NULL, -- 词条ID word VARCHAR(100) NOT NULL, -- 词语 frequency INTEGER NOT NULL DEFAULT 1, -- 词频 category VARCHAR(50) DEFAULT NULL, -- 分类:fault-故障类型 device-设备 emotion-情绪词 stat_date DATE NOT NULL, -- 统计日期(按天聚合) create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间 PRIMARY KEY (word_id), UNIQUE (word, category, stat_date) -- 同一天同一分类的词唯一 );