Code source de pygroundedweb.models.analysis

"""Modèles relatifs aux analyses (Analysis, Hole, AnalysisStatus).

Ces modèles décrivent l'état et les résultats (liens point cloud, logs) d'une analyse.
"""

from __future__ import annotations

from datetime import datetime
from enum import Enum
from typing import Optional, List

from pydantic import HttpUrl

from .base import APIModel
from .configuration import Configuration
from .selection import Selection

[docs] class AnalysisStatus(str, Enum): """Statut possible d'une analyse.""" PENDING = "PENDING" RUNNING = "RUNNING" COMPLETED = "COMPLETED" FAILED = "FAILED"
[docs] class Hole(APIModel): """Représente un trou détecté avec numéro et volume.""" number: int volume: float
[docs] class Analysis(APIModel): """Modèle représentant une analyse. Champs importants : name, date, user, status, selection, configuration, holes, et URLs vers les artefacts produits (point_cloud, logs). """ name: str date: datetime user: str status: Optional[AnalysisStatus] = None point_cloud_before: Optional[HttpUrl] = None point_cloud_after: Optional[HttpUrl] = None result: Optional[HttpUrl] = None logs: Optional[HttpUrl] = None selection: Selection notify_by_email: bool configuration: Configuration holes: List[Hole]