修复前后端显示异常问题(受试者、中心、负责人、日期等)

This commit is contained in:
Cheng Zhou
2025-12-18 22:09:28 +08:00
parent fb4950f8f7
commit 7137665410
48 changed files with 764 additions and 156 deletions
+7 -4
View File
@@ -1,14 +1,17 @@
import uuid
from datetime import datetime
from pydantic import BaseModel, ConfigDict
from pydantic import BaseModel, ConfigDict, Field
from app.schemas.user import UserDisplay
class AttachmentRead(BaseModel):
id: uuid.UUID
filename: str
file_size: int
uploaded_by: uuid.UUID
file_size: int = Field(alias="size")
uploaded_by: UserDisplay | None = None
uploaded_by_id: uuid.UUID | None = None
uploaded_at: datetime
model_config = ConfigDict(from_attributes=True)
model_config = ConfigDict(from_attributes=True, populate_by_name=True)
+5
View File
@@ -3,6 +3,7 @@ from datetime import datetime
from typing import Literal, Optional
from pydantic import BaseModel, ConfigDict, Field
from app.schemas.user import UserDisplay
StudyRole = Literal["PM", "CRA", "PV", "IMP", "ADMIN"]
@@ -27,3 +28,7 @@ class StudyMemberRead(BaseModel):
added_at: datetime
model_config = ConfigDict(from_attributes=True)
class StudyMemberReadWithUser(StudyMemberRead):
user: Optional[UserDisplay] = None
+13
View File
@@ -4,12 +4,21 @@ from typing import Optional
from pydantic import BaseModel, ConfigDict, Field
from app.schemas.user import UserDisplay
class SiteDisplay(BaseModel):
id: uuid.UUID
name: Optional[str] = None
model_config = ConfigDict(from_attributes=True)
class MilestoneCreate(BaseModel):
type: str
name: Optional[str] = None
planned_date: Optional[date] = None
owner_id: Optional[uuid.UUID] = None
site_id: Optional[uuid.UUID] = None
notes: Optional[str] = None
status: str = Field(default="NOT_STARTED")
@@ -20,6 +29,7 @@ class MilestoneUpdate(BaseModel):
actual_date: Optional[date] = None
status: Optional[str] = None
owner_id: Optional[uuid.UUID] = None
site_id: Optional[uuid.UUID] = None
notes: Optional[str] = None
@@ -32,6 +42,9 @@ class MilestoneRead(BaseModel):
actual_date: Optional[date]
status: str
owner_id: Optional[uuid.UUID]
site_id: Optional[uuid.UUID] = None
owner: Optional[UserDisplay] = None
site: Optional[SiteDisplay] = None
notes: Optional[str]
created_at: datetime
updated_at: datetime
+3
View File
@@ -4,6 +4,8 @@ from typing import Optional
from pydantic import BaseModel, ConfigDict
from app.schemas.user import UserDisplay
class TaskCreate(BaseModel):
milestone_id: Optional[uuid.UUID] = None
@@ -31,6 +33,7 @@ class TaskRead(BaseModel):
title: str
description: Optional[str]
assignee_id: Optional[uuid.UUID]
assignee: Optional[UserDisplay] = None
priority: str
due_date: Optional[date]
status: str
+8
View File
@@ -7,6 +7,14 @@ from pydantic import BaseModel, ConfigDict, Field
UserRole = Literal["PM", "CRA", "PV", "IMP", "ADMIN"]
class UserDisplay(BaseModel):
id: uuid.UUID
username: str
display_name: Optional[str] = None
model_config = ConfigDict(from_attributes=True)
class UserBase(BaseModel):
username: str = Field(min_length=1)
role: UserRole