- 后端 UserProfileUpdate 新增 avatar_url 字段 - LoginPage 检测 URL 参数 name/avatar 并调用 updateUserProfile - ProfilePage 头像卡片显示真实头像(有 avatar_url 时) - ProfilePage 增加 基本信息-姓名 编辑字段
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class EmergencyContactSchema(BaseModel):
|
|
name: str = ""
|
|
relation: str = ""
|
|
phone: str = ""
|
|
|
|
|
|
class UserProfileUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
age: Optional[int] = None
|
|
phone: Optional[str] = None
|
|
height: Optional[float] = None
|
|
pre_pregnancy_weight: Optional[float] = None
|
|
current_weight: Optional[float] = None
|
|
blood_type: Optional[str] = None
|
|
allergies: Optional[list[str]] = None
|
|
medical_history: Optional[list[str]] = None
|
|
last_period_date: Optional[datetime] = None
|
|
due_date: Optional[datetime] = None
|
|
pregnancy_week: Optional[int] = None
|
|
pregnancy_day: Optional[int] = None
|
|
multiple_pregnancy: Optional[str] = None
|
|
pregnancy_count: Optional[int] = None
|
|
emergency_contact: Optional[EmergencyContactSchema] = None
|
|
avatar_url: Optional[str] = None
|
|
|
|
|
|
class OnboardingRequest(BaseModel):
|
|
name: Optional[str] = ""
|
|
age: Optional[int] = None
|
|
height: Optional[float] = None
|
|
pre_pregnancy_weight: Optional[float] = None
|
|
current_weight: Optional[float] = None
|
|
blood_type: Optional[str] = None
|
|
allergies: list[str] = []
|
|
medical_history: list[str] = []
|
|
last_period_date: Optional[datetime] = None
|
|
due_date: Optional[datetime] = None
|
|
pregnancy_week: Optional[int] = None
|
|
pregnancy_day: Optional[int] = None
|
|
multiple_pregnancy: Optional[str] = None
|
|
pregnancy_count: Optional[int] = None
|
|
emergency_contact: Optional[EmergencyContactSchema] = None
|
|
|
|
|
|
class UserProfileResponse(BaseModel):
|
|
id: str
|
|
name: str
|
|
phone: Optional[str]
|
|
age: Optional[int]
|
|
height: Optional[float]
|
|
pre_pregnancy_weight: Optional[float]
|
|
current_weight: Optional[float]
|
|
blood_type: Optional[str]
|
|
allergies: list[str]
|
|
medical_history: list[str]
|
|
last_period_date: Optional[datetime]
|
|
due_date: Optional[datetime]
|
|
pregnancy_week: Optional[int]
|
|
pregnancy_day: Optional[int]
|
|
multiple_pregnancy: Optional[str]
|
|
pregnancy_count: Optional[int]
|
|
emergency_contact: Optional[EmergencyContactSchema]
|
|
is_onboarded: bool
|
|
avatar_url: Optional[str]
|
|
created_at: datetime
|