"""Schemas for the Anomali detection module."""

from datetime import datetime
from typing import Any, Optional

from pydantic import BaseModel, ConfigDict


class AnomaliCreate(BaseModel):
    tipe: str
    laporan_shift_id: Optional[int] = None
    produk_id: Optional[int] = None
    nozzle_id: Optional[int] = None
    plat_nomor: Optional[str] = None
    deskripsi: Optional[str] = None
    detail: Optional[dict[str, Any]] = None


class AnomaliUpdate(BaseModel):
    status: Optional[str] = None
    assigned_to: Optional[int] = None
    notes: Optional[str] = None


class AnomaliResolve(BaseModel):
    status: str  # closed_valid | false_positive
    catatan_resolusi: Optional[str] = None


class AnomaliResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: int
    spbu_id: int
    kode: str  # alias for tipe — matches task spec naming
    tipe: str
    laporan_shift_id: Optional[int] = None
    produk_id: Optional[int] = None
    produk_nama: Optional[str] = None
    nozzle_id: Optional[int] = None
    nozzle_nama: Optional[str] = None
    plat_nomor: Optional[str] = None
    deskripsi: Optional[str] = None
    detail: Optional[dict[str, Any]] = None
    status: str
    resolved_at: Optional[datetime] = None
    resolved_by_id: Optional[int] = None
    catatan_resolusi: Optional[str] = None
    assigned_to: Optional[int] = None
    assigned_to_name: Optional[str] = None
    notes: Optional[str] = None
    created_at: datetime
    updated_at: datetime
