from datetime import datetime from typing import Optional from fastapi import Query from pydantic import BaseModel, Field class TenantApiKeyCreate(BaseModel): """创建API Key的请求模型""" tenant_id: Optional[int] = Field(None, description="租户ID,默认使用当前用户的租户ID") description: Optional[str] = Field(None, description="备注") expired_days: Optional[int] = Field(365, description="过期天数,默认365天") class TenantApiKeyResponse(BaseModel): """API Key的响应模型""" id: int api_key: str api_secret: str status: str expired_at: Optional[datetime] created_time: datetime class Config: from_attributes = True class TenantApiKeyListResponse(BaseModel): """API Key列表的响应模型""" id: int api_key: str status: str expired_at: Optional[datetime] last_used_at: Optional[datetime] created_time: datetime description: Optional[str] class Config: from_attributes = True class TenantApiKeyUpdate(BaseModel): """更新API Key的请求模型""" status: str = Field(..., description="状态:0-正常,1-禁用") class TenantApiLogCreate(BaseModel): """创建API调用日志的请求模型""" api_key_id: Optional[int] = Field(None, description="API Key ID") tenant_id: int = Field(..., description="租户ID") endpoint: str = Field(..., description="调用的接口") method: str = Field(..., description="请求方法") request_ip: str = Field(..., description="请求IP") request_data: Optional[str] = Field(None, description="请求数据") response_code: int = Field(..., description="响应码") response_time: float = Field(..., description="响应时间(毫秒)") class TenantApiLogResponse(BaseModel): """API调用日志的响应模型""" id: int endpoint: str method: str request_ip: str response_code: int response_time: float created_time: datetime class Config: from_attributes = True class ApiKeyQueryParam: """API Key管理查询参数""" def __init__( self, tenant_id: int | None = Query(None, description="租户ID,默认使用当前用户的租户ID"), status: str | None = Query(None, description="状态:0-正常,1-禁用"), ) -> None: self.tenant_id = tenant_id self.status = status