from pydantic import BaseModel from datetime import datetime from backend.models.audit import AuditStatut from backend.models.target import CibleType from backend.models.vulnerability import Criticite from backend.models.action import ActionStatut class CibleCreate(BaseModel): type: CibleType valeur: str class CibleRead(BaseModel): id: int audit_id: int type: CibleType valeur: str validee: bool model_config = {"from_attributes": True} class VulnerabiliteCreate(BaseModel): criticite: Criticite titre: str description: str recommandation: str cve: str | None = None cvss_score: float | None = None cible: str | None = None class VulnerabiliteRead(BaseModel): id: int audit_id: int criticite: Criticite titre: str description: str recommandation: str cve: str | None cvss_score: float | None cible: str | None model_config = {"from_attributes": True} class ActionCreate(BaseModel): vulnerabilite_id: int assigne_a: str | None = None note: str | None = None class ActionUpdate(BaseModel): statut: ActionStatut | None = None assigne_a: str | None = None note: str | None = None class ActionRead(BaseModel): id: int vulnerabilite_id: int statut: ActionStatut assigne_a: str | None note: str | None model_config = {"from_attributes": True} class AuditCreate(BaseModel): client_id: int nom: str date_debut: datetime | None = None class AuditUpdate(BaseModel): nom: str | None = None statut: AuditStatut | None = None date_debut: datetime | None = None date_fin: datetime | None = None score_global: float | None = None class AuditRead(BaseModel): id: int client_id: int nom: str statut: AuditStatut date_debut: datetime | None date_fin: datetime | None score_global: float | None created_at: datetime model_config = {"from_attributes": True} class AuditDetail(AuditRead): cibles: list[CibleRead] = [] vulnerabilites: list[VulnerabiliteRead] = []