# Résumé des éléments de la base de données ## Table `projects` Contient la liste des projets. - `id`: int (clé primaire, auto-incrémentée et unique) - `name`: string (nom du projet, obligatoire) - `description`: string (description du projet, optionnelle) - `start_date`: date (date de début du projet, optionnelle) - `status`: int (statut du projet, obligatoire) - Valeurs possibles: 0 (brouillon), 1 (en cours), 2 (terminé), 3 (annulé) ## Table `measurements` Contient l'ensemble des mesures effectuées pour un projet donné. Il peut y avoir plusieurs mesures pour un même projet. Chaque mesure doit avoir un `id` incrémenté par rapport à la dernière mesure. Chaque mesure contient un `timestamp`, un chemin vers un fichier image, une mesure de température et une mesure d'humidité. Chaque mesure doit préciser si elle a été effectuée ou non (car le fichier image est généré par la caméra donc lorsque la mesure est ajoutée, le fichier n'existe pas encore). - `id`: int (clé primaire, auto-incrémentée et unique) - `project_id`: int (clé étrangère vers la table `projects`) - `timestamp`: datetime (date et heure de la mesure) - `image_path`: string (chemin vers le fichier image, optionnel) - `temperature`: float (mesure de température, optionnelle) - `humidity`: float (mesure d'humidité, optionnelle) - `completed`: bool (indique si la mesure a été effectuée, obligatoire, par défaut à false) ## Table `videos` Contient l'ensemble des vidéos générées par partir des images des mesures d'un projet donné. Il peut y avoir plusieurs vidéos pour un même projet. Il doit être possible de contenir la liste des `id` des mesures utilisées pour générer la vidéo. Il doit être possible de contenir le chemin vers la vidéo générée. Il doit contenir le `timestamp` de la première image de la vidéo et le `timestamp` de la dernière image de la vidéo. Il doit contenir le nombre d'images utilisées pour générer la vidéo. Il doit contenir les paramètres de la vidéo (`résolution`, `durée`): - `resolution`: string (résolution de la vidéo, optionnelle) - `duration`: int (durée de la vidéo en secondes, déduite soit de la durée de la vidéo, soit du nombre d'images et du nombre d'images par seconde) - `fps`: int (nombre d'images par seconde, optionnelle) Il doit contenir le statut de la vidéo (en cours de génération, terminée, annulée). - `id`: int (clé primaire, auto-incrémentée et unique) - `project_id`: int (clé étrangère vers la table `projects`) - `measurement_ids`: string (liste des `id` des mesures utilisées pour générer la vidéo) - `video_path`: string (chemin vers le fichier vidéo, optionnel) - `start_timestamp`: datetime (date et heure de la première image de la vidéo) - `end_timestamp`: datetime (date et heure de la dernière image de la vidéo) - `image_count`: int (nombre d'images utilisées pour générer la vidéo) - `resolution`: string (résolution de la vidéo, optionnelle) - `duration`: int (durée de la vidéo en secondes, optionnelle) - `fps`: int (nombre d'images par seconde, optionnelle) - `status`: int (statut de la vidéo, obligatoire) - Valeurs possibles: 0 (en cours), 1 (terminée), 2 (annulée)