Files
certificate-system/backend/app/schemas/certificate.py
2026-06-23 13:59:56 +08:00

63 lines
1.6 KiB
Python

from datetime import date, datetime
from pydantic import BaseModel, Field, field_validator
class CertificateCreate(BaseModel):
learner_id: int
project_code: str = Field(min_length=2, max_length=16)
certificate_name: str | None = Field(default=None, max_length=128)
class_name: str | None = Field(default=None, max_length=128)
course_name: str | None = Field(default=None, max_length=128)
stage_name: str | None = Field(default=None, max_length=128)
issue_date: date
issuer_name: str = Field(min_length=1, max_length=128)
remark: str | None = None
@field_validator("project_code")
@classmethod
def normalize_project_code(cls, value: str) -> str:
return value.strip().upper()
class CertificateOut(BaseModel):
id: int
learner_id: int
learner_name: str | None = None
import_batch_id: int | None = None
project_code: str
certificate_no: str
certificate_name: str
class_name: str | None
course_name: str | None
stage_name: str | None
issue_date: date
issuer_name: str
status: str
pdf_status: str
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class PdfPregenerationJobCreate(BaseModel):
certificate_ids: list[int] = Field(default_factory=list, max_length=5000)
import_batch_id: int | None = None
class PdfPregenerationJobOut(BaseModel):
id: str
status: str
total: int
completed: int
generated: int
cached: int
skipped: int
failed: int
percent: int
concurrency_limit: int
errors: list[str]
created_at: datetime
finished_at: datetime | None = None