#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
错误消息配置模块
包含各种错误消息的中文映射表
"""

from typing import Dict, Any

# 验证错误消息中文映射表
VALIDATION_ERROR_MESSAGES: Dict[str, str] = {
    # 字符串类型错误
    "string_too_short": "字符串长度不足，至少需要{min_length}个字符",
    "string_too_long": "字符串长度超出限制，最多允许{max_length}个字符",
    "string_pattern_mismatch": "字符串格式不符合要求",
    
    # 数值类型错误
    "value_error.number.not_ge": "数值必须大于或等于{ge}",
    "value_error.number.not_le": "数值必须小于或等于{le}",
    "value_error.number.not_gt": "数值必须大于{gt}",
    "value_error.number.not_lt": "数值必须小于{lt}",
    
    # 缺失与空值错误
    "missing": "缺少必填字段",
    "null": "不能为空值",
    "value_error.missing": "缺少必填字段",
    
    # 类型错误
    "type_error": "类型错误，期望{expected_type}",
    "type_error.integer": "必须是整数类型",
    "type_error.float": "必须是浮点数类型",
    "type_error.string": "必须是字符串类型",
    "type_error.bool": "必须是布尔类型",
    "type_error.list": "必须是列表类型",
    "type_error.dict": "必须是字典类型",
    "type_error.date": "必须是日期类型",
    "type_error.datetime": "必须是日期时间类型",
    "type_error.time": "必须是时间类型",
    
    # 值错误
    "value_error": "值错误",
    "value_error.any_str.max_length": "字符串长度不能超过{limit_value}",
    "value_error.decimal.max_digits": "数字总位数不能超过{max_digits}",
    "value_error.decimal.max_places": "小数位数不能超过{decimal_places}",
    "value_error.decimal.not_finite": "数值必须是有限的",
    "value_error.email": "邮箱格式不正确",
    "value_error.url": "URL格式不正确",
    "value_error.uuid": "UUID格式不正确",
    "value_error.json": "JSON格式不正确",
    
    # 列表相关错误
    "list_type": "必须是列表类型",
    "list_min_items": "列表至少需要{min_items}个元素",
    "list_max_items": "列表最多允许{max_items}个元素",
    "list_unique_items": "列表元素必须唯一",
    
    # 日期时间相关错误
    "date_from_datetime_inexact": "日期转换不准确",
    "date_from_datetime_not_allowed": "不允许从日期时间转换为日期",
    "time_delta_in_wrong_format": "时间增量格式错误",
    
    # 枚举相关错误
    "enum": "值必须是预设的枚举值之一",
    
    # 布尔相关错误
    "boolean_not_none": "布尔值不能为空",
    
    # 对象相关错误
    "object_extra": "不允许额外字段",
    "object_invalid": "对象无效"
}

# 其他业务错误消息，可根据需要扩展
BUSINESS_ERROR_MESSAGES: Dict[str, str] = {
    "record_not_found": "记录不存在",
    "permission_denied": "权限不足",
    "already_exists": "记录已存在",
    "operation_failed": "操作失败"
}

# HTTP错误状态码对应的消息
HTTP_ERROR_MESSAGES: Dict[int, str] = {
    400: "请求参数有误",
    401: "未授权访问",
    403: "禁止访问",
    404: "资源不存在",
    405: "请求方法不允许",
    408: "请求超时",
    409: "资源冲突",
    422: "请求参数验证失败",
    429: "请求过于频繁",
    500: "服务器内部错误",
    502: "网关错误",
    503: "服务暂时不可用",
    504: "网关超时"
} 