81 lines
1.5 KiB
Python
81 lines
1.5 KiB
Python
"""
|
|
Pydantic 数据模型
|
|
"""
|
|
from pydantic import BaseModel
|
|
from typing import Optional, Dict, Any, List
|
|
from datetime import datetime
|
|
|
|
|
|
# ============ 认证相关 ============
|
|
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
|
|
|
|
class UserLogin(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class UserChangePassword(BaseModel):
|
|
old_password: str
|
|
new_password: str
|
|
|
|
|
|
# ============ 客户相关 ============
|
|
|
|
class CustomerBase(BaseModel):
|
|
name: str
|
|
country: Optional[str] = None
|
|
source_country: Optional[str] = None
|
|
notes: Optional[str] = None
|
|
|
|
|
|
class CustomerCreate(CustomerBase):
|
|
import_data: Optional[Dict] = None
|
|
export_data: Optional[Dict] = None
|
|
raw_data: Optional[Dict] = None
|
|
|
|
|
|
class CustomerResponse(CustomerBase):
|
|
id: int
|
|
import_data: Optional[Dict] = None
|
|
export_data: Optional[Dict] = None
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# ============ 发现/搜索相关 ============
|
|
|
|
class SearchRequest(BaseModel):
|
|
keyword: str
|
|
page: int = 1
|
|
page_size: int = 10
|
|
|
|
|
|
class SearchResult(BaseModel):
|
|
name: str
|
|
country: Optional[str] = None
|
|
source: str = "fumamx"
|
|
|
|
|
|
class CompanyDetailRequest(BaseModel):
|
|
name: str
|
|
country: Optional[str] = ""
|
|
|
|
|
|
# ============ 设置相关 ============
|
|
|
|
class CookieSetting(BaseModel):
|
|
cookie_content: str
|
|
|
|
|
|
class SystemStatus(BaseModel):
|
|
logged_in: bool
|
|
user: Optional[str] = None
|
|
cookie_valid: bool
|
|
tokens_valid: bool = False
|