"""
系统日志 Schema
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field


class SystemLogBase(BaseModel):
    """系统日志基础Schema"""
    level: str = Field(..., description="日志级别: debug, info, warning, error")
    type: str = Field(..., description="日志类型: system, user, api, error, security")
    user: Optional[str] = Field(None, description="操作用户")
    user_id: Optional[int] = Field(None, description="用户ID")
    ip: Optional[str] = Field(None, description="IP地址")
    message: str = Field(..., description="日志消息")
    user_agent: Optional[str] = Field(None, description="User Agent")
    path: Optional[str] = Field(None, description="请求路径")
    method: Optional[str] = Field(None, description="请求方法")
    extra_data: Optional[str] = Field(None, description="额外数据（JSON格式）")


class SystemLogCreate(SystemLogBase):
    """创建系统日志Schema"""
    pass


class SystemLogResponse(SystemLogBase):
    """系统日志响应Schema"""
    id: int
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True


class SystemLogQuery(BaseModel):
    """系统日志查询参数"""
    level: Optional[str] = Field(None, description="日志级别筛选")
    type: Optional[str] = Field(None, description="日志类型筛选")
    user: Optional[str] = Field(None, description="用户筛选")
    keyword: Optional[str] = Field(None, description="关键词搜索（搜索message字段）")
    start_date: Optional[datetime] = Field(None, description="开始日期")
    end_date: Optional[datetime] = Field(None, description="结束日期")
    page: int = Field(1, ge=1, description="页码")
    page_size: int = Field(20, ge=1, le=100, description="每页数量")


class SystemLogListResponse(BaseModel):
    """系统日志列表响应"""
    items: list[SystemLogResponse]
    total: int
    page: int
    page_size: int
    total_pages: int



