-- =============================================
-- 工具服务模块数据库表
-- =============================================

-- ----------------------------
-- 1. 工具配置表
-- ----------------------------
DROP TABLE IF EXISTS `tool_config`;
CREATE TABLE `tool_config` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `tool_code` varchar(64) NOT NULL COMMENT '工具编码（唯一标识）',
    `tool_name` varchar(128) NOT NULL COMMENT '工具名称',
    `category` varchar(32) NOT NULL COMMENT '工具分类（douyin/xiaohongshu/wechat_mp）',
    `description` varchar(512) DEFAULT NULL COMMENT '工具描述',
    `api_endpoint` varchar(256) NOT NULL COMMENT 'API端点路径',
    `request_method` varchar(10) NOT NULL DEFAULT 'GET' COMMENT '请求方法（GET/POST）',
    `points_cost` int(11) NOT NULL DEFAULT 1 COMMENT '调用一次消耗的积分',
    `is_enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用（0禁用/1启用）',
    `sort_order` int(11) NOT NULL DEFAULT 0 COMMENT '排序顺序',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_tool_code` (`tool_code`),
    KEY `idx_category` (`category`),
    KEY `idx_is_enabled` (`is_enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工具配置表';

-- ----------------------------
-- 2. 工具调用记录表
-- ----------------------------
DROP TABLE IF EXISTS `tool_usage_log`;
CREATE TABLE `tool_usage_log` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `usage_no` varchar(64) NOT NULL COMMENT '调用流水号（唯一）',
    `user_id` bigint(20) NOT NULL COMMENT '用户ID',
    `tool_id` bigint(20) DEFAULT NULL COMMENT '工具配置ID',
    `tool_code` varchar(64) NOT NULL COMMENT '工具编码',
    `tool_name` varchar(128) DEFAULT NULL COMMENT '工具名称',
    `points_cost` int(11) NOT NULL DEFAULT 0 COMMENT '消耗积分数',
    `request_params` text COMMENT '请求参数（JSON格式）',
    `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '响应状态（success/failed）',
    `response_data` mediumtext COMMENT '响应数据（JSON格式，不存储）',
    `error_message` text DEFAULT NULL COMMENT '错误信息',
    `request_duration` bigint(20) DEFAULT NULL COMMENT '请求耗时（毫秒）',
    `client_ip` varchar(50) DEFAULT NULL COMMENT '客户端IP',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '调用时间',
    `is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_usage_no` (`usage_no`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_tool_code` (`tool_code`),
    KEY `idx_status` (`status`),
    KEY `idx_create_time` (`create_time`),
    KEY `idx_user_tool` (`user_id`, `tool_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工具调用记录表';

-- ----------------------------
-- 3. 工具使用每日统计表
-- ----------------------------
DROP TABLE IF EXISTS `tool_usage_daily_stats`;
CREATE TABLE `tool_usage_daily_stats` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `stats_date` date NOT NULL COMMENT '统计日期',
    `tool_id` bigint(20) DEFAULT NULL COMMENT '工具配置ID',
    `tool_code` varchar(64) NOT NULL COMMENT '工具编码',
    `tool_name` varchar(128) DEFAULT NULL COMMENT '工具名称',
    `total_calls` int(11) NOT NULL DEFAULT 0 COMMENT '调用总次数',
    `success_calls` int(11) NOT NULL DEFAULT 0 COMMENT '成功次数',
    `failed_calls` int(11) NOT NULL DEFAULT 0 COMMENT '失败次数',
    `total_points_cost` int(11) NOT NULL DEFAULT 0 COMMENT '消耗总积分',
    `unique_users` int(11) NOT NULL DEFAULT 0 COMMENT '独立用户数',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_date_tool` (`stats_date`, `tool_code`),
    KEY `idx_stats_date` (`stats_date`),
    KEY `idx_tool_code` (`tool_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工具使用每日统计表';

-- ----------------------------
-- 初始化工具配置数据（TikHub API）
-- ----------------------------
INSERT INTO `tool_config` (`tool_code`, `tool_name`, `category`, `description`, `api_endpoint`, `request_method`, `points_cost`, `is_enabled`, `sort_order`) VALUES
-- 抖音接口
('douyin_user_videos', '获取用户主页视频', 'douyin', '根据sec_user_id获取用户发布的视频列表', '/api/v1/douyin/app/v3/fetch_user_post_videos', 'GET', 5, 1, 1),
('douyin_video_by_share', '根据分享链接获取视频', 'douyin', '通过抖音分享链接获取视频详情', '/api/v1/douyin/app/v3/fetch_one_video_by_share_url', 'GET', 3, 1, 2),

-- 小红书接口
('xiaohongshu_user_notes', '获取用户笔记列表', 'xiaohongshu', '获取指定用户的笔记列表', '/api/v1/xiaohongshu/app/get_user_notes', 'GET', 5, 1, 10),
('xiaohongshu_search_notes', '搜索笔记', 'xiaohongshu', '根据关键词搜索小红书笔记', '/api/v1/xiaohongshu/app/search_notes_v2', 'GET', 5, 1, 11),
('xiaohongshu_note_detail', '获取笔记详情', 'xiaohongshu', '获取指定笔记的详细信息', '/api/v1/xiaohongshu/app/get_note_info', 'GET', 3, 1, 12),

-- 微信公众号接口
('wechat_mp_article_list', '获取文章列表', 'wechat_mp', '获取公众号文章列表', '/api/v1/wechat_mp/web/fetch_mp_article_list', 'GET', 5, 1, 20),
('wechat_mp_article_json', '获取文章详情(JSON)', 'wechat_mp', '获取公众号文章详情（JSON格式）', '/api/v1/wechat_mp/web/fetch_mp_article_detail_json', 'GET', 10, 1, 21),
('wechat_mp_article_html', '获取文章详情(HTML)', 'wechat_mp', '获取公众号文章详情（HTML格式）', '/api/v1/wechat_mp/web/fetch_mp_article_detail_html', 'GET', 100, 1, 22);
