using System;
using System.Collections.Generic;
namespace ManagerService.DTOs
{
///
/// Le contenu complet d'une configuration, en un seul appel — le contrat public
/// entre le back-office et tout ce qui affiche une visite.
///
/// Trois consommateurs, et c'est ce qui en fait un contrat plutôt qu'un DTO interne :
/// la visite hors ligne de mymuseum-visitapp, l'import/export du back-office,
/// et l'app Unity du canal VR — qui n'a pas de client généré et lit ce JSON tel quel.
///
/// Règles de compatibilité, à tenir tant que le numéro ne change pas :
///
/// - on ajoute des champs, on n'en retire ni n'en renomme aucun ;
/// - les valeurs d'enum s'ajoutent en fin — elles sont persistées en int
/// et un client plus ancien doit pouvoir ignorer ce qu'il ne connaît pas ;
/// - un champ absent vaut « pas de valeur », jamais « valeur par défaut »
/// différente de celle du client.
///
///
/// Documentation complète : DOCS/export-contract.md.
///
public class ExportConfigurationDTO : ConfigurationDTO
{
///
/// Version du format, pas du contenu. Un client qui lit un numéro plus
/// grand que celui qu'il connaît doit le dire à l'utilisateur plutôt que de
/// deviner — c'est exactement ce que fait ManifestReader côté casque.
///
public int exportVersion { get; set; } = CurrentExportVersion;
/// Quand ce JSON a été produit. Sert au diagnostic d'un cache périmé.
public DateTime generatedAt { get; set; }
public List sections { get; set; }
public List resources { get; set; }
///
/// 1 — version initiale, figée le 2026-09-12. L'export existait avant, sans
/// numéro : un client qui n'en trouve pas lit un export antérieur à cette date, et
/// doit le traiter comme la version 1.
///
public const int CurrentExportVersion = 1;
}
}