| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- """
- 平台API Key数据传输对象定义
- 定义平台API Key相关API请求和响应的数据结构
- 需求: 7.1, 7.5, 7.6
- """
- from datetime import datetime
- from typing import Optional
- from pydantic import BaseModel, ConfigDict, Field
- class ApiKeyCreate(BaseModel):
- """创建API Key请求
-
- 需求 7.5: 用户创建API Key时允许设置备注名称
- 新增: 支持设置密钥类型
- """
- name: Optional[str] = Field(None, max_length=100, description="备注名称", examples=["我的API密钥"])
- key_type: str = Field(
- default="public",
- pattern="^(public|local)$",
- description="密钥类型:public(公钥,访问云端模型)/ local(本地私钥,访问本地模型)",
- examples=["public"]
- )
- class ApiKeyResponse(BaseModel):
- """API Key响应(列表展示用)
-
- 需求 7.3: API Key列表展示时仅显示密钥的前缀部分(如sk-aigc-xxxx...xxxx)
- 需求 7.6: 支持查看、禁用、启用、删除操作
- 新增: 密钥类型
- """
- id: int
- api_key_prefix: str = Field(..., description="脱敏显示,如sk-aigc-xxxx...xxxx")
- name: Optional[str] = Field(None, description="备注名称")
- status: str = Field(..., description="状态:active/disabled")
- key_type: str = Field(..., description="密钥类型:public/local")
- last_used_at: Optional[datetime] = Field(None, description="最后使用时间")
- created_at: datetime
- model_config = ConfigDict(from_attributes=True)
- class ApiKeyCreateResponse(BaseModel):
- """创建API Key响应(包含完整密钥,仅创建时返回一次)
-
- 需求 7.1: 生成以"sk-aigc-"为前缀、总长度48字符的密钥
- 需求 7.2: 仅在创建时完整显示一次密钥内容
- 新增: 密钥类型
- """
- id: int
- api_key: str = Field(..., description="完整密钥(仅此一次显示)")
- api_key_prefix: str = Field(..., description="密钥前缀")
- name: Optional[str] = Field(None, description="备注名称")
- key_type: str = Field(..., description="密钥类型:public/local")
- created_at: datetime
- class ApiKeyStatusUpdate(BaseModel):
- """更新API Key状态请求
-
- 需求 7.6: 支持禁用、启用操作
- """
- status: str = Field(..., pattern="^(active|disabled)$", description="状态:active/disabled", examples=["active"])
|