Files
----/后端源码/yifan.action-ai.cn/app/api/v1/module_common/goodname/schema.py

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