| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- -- ----------------------------
- -- 数据库表结构和示例数据
- -- 特性:无外键约束、无版本管理
- -- 所有关联关系由应用代码控制
- -- ----------------------------
- -- ----------------------------
- -- 1. 意图与实体相关表
- -- ----------------------------
- -- 意图表:存储Rasa意图定义
- CREATE TABLE `intent` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '意图ID,自增主键',
- `name` varchar(100) NOT NULL COMMENT '意图名称,如greet、query_bill',
- `description` varchar(500) DEFAULT NULL COMMENT '意图描述',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_intent_name` (`name`) COMMENT '确保意图名称唯一'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储Rasa意图定义';
- -- 意图样本表:存储意图对应的用户输入示例
- CREATE TABLE `intent_example` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '样本ID,自增主键',
- `intent_id` bigint NOT NULL COMMENT '关联的意图ID(代码控制关联)',
- `text` varchar(1000) NOT NULL COMMENT '用户输入示例文本',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_intent_id` (`intent_id`) COMMENT '意图ID索引,加速查询'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储意图对应的用户输入示例';
- -- 实体表:存储Rasa实体定义
- CREATE TABLE `entity` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '实体ID,自增主键',
- `name` varchar(100) NOT NULL COMMENT '实体名称,如account_number、date',
- `description` varchar(500) DEFAULT NULL COMMENT '实体描述',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_entity_name` (`name`) COMMENT '确保实体名称唯一'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储Rasa实体定义';
- -- ----------------------------
- -- 2. 对话流程相关表
- -- ----------------------------
- -- 故事表:存储Rasa对话流程定义
- CREATE TABLE `story` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '故事ID,自增主键',
- `name` varchar(200) NOT NULL COMMENT '故事名称',
- `description` varchar(500) DEFAULT NULL COMMENT '故事描述',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_story_name` (`name`) COMMENT '确保故事名称唯一'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储Rasa对话流程定义';
- -- 故事步骤表:存储故事的具体步骤
- CREATE TABLE `story_step` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '步骤ID,自增主键',
- `story_id` bigint NOT NULL COMMENT '关联的故事ID(代码控制关联)',
- `step_order` int NOT NULL COMMENT '步骤顺序',
- `step_type` varchar(20) NOT NULL COMMENT '步骤类型(intent/action等)',
- `content` text NOT NULL COMMENT '步骤内容,JSON格式',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_story_id` (`story_id`) COMMENT '故事ID索引,加速查询'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储故事的具体步骤';
- -- ----------------------------
- -- 3. 动作与响应相关表
- -- ----------------------------
- -- 自定义动作表:存储对接第三方API的自定义动作配置
- CREATE TABLE `custom_action` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '动作ID,自增主键',
- `name` varchar(100) NOT NULL COMMENT '动作名称',
- `description` varchar(500) DEFAULT NULL COMMENT '动作描述',
- `http_method` varchar(10) NOT NULL COMMENT 'HTTP方法',
- `api_url` varchar(500) NOT NULL COMMENT 'API地址',
- `token` varchar(500) DEFAULT NULL COMMENT '鉴权Token',
- `headers` text COMMENT '请求头配置,JSON格式',
- `request_body` text COMMENT '请求体,JSON格式',
- `response_mapping` text COMMENT '响应映射规则,JSON格式',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_action_name` (`name`) COMMENT '确保动作名称唯一'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储对接第三方API的自定义动作配置';
- -- 响应模板表:存储Rasa响应模板
- CREATE TABLE `response` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '响应ID,自增主键',
- `name` varchar(100) NOT NULL COMMENT '响应名称,如utter_greet',
- `description` varchar(500) DEFAULT NULL COMMENT '响应描述',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_response_name` (`name`) COMMENT '确保响应名称唯一'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储Rasa响应模板';
- -- 响应内容表:存储响应的具体内容
- CREATE TABLE `response_content` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '响应内容ID,自增主键',
- `response_id` bigint NOT NULL COMMENT '关联的响应ID(代码控制关联)',
- `content_type` varchar(20) NOT NULL COMMENT '内容类型,如text、image',
- `text_content` varchar(2000) DEFAULT NULL COMMENT '文本内容',
- `media_url` varchar(500) DEFAULT NULL COMMENT '媒体URL',
- `content_order` int NOT NULL COMMENT '内容顺序',
- `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_response_id` (`response_id`) COMMENT '响应ID索引,加速查询'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储响应的具体内容';
- -- ----------------------------
- -- 4. 系统配置表
- -- ----------------------------
- -- 系统配置表:存储系统基础配置
- CREATE TABLE `system_config` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID,自增主键',
- `config_key` varchar(100) NOT NULL COMMENT '配置键,如rasa_server_url',
- `config_value` varchar(500) NOT NULL COMMENT '配置值',
- `description` varchar(500) DEFAULT NULL COMMENT '配置描述',
- `updated_by` varchar(100) DEFAULT NULL COMMENT '更新人',
- `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_config_key` (`config_key`) COMMENT '确保配置键唯一'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储系统配置信息';
- -- ----------------------------
- -- 示例数据插入
- -- ----------------------------
- -- 插入系统配置
- INSERT INTO `system_config` (`config_key`, `config_value`, `description`, `updated_by`) VALUES
- ('rasa_server_url', 'http://localhost:5005', 'Rasa服务器地址', 'system'),
- ('rasa_actions_url', 'http://localhost:5055', 'Rasa动作服务器地址', 'system'),
- ('log_level', 'INFO', '系统日志级别', 'system'),
- ('api_timeout', '30', 'API请求超时时间(秒)', 'system');
- -- 插入意图数据
- INSERT INTO `intent` (`name`, `description`) VALUES
- ('greet', '用户打招呼或问候'),
- ('goodbye', '用户告别或结束对话'),
- ('query_bill', '用户查询账单信息'),
- ('query_balance', '用户查询账户余额'),
- ('complain', '用户投诉或反馈问题');
- -- 插入意图样本数据
- INSERT INTO `intent_example` (`intent_id`, `text`) VALUES
- (1, '你好'),
- (1, '早上好'),
- (1, '嗨,在吗'),
- (1, '您好,请问有人吗'),
- (2, '再见'),
- (2, '拜拜'),
- (2, '下次见'),
- (2, '退出对话'),
- (3, '我的账单是多少'),
- (3, '查询一下我的消费记录'),
- (3, '看看我这个月花了多少钱'),
- (3, '上个月的账单明细'),
- (4, '我的账户还有多少余额'),
- (4, '查询余额'),
- (4, '我的卡里还有钱吗'),
- (5, '我要投诉'),
- (5, '这个服务太差了'),
- (5, '我有问题要反馈');
- -- 插入实体数据
- INSERT INTO `entity` (`name`, `description`) VALUES
- ('account_number', '银行账号'),
- ('date', '日期'),
- ('amount', '金额'),
- ('product', '产品名称'),
- ('user_id', '用户ID'),
- ('complaint_type', '投诉类型');
- -- 插入故事数据
- INSERT INTO `story` (`name`, `description`) VALUES
- ('greet_and_respond', '问候与回应的对话流程'),
- ('bill_inquiry', '账单查询的对话流程'),
- ('balance_inquiry', '余额查询的对话流程');
- -- 插入故事步骤数据
- INSERT INTO `story_step` (`story_id`, `step_order`, `step_type`, `content`) VALUES
- -- 问候对话流程
- (1, 1, 'intent', '{"name": "greet"}'),
- (1, 2, 'action', '{"name": "utter_greet"}'),
- (1, 3, 'intent', '{"name": "goodbye"}'),
- (1, 4, 'action', '{"name": "utter_goodbye"}'),
- -- 账单查询流程
- (2, 1, 'intent', '{"name": "query_bill"}'),
- (2, 2, 'action', '{"name": "utter_ask_account_number"}'),
- (2, 3, 'action', '{"name": "action_query_bill"}'),
- (2, 4, 'action', '{"name": "utter_bill_result"}'),
- -- 余额查询流程
- (3, 1, 'intent', '{"name": "query_balance"}'),
- (3, 2, 'action', '{"name": "utter_ask_account_number"}'),
- (3, 3, 'action', '{"name": "action_query_balance"}'),
- (3, 4, 'action', '{"name": "utter_balance_result"}');
- -- 插入自定义动作数据
- INSERT INTO `custom_action` (`name`, `description`, `http_method`, `api_url`, `token`, `headers`, `request_body`, `response_mapping`) VALUES
- ('action_query_bill', '查询账单信息', 'POST', 'https://api.example.com/bill/query', 'secret_token_123', '{"Content-Type": "application/json"}', '{"account": "{{account_number}}", "month": "{{bill_month}}"}', '{"total_amount": "data.total", "due_date": "data.due_date", "details": "data.details"}'),
- ('action_query_balance', '查询账户余额', 'GET', 'https://api.example.com/account/{{account_number}}/balance', 'secret_token_123', '{"Authorization": "Bearer {{token}}"}', NULL, '{"balance": "data.balance", "available": "data.available", "currency": "data.currency"}');
- -- 插入响应模板数据
- INSERT INTO `response` (`name`, `description`) VALUES
- ('utter_greet', '问候用户的响应'),
- ('utter_goodbye', '告别用户的响应'),
- ('utter_ask_account_number', '询问用户账号的响应'),
- ('utter_bill_result', '展示账单查询结果的响应'),
- ('utter_balance_result', '展示余额查询结果的响应');
- -- 插入响应内容数据
- INSERT INTO `response_content` (`response_id`, `content_type`, `text_content`, `media_url`, `content_order`) VALUES
- -- 问候响应
- (1, 'text', '你好!有什么可以帮助您的吗?', NULL, 1),
- (1, 'text', '您好!很高兴为您服务。', NULL, 2),
- (1, 'text', '欢迎咨询,我能为您做些什么?', NULL, 3),
- -- 告别响应
- (2, 'text', '再见!祝您生活愉快。', NULL, 1),
- (2, 'text', '感谢您的咨询,再见!', NULL, 2),
- (2, 'text', '有任何问题随时联系我们,再见!', NULL, 3),
- -- 询问账号
- (3, 'text', '请提供您的账号,以便我为您查询。', NULL, 1),
- (3, 'text', '麻烦告诉我您的账号信息,我会尽快为您处理。', NULL, 2),
- -- 账单结果
- (4, 'text', '您{{bill_month}}的账单总金额为{{total_amount}}元,到期日为{{due_date}}。', NULL, 1),
- (4, 'text', '查询到您的账单信息:总额{{total_amount}}元,需在{{due_date}}前支付。', NULL, 2),
- -- 余额结果
- (5, 'text', '您的账户当前余额为{{balance}}{{currency}},可用余额{{available}}{{currency}}。', NULL, 1),
- (5, 'text', '查询到您的账户余额:{{balance}}{{currency}}(可用:{{available}}{{currency}})。', NULL, 2);
|