75 lines
3.2 KiB
Python
75 lines
3.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class GoodNameItem(BaseModel):
|
|
"""佳名赏析项(简化版,用于列表展示)"""
|
|
name: str = Field(..., description="名字")
|
|
source: str = Field(..., description="出处")
|
|
desc: str = Field(..., description="原文/释义")
|
|
|
|
|
|
class NameRecordCreate(BaseModel):
|
|
"""创建起名记录"""
|
|
name: str = Field(..., max_length=50, description="起的名字")
|
|
surname: Optional[str] = Field(None, max_length=20, description="姓氏")
|
|
full_name: Optional[str] = Field(None, max_length=70, description="完整姓名")
|
|
source: Optional[str] = Field(None, max_length=100, description="出处")
|
|
source_text: Optional[str] = Field(None, description="原文/出处原句")
|
|
meaning: Optional[str] = Field(None, description="名字含义/寓意")
|
|
gender: Optional[int] = Field(0, description="性别(0:未知 1:男 2:女)")
|
|
birth_year: Optional[int] = Field(None, description="出生年份")
|
|
birth_month: Optional[int] = Field(None, ge=1, le=12, description="出生月份")
|
|
birth_day: Optional[int] = Field(None, ge=1, le=31, description="出生日期")
|
|
birth_hour: Optional[int] = Field(None, ge=0, le=23, description="出生时辰")
|
|
lunar_birth: Optional[str] = Field(None, max_length=50, description="农历生日")
|
|
wuxing: Optional[str] = Field(None, max_length=20, description="五行属性")
|
|
bazi: Optional[str] = Field(None, max_length=50, description="八字")
|
|
wuxing_lack: Optional[str] = Field(None, max_length=20, description="五行缺失")
|
|
name_type: Optional[int] = Field(1, description="起名类型(1:宝宝起名 2:成人改名 3:公司起名 4:店铺起名)")
|
|
score: Optional[int] = Field(None, ge=0, le=100, description="名字评分")
|
|
score_detail: Optional[str] = Field(None, description="评分详情(JSON)")
|
|
channel: Optional[str] = Field(None, max_length=50, description="来源渠道")
|
|
|
|
|
|
class NameRecordUpdate(BaseModel):
|
|
"""更新起名记录"""
|
|
name: Optional[str] = Field(None, max_length=50)
|
|
surname: Optional[str] = Field(None, max_length=20)
|
|
full_name: Optional[str] = Field(None, max_length=70)
|
|
source: Optional[str] = Field(None, max_length=100)
|
|
source_text: Optional[str] = None
|
|
meaning: Optional[str] = None
|
|
is_favorite: Optional[int] = Field(None, description="是否收藏(0:否 1:是)")
|
|
is_used: Optional[int] = Field(None, description="是否已使用(0:否 1:是)")
|
|
|
|
|
|
class NameRecordOut(BaseModel):
|
|
"""起名记录输出"""
|
|
id: int
|
|
name: str
|
|
surname: Optional[str] = None
|
|
full_name: Optional[str] = None
|
|
source: Optional[str] = None
|
|
source_text: Optional[str] = None
|
|
meaning: Optional[str] = None
|
|
gender: Optional[int] = None
|
|
birth_year: Optional[int] = None
|
|
birth_month: Optional[int] = None
|
|
birth_day: Optional[int] = None
|
|
lunar_birth: Optional[str] = None
|
|
wuxing: Optional[str] = None
|
|
bazi: Optional[str] = None
|
|
wuxing_lack: Optional[str] = None
|
|
name_type: Optional[int] = None
|
|
score: Optional[int] = None
|
|
is_favorite: int = 0
|
|
is_used: int = 0
|
|
created_time: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|