from pydantic import BaseModel, ConfigDict class ActivityListItem(BaseModel): model_config = ConfigDict(extra="ignore") id: int title: str category: str | None = None cover_image: str | None = None start_time: str end_time: str signup_deadline: str | None = None location: str | None = None status: int capacity_male: int capacity_female: int registered_male: int registered_female: int is_registered: bool can_register: bool match_limit: int | None = None match_count: int | None = None match_remaining: int | None = None class ActivityDetailResponse(ActivityListItem): description: str | None = None require_audit: int registered_preview: list[dict] class ActivityRegisterResponse(BaseModel): registration_id: int status: int message: str class AdminActivityUpsertRequest(BaseModel): title: str description: str | None = None category: str | None = None location: str | None = None cover_image: str | None = None start_time: str end_time: str signup_deadline: str | None = None capacity_male: int = 0 capacity_female: int = 0 match_window_hours: int = 48 require_audit: bool = True is_published: bool = False