chore: 初始化项目结构并添加基础配置文件

添加后端API和前端项目的初始目录结构,包括应用层模块、工具模块和模型定义
配置前后端的.dockerignore文件以排除开发环境文件
添加前端样式文件,包括字体、Tailwind CSS和主题配置
初始化Python虚拟环境中的类型标记文件
This commit is contained in:
2026-04-01 16:55:24 +08:00
commit cfdeeb5e41
4149 changed files with 837587 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
class WechatLoginRequest(BaseModel):
code: str # wx.login() 获取的 code
class PhoneLoginRequest(BaseModel):
phone: str
sms_code: str
class TokenResponse(BaseModel):
access_token: str
token_type: str = "bearer"
user_id: str
is_new_user: bool = False

View File

@@ -0,0 +1,21 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
class ChatMessageRequest(BaseModel):
content: str
class ChatMessageResponse(BaseModel):
role: str
content: str
timestamp: datetime
class ChatSessionResponse(BaseModel):
id: str
report_id: str
messages: list[ChatMessageResponse]
created_at: datetime

View File

@@ -0,0 +1,44 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
class DataItemSchema(BaseModel):
name: str
value: str
unit: str = ""
reference_range: str = ""
status: str = "normal"
category: str = ""
class ReportVerifyRequest(BaseModel):
"""数据校对提交"""
data_items: list[DataItemSchema]
symptoms: Optional[list[str]] = None
notes: Optional[str] = None
report_type: Optional[str] = None
class ReportResponse(BaseModel):
id: str
report_type: str
pregnancy_week: Optional[int]
image_urls: list[str]
data_items: list[DataItemSchema]
symptoms: Optional[list[str]]
notes: Optional[str]
status: str
overall_status: str
created_at: datetime
class ReportListItem(BaseModel):
id: str
report_type: str
pregnancy_week: Optional[int]
overall_status: str
summary: str = ""
item_count: int = 0
created_at: datetime

View File

@@ -0,0 +1,70 @@
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
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