@startuml Modèles de données class Project { +id: integer +name: string +description: string +start_date: date +status: integer +getAllProjects() +getProjectById(id) +createProject(name, description, startDate, status) +updateProject(id, updates) +updateProjectStatus(id, status) +deleteProject(id) +findCurrentRenderingProject() +findStoppingProject() } class Measurement { +id: integer +project_id: integer +timestamp: datetime +path: string +temperature: float +humidity: float +order_id: integer +getAllMeasurements() +getMeasurementById(id) +getMeasurementByProjectAndOrderId(projectId, orderId) +getMeasurementsByProjectId(projectId) +createMeasurement(projectId, timestamp, path, temperature, humidity, orderId) +updateMeasurement(id, updates) +deleteMeasurement(id) +getNextOrderId(projectId) } class Video { +id: integer +project_id: integer +measurement_ids: string +name: string +resolution: string +duration: integer +status: integer +progress: float +video_file: string +started_at: datetime +updated_at: datetime +eta: float +getAllVideos() +getVideoById(id) +getVideosByProjectId(projectId) +createVideo(projectId, measurementIds, name, resolution, duration, status) +updateVideo(id, updates) +updateVideoFilePath(id, videoFile) +updateVideoStatus(id, status) +deleteVideo(id) +getUnfinishedVideos() +updateVideoProgress(id, progress, eta) } class Camera { +id: integer +interval: integer +maintenance: integer +active: integer +getCamera() +updateCamera(id, updates) +deleteCamera(id) +initializeCamera() } Project "1" -- "0..*" Measurement : possède > Project "1" -- "0..*" Video : possède > Measurement "1..*" -- "0..*" Video : utilisée dans > @enduml