from datetime import datetime
from typing import Any

from pydantic import BaseModel


class DPOTaskBase(BaseModel):
    name: str
    description: str | None = None
    dataset_id: int
    model_name: str
    platform: str | None = 'qwen_local'
    hyperparameters: dict[str, Any] | None = None

class DPOTaskCreate(DPOTaskBase):
    pass

class DPOTaskUpdate(BaseModel):
    name: str | None = None
    description: str | None = None
    status: str | None = None
    hyperparameters: dict[str, Any] | None = None
    result: dict[str, Any] | None = None

class DPOTaskResponse(DPOTaskBase):
    id: int
    status: str
    result: dict[str, Any] | None = None
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True
