48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from pydantic import BaseModel, Field
|
|
from datetime import datetime
|
|
from typing import Optional, List
|
|
|
|
# Project Schemas (project_name 추가)
|
|
class ProjectBase(BaseModel):
|
|
official_project_code: str = Field(..., description="공식 프로젝트 코드")
|
|
project_name: str = Field(..., description="프로젝트명") # 추가
|
|
design_project_code: Optional[str] = Field(None, description="설계 프로젝트 코드")
|
|
is_code_matched: bool = Field(False, description="코드 매칭 여부")
|
|
status: str = Field("active", description="프로젝트 상태")
|
|
|
|
class ProjectCreate(ProjectBase):
|
|
pass
|
|
|
|
class ProjectResponse(ProjectBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
# File Schemas (기존 유지)
|
|
class FileResponse(BaseModel):
|
|
id: int
|
|
filename: str
|
|
original_filename: str
|
|
file_path: str
|
|
project_id: int
|
|
project_code: Optional[str] = None
|
|
revision: str = "Rev.0"
|
|
description: Optional[str] = None
|
|
upload_date: datetime
|
|
parsed_count: int = 0
|
|
is_active: bool = True
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class FileUploadResponse(BaseModel):
|
|
success: bool
|
|
message: str
|
|
file_id: int
|
|
filename: str
|
|
parsed_materials_count: int
|
|
file_path: str
|