from pydantic import BaseModel, HttpUrl from typing import List, Optional from datetime import datetime class PageDetail(BaseModel): page_url: HttpUrl load_time_ms: Optional[float] = None schemas: Optional[bool] = None issues_found: Optional[List[str]] = [] class IssueDetail(BaseModel): page_url: Optional[HttpUrl] = None duplicate_with: Optional[List[HttpUrl]] = None snippet: Optional[str] = None count: Optional[int] = None class Issue(BaseModel): type: str description: str details: Optional[IssueDetail] = None class ReportCreate(BaseModel): user_id: str website: HttpUrl pages: Optional[List[PageDetail]] = [] issues: List[Issue] = [] recommendations: List[str] = [] class ReportResponse(ReportCreate): id: str audit_date: datetime status: str = "completed"