-- =====================================================
-- 用户错误日志表
-- 用于记录和统计用户操作过程中产生的错误
-- =====================================================

CREATE TABLE IF NOT EXISTS user_error_log (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(100) COMMENT '用户名（可为空，未登录用户）',
    error_type VARCHAR(50) NOT NULL COMMENT '错误类型枚举',
    error_code VARCHAR(50) COMMENT '错误代码',
    error_message TEXT COMMENT '错误消息',
    error_source VARCHAR(100) NOT NULL COMMENT '错误来源（服务类名或接口路径）',
    task_id VARCHAR(100) COMMENT '关联的任务ID',
    task_type VARCHAR(50) COMMENT '任务类型',
    request_path VARCHAR(500) COMMENT '请求路径',
    request_method VARCHAR(10) COMMENT '请求方法 GET/POST等',
    request_params TEXT COMMENT '请求参数（JSON格式）',
    stack_trace TEXT COMMENT '堆栈跟踪',
    ip_address VARCHAR(50) COMMENT 'IP地址',
    user_agent VARCHAR(500) COMMENT '用户代理',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    INDEX idx_username (username),
    INDEX idx_error_type (error_type),
    INDEX idx_created_at (created_at),
    INDEX idx_error_source (error_source),
    INDEX idx_task_id (task_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户错误日志表';

-- =====================================================
-- 错误类型说明：
-- TASK_SUBMIT_ERROR     - 任务提交失败
-- TASK_PROCESSING_ERROR - 任务处理失败
-- TASK_TIMEOUT          - 任务超时
-- TASK_CANCELLED        - 任务取消
-- API_CALL_ERROR        - API调用失败
-- API_RESPONSE_ERROR    - API响应异常
-- API_TIMEOUT           - API超时
-- PAYMENT_ERROR         - 支付失败
-- PAYMENT_CALLBACK_ERROR- 支付回调异常
-- REFUND_ERROR          - 退款失败
-- AUTH_ERROR            - 认证失败
-- TOKEN_EXPIRED         - Token过期
-- PERMISSION_DENIED     - 权限不足
-- DATA_VALIDATION_ERROR - 数据验证失败
-- DATA_NOT_FOUND        - 数据未找到
-- DATA_CONFLICT         - 数据冲突
-- FILE_UPLOAD_ERROR     - 文件上传失败
-- FILE_DOWNLOAD_ERROR   - 文件下载失败
-- FILE_PROCESS_ERROR    - 文件处理失败
-- SYSTEM_ERROR          - 系统错误
-- DATABASE_ERROR        - 数据库错误
-- NETWORK_ERROR         - 网络错误
-- UNKNOWN               - 未知错误
-- =====================================================
