后端开发完成

This commit is contained in:
Your Name
2026-01-26 18:21:34 +08:00
parent 40d2f3f6ac
commit b3876bba89
64 changed files with 1736 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
from app.schemas.user import UserCreate, UserUpdate, UserResponse, UserLogin
from app.schemas.project import ProjectCreate, ProjectUpdate, ProjectResponse
from app.schemas.project_history import ProjectHistoryResponse
from app.schemas.auth import Token, TokenData
__all__ = [
"UserCreate", "UserUpdate", "UserResponse", "UserLogin",
"ProjectCreate", "ProjectUpdate", "ProjectResponse",
"ProjectHistoryResponse",
"Token", "TokenData"
]
Binary file not shown.
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
from pydantic import BaseModel
from typing import Optional
class Token(BaseModel):
"""Token模型"""
access_token: str
token_type: str
class TokenData(BaseModel):
"""Token数据模型"""
username: Optional[str] = None
+41
View File
@@ -0,0 +1,41 @@
from pydantic import BaseModel
from datetime import datetime
from typing import Optional
class ProjectBase(BaseModel):
"""项目基础模型"""
name: str
description: Optional[str] = None
department: str
budget: Optional[int] = None
start_date: Optional[datetime] = None
end_date: Optional[datetime] = None
status: Optional[str] = "pending"
class ProjectCreate(ProjectBase):
"""创建项目模型"""
pass
class ProjectUpdate(BaseModel):
"""更新项目模型"""
name: Optional[str] = None
description: Optional[str] = None
department: Optional[str] = None
budget: Optional[int] = None
start_date: Optional[datetime] = None
end_date: Optional[datetime] = None
status: Optional[str] = None
class ProjectResponse(ProjectBase):
"""项目响应模型"""
id: int
created_by: int
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
+17
View File
@@ -0,0 +1,17 @@
from pydantic import BaseModel
from datetime import datetime
class ProjectHistoryResponse(BaseModel):
"""项目历史记录响应模型"""
id: int
project_id: int
changed_by: int
change_field: str
old_value: str
new_value: str
change_description: str
created_at: datetime
class Config:
from_attributes = True
+38
View File
@@ -0,0 +1,38 @@
from pydantic import BaseModel, EmailStr
from datetime import datetime
from typing import Optional
class UserBase(BaseModel):
"""用户基础模型"""
username: str
department: str
role: str
class UserCreate(UserBase):
"""创建用户模型"""
password: str
class UserUpdate(BaseModel):
"""更新用户模型"""
password: Optional[str] = None
department: Optional[str] = None
role: Optional[str] = None
class UserResponse(UserBase):
"""用户响应模型"""
id: int
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
class UserLogin(BaseModel):
"""用户登录模型"""
username: str
password: str