"""B01_Dashboard 요청 스키마.""" from pydantic import BaseModel, Field class UpdateUserRequest(BaseModel): name: str = Field(min_length=1, max_length=100) position: str | None = Field(default=None, max_length=100) department: str | None = Field(default=None, max_length=100) phone: str | None = Field(default=None, max_length=50) class CreateCompanyRequest(BaseModel): name: str = Field(min_length=1, max_length=255) business_registration_number: str = Field(min_length=1, max_length=20) business_address: str | None = Field(default=None, max_length=500) business_owner: str | None = Field(default=None, max_length=100) class JoinCompanyRequest(BaseModel): company_id: int = Field(gt=0) class AddMemberRequest(BaseModel): email: str = Field(min_length=3, max_length=255) class ProcessJoinRequest(BaseModel): action: str = Field(pattern="^(APPROVE|REJECT)$") reason: str | None = Field(default=None, max_length=500) class ChangeUserRoleRequest(BaseModel): role: str = Field(pattern="^(SYSTEM_ADMIN|ADMIN|USER)$") class AssignCompanyRequest(BaseModel): company_id: int | None = Field(default=None, gt=0) class UpdateProjectRequest(BaseModel): name: str = Field(min_length=1, max_length=255) region: str | None = Field(default=None, max_length=100) road_type: str | None = Field(default=None, max_length=100) project_year: int | None = Field(default=None, ge=1900, le=2100) estimated_length_m: float | None = Field(default=None, ge=0) memo: str | None = Field(default=None, max_length=5000) status: str | None = Field(default=None, max_length=50) class AdminUpdateUserRequest(UpdateUserRequest): status: str | None = Field( default=None, pattern="^(NO_COMPANY|PENDING|ACTIVE|INACTIVE|REJECTED)$" ) class AutomationRequest(BaseModel): name: str = Field(min_length=1, max_length=100) logic_type: str = Field(min_length=1, max_length=50) config_json: dict = Field(default_factory=dict) status: str = Field(default="DRAFT", pattern="^(DRAFT|ACTIVE|INACTIVE)$")