chore: 初始化项目结构并添加基础配置文件
添加后端API和前端项目的初始目录结构,包括应用层模块、工具模块和模型定义 配置前后端的.dockerignore文件以排除开发环境文件 添加前端样式文件,包括字体、Tailwind CSS和主题配置 初始化Python虚拟环境中的类型标记文件
This commit is contained in:
0
后端-孕期报告解读-api/app/schemas/__init__.py
Normal file
0
后端-孕期报告解读-api/app/schemas/__init__.py
Normal file
20
后端-孕期报告解读-api/app/schemas/auth.py
Normal file
20
后端-孕期报告解读-api/app/schemas/auth.py
Normal 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
|
||||
21
后端-孕期报告解读-api/app/schemas/chat.py
Normal file
21
后端-孕期报告解读-api/app/schemas/chat.py
Normal 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
|
||||
44
后端-孕期报告解读-api/app/schemas/report.py
Normal file
44
后端-孕期报告解读-api/app/schemas/report.py
Normal 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
|
||||
70
后端-孕期报告解读-api/app/schemas/user.py
Normal file
70
后端-孕期报告解读-api/app/schemas/user.py
Normal 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
|
||||
Reference in New Issue
Block a user