"""Pydantic schemas for Insight Feedback."""

from pydantic import BaseModel, Field, ConfigDict
from typing import Optional, Dict, Any
from datetime import datetime
from uuid import UUID
from decimal import Decimal


class InsightFeedbackBase(BaseModel):
    """Base schema for Insight Feedback."""

    action_taken: str
    result_data: Optional[Dict[str, Any]] = Field(default_factory=dict)
    success: bool
    error_message: Optional[str] = None
    expected_impact_value: Optional[Decimal] = None
    actual_impact_value: Optional[Decimal] = None
    variance_percentage: Optional[Decimal] = None


class InsightFeedbackCreate(InsightFeedbackBase):
    """Schema for creating feedback."""

    insight_id: UUID
    applied_by: Optional[str] = "system"


class InsightFeedbackResponse(InsightFeedbackBase):
    """Schema for feedback response."""

    id: UUID
    insight_id: UUID
    applied_by: str
    created_at: datetime

    model_config = ConfigDict(from_attributes=True)
