-- ============================================================ -- Omika Diagnostic Center -- 005_diagnostics_client_context.sql -- Tâche 13-A : contexte client / serveur / environnement (additif). -- ============================================================ -- IDEMPOTENT : ADD COLUMN IF NOT EXISTS + CREATE INDEX IF NOT EXISTS. -- AUCUN DROP, AUCUNE suppression, AUCUNE migration destructive. -- PostgreSQL 18 compatible (syntaxe disponible depuis 9.6). -- -- Ajoute au diagnostic_event trois dimensions de contexte de déploiement, -- NULLABLES : les événements antérieurs restent parfaitement valides -- (client_code = NULL, server_instance = NULL, environment = NULL), -- AUCUN backfill, AUCUNE valeur inventée (« UNKNOWN »/« N/A » interdits). -- -- client_code : CodeClient de référence = ClientBase.CL_Code -- (identifiant NON secret du client Omika, jamais -- Client.CL_CodeClient, CL_CleAPIInstall, clé licence, -- ActorKey ni nom société). -- server_instance : identifiant d'instance serveur (configuré, ex. -- « API-SRV-01 ») — T13-D. -- environment : environnement ASP.NET (Development / Production / …). -- -- CHOIX DE TYPE (cohérence schéma) : le schéma existant utilise TEXT sans -- VARCHAR ni CHECK de longueur (priority, level, component, app_version…). -- On reste cohérent : colonnes TEXT, PAS de CHECK de longueur arbitraire. -- La validation de longueur (<= 100 / <= 100 / <= 20) sera portée par le -- code au moment de la résolution (T13-D), comme pour les autres champs. -- ============================================================ ALTER TABLE diagnostic_event ADD COLUMN IF NOT EXISTS client_code TEXT, ADD COLUMN IF NOT EXISTS server_instance TEXT, ADD COLUMN IF NOT EXISTS environment TEXT; -- Recherche support « tous les diagnostics d'un client » : index composé -- (client_code, timestamp_utc DESC), aligné sur le style de -- ix_diagnostic_event_actor_key_timestamp (002). -- -- PAS d'index dédié sur server_instance : aucun usage immédiat ne justifie -- le coût d'écriture/maintenance d'un second index composé (T13 — « composite -- éventuel »). À réévaluer en T13-F si un filtre serveur devient un hot path. -- -- PAS d'index sur environment : très faible cardinalité (2-3 valeurs), un -- index serait peu sélectif et sans bénéfice réel. CREATE INDEX IF NOT EXISTS ix_diagnostic_event_client_code_timestamp ON diagnostic_event (client_code, timestamp_utc DESC);