Files
Omika/infra/postgresql/005_diagnostics_client_context.sql
T
2026-10-23 18:46:50 +02:00

46 lines
2.5 KiB
SQL

-- ============================================================
-- 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);