"""
NeuroSploit v3 - Report Schemas
"""
from datetime import datetime
from typing import Optional, List
from pydantic import BaseModel, Field


class ReportGenerate(BaseModel):
    """Schema for generating a report"""
    scan_id: str = Field(..., description="Scan ID to generate report for")
    format: str = Field("html", description="Report format: html, pdf, json")
    title: Optional[str] = Field(None, description="Custom report title")
    include_executive_summary: bool = Field(True, description="Include executive summary")
    include_poc: bool = Field(True, description="Include proof of concept")
    include_remediation: bool = Field(True, description="Include remediation steps")
    preferred_provider: Optional[str] = Field(None, description="Preferred LLM provider for AI report generation")
    preferred_model: Optional[str] = Field(None, description="Preferred model for AI report generation")


class ReportResponse(BaseModel):
    """Schema for report response"""
    id: str
    scan_id: str
    title: Optional[str]
    format: str
    file_path: Optional[str]
    executive_summary: Optional[str]
    auto_generated: bool = False
    is_partial: bool = False
    generated_at: datetime

    class Config:
        from_attributes = True


class ReportListResponse(BaseModel):
    """Schema for list of reports"""
    reports: List[ReportResponse]
    total: int
