Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
-- =====================================================================
|
||||
-- Omika Diagnostic Center — NETTOYAGE DU SEED LOCAL (FAKE DATA)
|
||||
-- clear_diagnostics_local_seed.sql
|
||||
-- =====================================================================
|
||||
-- ⚠️ RÉSERVÉ AU DÉVELOPPEMENT LOCAL. Supprime UNIQUEMENT les données
|
||||
-- synthétiques marquées source='local-seed'. Aucun TRUNCATE, aucune
|
||||
-- suppression générale, jamais les vraies données.
|
||||
-- ⚠️ À lancer manuellement (aucune exécution automatique).
|
||||
-- =====================================================================
|
||||
|
||||
-- Garde-fou : refuse de s'exécuter hors de la base locale omika_diagnostics.
|
||||
DO $$
|
||||
BEGIN
|
||||
IF current_database() <> 'omika_diagnostics' THEN
|
||||
RAISE EXCEPTION 'REFUS : nettoyage LOCAL uniquement sur la base omika_diagnostics (base détectée : %).', current_database();
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
|
||||
-- Suppression ciblée et sûre.
|
||||
DELETE FROM diagnostic_event
|
||||
WHERE source = 'local-seed';
|
||||
|
||||
-- =====================================================================
|
||||
-- VÉRIFICATION (T13-G §28) — procédure de contrôle à exécuter séparément.
|
||||
-- Objectif : démontrer que le nettoyage supprime UNIQUEMENT le seed local
|
||||
-- et préserve toute ligne réelle (source <> 'local-seed').
|
||||
--
|
||||
-- AVANT nettoyage (état attendu : 1 vraie ligne + N lignes local-seed) :
|
||||
-- SELECT count(*) FILTER (WHERE source = 'local-seed') AS seed_rows,
|
||||
-- count(*) FILTER (WHERE source <> 'local-seed') AS real_rows
|
||||
-- FROM diagnostic_event;
|
||||
--
|
||||
-- APRÈS exécution de ce script, vérifier :
|
||||
-- SELECT count(*) FROM diagnostic_event WHERE source = 'local-seed';
|
||||
-- -- attendu : 0
|
||||
-- SELECT count(*) FROM diagnostic_event WHERE source <> 'local-seed';
|
||||
-- -- attendu : inchangé (la vraie ligne est conservée)
|
||||
--
|
||||
-- GARANTIE STRUCTURELLE : l'unique instruction de suppression est bornée par
|
||||
-- le marqueur source = 'local-seed'. Aucun TRUNCATE, aucun DELETE sans filtre.
|
||||
-- =====================================================================
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"Enabled": true
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,949 @@
|
||||
-- =====================================================================
|
||||
-- Omika Diagnostic Center — SEED PRÉPROD LOCAL (100 % FAKE DATA)
|
||||
-- seed_diagnostics_preprod.sql — T21
|
||||
-- =====================================================================
|
||||
-- ⚠️ RÉSERVÉ À LA PRÉPROD LOCALE (base omika_diagnostics_preprod).
|
||||
-- ⚠️ NE JAMAIS EXÉCUTER EN PRODUCTION.
|
||||
-- ⚠️ Données 100 % SYNTHÉTIQUES : source='local-seed', message préfixé
|
||||
-- '[FAKE LOCAL]'. Aucune donnée réelle, aucune donnée personnelle,
|
||||
-- aucun token, aucun mot de passe, aucun CodeClient réel, aucun nom
|
||||
-- de société cliente réelle, aucun nom de machine réel.
|
||||
-- ⚠️ Ré-exécutable : DELETE source='local-seed' puis réinsertion.
|
||||
-- Ne touche JAMAIS aux lignes réelles (source <> 'local-seed').
|
||||
-- ⚠️ Ne crée AUCUN diagnostics_clients : les clients PREPROD-CLIENT-A/B
|
||||
-- sont créés via l'interface /Clients (clé SHA-256 générée Web).
|
||||
-- =====================================================================
|
||||
|
||||
-- Garde-fou : base préprod uniquement.
|
||||
DO $$
|
||||
BEGIN
|
||||
IF current_database() <> 'omika_diagnostics_preprod' THEN
|
||||
RAISE EXCEPTION 'REFUS : seed préprod uniquement sur omika_diagnostics_preprod (base détectée : %).', current_database();
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
|
||||
-- Nettoyage idempotent du seed précédent (source = 'local-seed' uniquement).
|
||||
DELETE FROM diagnostic_event WHERE source = 'local-seed';
|
||||
|
||||
-- =====================================================================
|
||||
-- CONVENTIONS CLIENTS (T21 §7)
|
||||
-- FAKE-CLIENT-A (fort volume) : API-A-01, WORKER-A-01 (Production)
|
||||
-- FAKE-CLIENT-B (moyen) : API-B-01, WORKER-B-01 (Production),
|
||||
-- API-B-STG-01 (Staging)
|
||||
-- FAKE-CLIENT-C (faible) : API-C-DEV-01 (Development)
|
||||
-- =====================================================================
|
||||
|
||||
-- =====================================================================
|
||||
-- 1. VOLUME DE FOND MULTI-CLIENTS (HTTP API + Worker)
|
||||
-- =====================================================================
|
||||
|
||||
-- 1.1 FAKE-CLIENT-A / API-A-01 / Production — 100 événements HTTP API.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2a000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - CASE (g % 4)
|
||||
WHEN 0 THEN (random() * interval '6 hours')
|
||||
WHEN 1 THEN interval '6 hours' + (random() * interval '18 hours')
|
||||
WHEN 2 THEN interval '1 day' + (random() * interval '6 days')
|
||||
ELSE interval '7 days' + (random() * interval '23 days')
|
||||
END,
|
||||
(ARRAY['P2','P3','P2','P1','P3'])[1 + (g % 5)],
|
||||
(ARRAY['Info','Info','Debug','Warning','Info'])[1 + (g % 5)],
|
||||
(ARRAY['OMK-API-HTTP-001','OMK-API-HTTP-002'])[1 + (g % 2)],
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
(ARRAY['fake-actor-001','fake-actor-002',NULL])[1 + (g % 3)],
|
||||
1,
|
||||
(ARRAY['1.0.0','1.1.0'])[1 + (g % 2)],
|
||||
'api',
|
||||
NULL,
|
||||
'[FAKE LOCAL] api FAKE-CLIENT-A production ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[25,150,350,1200,NULL,80])[1 + (g % 6)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"volume"}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'
|
||||
FROM generate_series(1, 100) AS g;
|
||||
|
||||
-- 1.2 FAKE-CLIENT-A / WORKER-A-01 / Production — 60 traitements Worker réussis.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2b000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - CASE (g % 4)
|
||||
WHEN 0 THEN (random() * interval '6 hours')
|
||||
WHEN 1 THEN interval '6 hours' + (random() * interval '18 hours')
|
||||
WHEN 2 THEN interval '1 day' + (random() * interval '6 days')
|
||||
ELSE interval '7 days' + (random() * interval '23 days')
|
||||
END,
|
||||
'P3',
|
||||
(ARRAY['Info','Debug','Info'])[1 + (g % 3)],
|
||||
'OMK-WKR-SYNC-001',
|
||||
'Omika.Worker',
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
(ARRAY['1.0.0','1.1.0'])[1 + (g % 2)],
|
||||
'worker',
|
||||
NULL,
|
||||
'[FAKE LOCAL] worker FAKE-CLIENT-A production ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[300,450,600,900])[1 + (g % 4)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"volume","retryCount":0}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-A', 'WORKER-A-01', 'Production'
|
||||
FROM generate_series(1, 60) AS g;
|
||||
|
||||
-- 1.3 FAKE-CLIENT-B / API-B-01 / Production — 50 événements HTTP API.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2c000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - CASE (g % 4)
|
||||
WHEN 0 THEN (random() * interval '6 hours')
|
||||
WHEN 1 THEN interval '6 hours' + (random() * interval '18 hours')
|
||||
WHEN 2 THEN interval '1 day' + (random() * interval '6 days')
|
||||
ELSE interval '7 days' + (random() * interval '23 days')
|
||||
END,
|
||||
(ARRAY['P2','P3','P2','P1','P3'])[1 + (g % 5)],
|
||||
(ARRAY['Info','Info','Debug','Warning','Info'])[1 + (g % 5)],
|
||||
(ARRAY['OMK-API-HTTP-001','OMK-API-HTTP-002'])[1 + (g % 2)],
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
(ARRAY['fake-actor-002','fake-actor-003',NULL])[1 + (g % 3)],
|
||||
1,
|
||||
(ARRAY['1.0.0','1.0.1'])[1 + (g % 2)],
|
||||
'api',
|
||||
NULL,
|
||||
'[FAKE LOCAL] api FAKE-CLIENT-B production ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[30,140,360,1100,NULL,90])[1 + (g % 6)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"volume"}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production'
|
||||
FROM generate_series(1, 50) AS g;
|
||||
|
||||
-- 1.4 FAKE-CLIENT-B / WORKER-B-01 / Production — 25 traitements Worker réussis.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2d000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - CASE (g % 4)
|
||||
WHEN 0 THEN (random() * interval '6 hours')
|
||||
WHEN 1 THEN interval '6 hours' + (random() * interval '18 hours')
|
||||
WHEN 2 THEN interval '1 day' + (random() * interval '6 days')
|
||||
ELSE interval '7 days' + (random() * interval '23 days')
|
||||
END,
|
||||
'P3',
|
||||
(ARRAY['Info','Debug','Info'])[1 + (g % 3)],
|
||||
'OMK-WKR-SYNC-001',
|
||||
'Omika.Worker',
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
(ARRAY['1.0.0','1.0.1'])[1 + (g % 2)],
|
||||
'worker',
|
||||
NULL,
|
||||
'[FAKE LOCAL] worker FAKE-CLIENT-B production ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[280,420,580,850])[1 + (g % 4)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"volume","retryCount":0}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-B', 'WORKER-B-01', 'Production'
|
||||
FROM generate_series(1, 25) AS g;
|
||||
|
||||
-- 1.5 FAKE-CLIENT-B / API-B-STG-01 / Staging — 15 événements HTTP API.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - CASE (g % 4)
|
||||
WHEN 0 THEN (random() * interval '6 hours')
|
||||
WHEN 1 THEN interval '6 hours' + (random() * interval '18 hours')
|
||||
WHEN 2 THEN interval '1 day' + (random() * interval '6 days')
|
||||
ELSE interval '7 days' + (random() * interval '23 days')
|
||||
END,
|
||||
(ARRAY['P2','P3','P2'])[1 + (g % 3)],
|
||||
(ARRAY['Info','Debug','Info'])[1 + (g % 3)],
|
||||
(ARRAY['OMK-API-HTTP-001','OMK-API-HTTP-002'])[1 + (g % 2)],
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
'fake-actor-003', 1,
|
||||
(ARRAY['1.0.1','1.1.0'])[1 + (g % 2)],
|
||||
'api',
|
||||
NULL,
|
||||
'[FAKE LOCAL] api FAKE-CLIENT-B staging ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[40,150,380])[1 + (g % 3)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"volume"}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-B', 'API-B-STG-01', 'Staging'
|
||||
FROM generate_series(1, 15) AS g;
|
||||
|
||||
-- 1.6 FAKE-CLIENT-C / API-C-DEV-01 / Development — 20 événements HTTP API.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2f000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - CASE (g % 4)
|
||||
WHEN 0 THEN (random() * interval '6 hours')
|
||||
WHEN 1 THEN interval '6 hours' + (random() * interval '18 hours')
|
||||
WHEN 2 THEN interval '1 day' + (random() * interval '6 days')
|
||||
ELSE interval '7 days' + (random() * interval '23 days')
|
||||
END,
|
||||
'P3',
|
||||
(ARRAY['Info','Debug','Warning','Info'])[1 + (g % 4)],
|
||||
(ARRAY['OMK-API-HTTP-001','OMK-API-HTTP-002'])[1 + (g % 2)],
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
'1.1.0',
|
||||
'api',
|
||||
NULL,
|
||||
'[FAKE LOCAL] api FAKE-CLIENT-C development ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[35,160,400])[1 + (g % 3)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"volume"}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development'
|
||||
FROM generate_series(1, 20) AS g;
|
||||
|
||||
-- =====================================================================
|
||||
-- 2. ERREURS FAKE (Info/Warning/Error/Critical + codes répétés, §15)
|
||||
-- Normalisation component/error_code testée par variations casse/espaces.
|
||||
-- =====================================================================
|
||||
|
||||
-- 2.1 TIMEOUT — 15 occurrences réparties A/B (variations de casse/espaces).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e100000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (random() * interval '7 days'),
|
||||
'P1',
|
||||
(ARRAY['Error','error'])[1 + (g % 2)],
|
||||
'OMK-API-HTTP-003',
|
||||
(ARRAY['Omika.Api',' omika.api ','OMIKA.API'])[1 + (g % 3)],
|
||||
NULL, NULL, NULL,
|
||||
'fake-actor-001', 1,
|
||||
(ARRAY['1.0.0','1.1.0'])[1 + (g % 2)],
|
||||
'api',
|
||||
(ARRAY['TIMEOUT',' timeout ','timeout'])[1 + (g % 3)],
|
||||
'[FAKE LOCAL] Timeout simulation ' || g,
|
||||
(ARRAY['System.TimeoutException','system.timeoutexception'])[1 + (g % 2)],
|
||||
E'[FAKE LOCAL]\nSystem.TimeoutException: operation timed out\n at Omika.Api.Tests.FakeService.Execute()',
|
||||
(ARRAY[1500,2500,3000,5000])[1 + (g % 4)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"errors","method":"GET","endpoint":"/api/v1/fake","statusCode":504}'::jsonb,
|
||||
now(),
|
||||
(ARRAY['FAKE-CLIENT-A','FAKE-CLIENT-B'])[1 + (g % 2)],
|
||||
(ARRAY['API-A-01','API-B-01'])[1 + (g % 2)],
|
||||
'Production'
|
||||
FROM generate_series(1, 15) AS g;
|
||||
|
||||
-- 2.2 NULL_REF — 10 occurrences FAKE-CLIENT-A.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e200000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (random() * interval '14 days'),
|
||||
'P1',
|
||||
'Error',
|
||||
'OMK-API-REQ-001',
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
'fake-actor-001', 1,
|
||||
(ARRAY['1.0.0','1.1.0'])[1 + (g % 2)],
|
||||
'api',
|
||||
'NULL_REF',
|
||||
'[FAKE LOCAL] NullReferenceException simulation ' || g,
|
||||
'System.NullReferenceException',
|
||||
E'[FAKE LOCAL]\nSystem.NullReferenceException: Object reference not set\n at Omika.Api.Tests.FakeService.Execute()',
|
||||
NULL,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"errors","endpoint":"/api/v1/fake"}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'
|
||||
FROM generate_series(1, 10) AS g;
|
||||
|
||||
-- 2.3 HTTP_500 — 12 occurrences FAKE-CLIENT-B (Production + Staging).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e300000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (random() * interval '30 days'),
|
||||
'P1',
|
||||
'Error',
|
||||
'OMK-API-HTTP-003',
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
'fake-actor-002', 1,
|
||||
(ARRAY['1.0.0','1.0.1'])[1 + (g % 2)],
|
||||
'api',
|
||||
'HTTP_500',
|
||||
'[FAKE LOCAL] HttpRequestException simulation ' || g,
|
||||
'System.Net.Http.HttpRequestException',
|
||||
E'[FAKE LOCAL]\nSystem.Net.Http.HttpRequestException: 500 Internal Server Error\n at Omika.Api.Tests.FakeService.Send()',
|
||||
(ARRAY[800,1200,2000])[1 + (g % 3)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"errors","statusCode":500}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-B',
|
||||
(ARRAY['API-B-01','API-B-STG-01'])[1 + (g % 2)],
|
||||
(ARRAY['Production','Staging'])[1 + (g % 2)]
|
||||
FROM generate_series(1, 12) AS g;
|
||||
|
||||
-- 2.4 SYNC_FAILED — 8 occurrences (échec de synchronisation).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e400000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (random() * interval '10 days'),
|
||||
'P1',
|
||||
'Error',
|
||||
'OMK-WKR-SYNC-002',
|
||||
'Omika.Worker',
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
(ARRAY['1.0.0','1.0.1'])[1 + (g % 2)],
|
||||
'worker',
|
||||
'SYNC_FAILED',
|
||||
'[FAKE LOCAL] sync failure simulation ' || g,
|
||||
'System.InvalidOperationException',
|
||||
E'[FAKE LOCAL]\nSystem.InvalidOperationException: sync rejected\n at Omika.Worker.Tests.FakeHandler.Apply()',
|
||||
(ARRAY[500,600,900])[1 + (g % 3)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"errors","retryCount":2}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-B', 'WORKER-B-01', 'Production'
|
||||
FROM generate_series(1, 8) AS g;
|
||||
|
||||
-- 2.5 SYNC_RETRY — 8 occurrences (retry transitoire).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e500000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (random() * interval '8 days'),
|
||||
'P2',
|
||||
'Warning',
|
||||
'OMK-WKR-SYNC-002',
|
||||
'Omika.Worker',
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
(ARRAY['1.0.0','1.1.0'])[1 + (g % 2)],
|
||||
'worker',
|
||||
'SYNC_RETRY',
|
||||
'[FAKE LOCAL] sync retry simulation ' || g,
|
||||
NULL, NULL,
|
||||
(ARRAY[200,300,400])[1 + (g % 3)]::bigint,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"errors","retryCount":1}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-A', 'WORKER-A-01', 'Production'
|
||||
FROM generate_series(1, 8) AS g;
|
||||
|
||||
-- 2.6 CRASH critique — 4 occurrences FAKE-CLIENT-C (Critical).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
SELECT
|
||||
('2e600000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (random() * interval '2 days'),
|
||||
'P0',
|
||||
'Critical',
|
||||
'OMK-API-HTTP-003',
|
||||
'Omika.Api',
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
'1.1.0',
|
||||
'api',
|
||||
'CRASH',
|
||||
'[FAKE LOCAL] Critical crash simulation ' || g,
|
||||
'System.OutOfMemoryException',
|
||||
E'[FAKE LOCAL]\nSystem.OutOfMemoryException: insufficient memory\n at Omika.Api.Tests.FakeService.Allocate()',
|
||||
NULL,
|
||||
'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"errors"}'::jsonb,
|
||||
now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development'
|
||||
FROM generate_series(1, 4) AS g;
|
||||
|
||||
-- =====================================================================
|
||||
-- 3. TRACES SYNTHÉTIQUES (TraceId partagé) — pour /Traces (§12)
|
||||
-- =====================================================================
|
||||
|
||||
-- Trace T1 : FAKE-CLIENT-A / API-A-01 — mobile → API → réponse (4 événements).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('3a000000-0000-0000-0000-000000000001', now() - interval '35 minutes', 'P2', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
'aaaaaaaa-1111-4111-8111-111111111111', NULL, NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] trace T1 - mobile started', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'),
|
||||
('3a000000-0000-0000-0000-000000000002', now() - interval '34 minutes', 'P2', 'Info', 'OMK-API-HTTP-001', 'Omika.Api',
|
||||
'aaaaaaaa-1111-4111-8111-111111111111', NULL, NULL, NULL, NULL, '1.1.0', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T1 - api request', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","method":"POST","endpoint":"/api/v1/sync"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'),
|
||||
('3a000000-0000-0000-0000-000000000003', now() - interval '33 minutes', 'P2', 'Info', 'OMK-API-HTTP-002', 'Omika.Api',
|
||||
'aaaaaaaa-1111-4111-8111-111111111111', NULL, NULL, NULL, NULL, '1.1.0', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T1 - api processing', NULL, NULL, 350, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","statusCode":200}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'),
|
||||
('3a000000-0000-0000-0000-000000000004', now() - interval '32 minutes', 'P2', 'Info', 'OMK-API-HTTP-002', 'Omika.Api',
|
||||
'aaaaaaaa-1111-4111-8111-111111111111', NULL, NULL, NULL, NULL, '1.1.0', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T1 - api response', NULL, NULL, 420, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","statusCode":200}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production');
|
||||
|
||||
-- Trace T2 : FAKE-CLIENT-B / API-B-01 — API → traitement → erreur (3 événements).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('3b000000-0000-0000-0000-000000000001', now() - interval '6 hours', 'P2', 'Info', 'OMK-API-HTTP-001', 'Omika.Api',
|
||||
'bbbbbbbb-2222-4222-8222-222222222222', NULL, NULL, NULL, NULL, '1.0.1', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T2 - api request', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","method":"GET","endpoint":"/api/v1/fake"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production'),
|
||||
('3b000000-0000-0000-0000-000000000003', now() - interval '6 hours' + interval '25 ms', 'P2', 'Info', 'OMK-API-HTTP-002', 'Omika.Api',
|
||||
'bbbbbbbb-2222-4222-8222-222222222222', NULL, NULL, NULL, NULL, '1.0.1', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T2 - api processing', NULL, NULL, 300, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","statusCode":200}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production'),
|
||||
('3b000000-0000-0000-0000-000000000002', now() - interval '6 hours' + interval '50 ms', 'P1', 'Error', 'OMK-API-HTTP-003', 'Omika.Api',
|
||||
'bbbbbbbb-2222-4222-8222-222222222222', NULL, NULL, NULL, NULL, '1.0.1', 'api', 'HTTP_500',
|
||||
'[FAKE LOCAL] trace T2 - traitement en erreur', 'System.Net.Http.HttpRequestException',
|
||||
E'[FAKE LOCAL]\nSystem.Net.Http.HttpRequestException: 500\n at Omika.Api.Tests.FakeService.Send()', 1200, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","statusCode":500}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production');
|
||||
|
||||
-- Trace T3 : FAKE-CLIENT-C / API-C-DEV-01 / Development — succès rapide (3 événements).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('3c000000-0000-0000-0000-000000000001', now() - interval '12 hours', 'P3', 'Info', 'OMK-API-HTTP-001', 'Omika.Api',
|
||||
'cccccccc-3333-4333-8333-333333333333', NULL, NULL, NULL, NULL, '1.1.0', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T3 - api request', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development'),
|
||||
('3c000000-0000-0000-0000-000000000002', now() - interval '12 hours' + interval '30 ms', 'P3', 'Info', 'OMK-API-HTTP-002', 'Omika.Api',
|
||||
'cccccccc-3333-4333-8333-333333333333', NULL, NULL, NULL, NULL, '1.1.0', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T3 - api processing', NULL, NULL, 80, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","statusCode":200}'::jsonb, now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development'),
|
||||
('3c000000-0000-0000-0000-000000000003', now() - interval '12 hours' + interval '45 ms', 'P3', 'Info', 'OMK-API-HTTP-002', 'Omika.Api',
|
||||
'cccccccc-3333-4333-8333-333333333333', NULL, NULL, NULL, NULL, '1.1.0', 'api', NULL,
|
||||
'[FAKE LOCAL] trace T3 - api response', NULL, NULL, 90, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"trace","statusCode":200}'::jsonb, now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development');
|
||||
|
||||
-- =====================================================================
|
||||
-- 4. SYNCHRONISATION SYNTHÉTIQUE (OperationId partagé) — succès/retry/échec (§25)
|
||||
-- EventCodes exacts : OMK-MOB-SYNC-001 / OMK-WKR-SYNC-001 / OMK-WKR-SYNC-002
|
||||
-- =====================================================================
|
||||
|
||||
-- Opération OP-SUCCESS (FAKE-CLIENT-A / Production) : succès mobile → worker.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('45000000-0000-0000-0000-000000000001', now() - interval '1 hour', 'P2', 'Info', 'OMK-MOB-SYNC-001', 'Omika.App',
|
||||
NULL, '5e5e5e5e-5000-4000-8000-0000000000a1', '0a0a0a0a-1000-4000-8000-000000000001', 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] sync OP-SUCCESS - operation reçue', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'),
|
||||
('45000000-0000-0000-0000-000000000002', now() - interval '59 minutes', 'P3', 'Info', 'OMK-WKR-SYNC-001', 'Omika.Worker',
|
||||
NULL, NULL, '0a0a0a0a-1000-4000-8000-000000000001', NULL, NULL, '1.1.0', 'worker', NULL,
|
||||
'[FAKE LOCAL] sync OP-SUCCESS - worker processing', NULL, NULL, 450, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync","retryCount":0}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'WORKER-A-01', 'Production'),
|
||||
('45000000-0000-0000-0000-000000000003', now() - interval '58 minutes', 'P3', 'Info', 'OMK-WKR-SYNC-001', 'Omika.Worker',
|
||||
NULL, NULL, '0a0a0a0a-1000-4000-8000-000000000001', NULL, NULL, '1.1.0', 'worker', NULL,
|
||||
'[FAKE LOCAL] sync OP-SUCCESS - worker success', NULL, NULL, 480, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync","retryCount":0}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'WORKER-A-01', 'Production');
|
||||
|
||||
-- Opération OP-FAIL (FAKE-CLIENT-B / Production) : échec définitif worker.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('45000000-0000-0000-0000-000000000004', now() - interval '3 hours', 'P1', 'Info', 'OMK-MOB-SYNC-001', 'Omika.App',
|
||||
NULL, '5e5e5e5e-5000-4000-8000-0000000000a2', '0b0b0b0b-1000-4000-8000-000000000002', 'fake-actor-002', 1, '1.0.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] sync OP-FAIL - operation reçue', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production'),
|
||||
('45000000-0000-0000-0000-000000000005', now() - interval '3 hours' + interval '10 seconds', 'P1', 'Error', 'OMK-WKR-SYNC-002', 'Omika.Worker',
|
||||
NULL, NULL, '0b0b0b0b-1000-4000-8000-000000000002', NULL, NULL, '1.0.0', 'worker', 'SYNC_FAILED',
|
||||
'[FAKE LOCAL] sync OP-FAIL - worker failure', 'System.InvalidOperationException',
|
||||
E'[FAKE LOCAL]\nSystem.InvalidOperationException: sync rejected\n at Omika.Worker.Tests.FakeHandler.Apply()', 600, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync","retryCount":2}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'WORKER-B-01', 'Production');
|
||||
|
||||
-- Opération OP-RETRY (FAKE-CLIENT-B / Production) : retry transitoire worker.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('45000000-0000-0000-0000-000000000006', now() - interval '9 hours', 'P2', 'Warning', 'OMK-MOB-SYNC-001', 'Omika.App',
|
||||
NULL, '5e5e5e5e-5000-4000-8000-0000000000a3', '0c0c0c0c-1000-4000-8000-000000000003', 'fake-actor-003', 1, '1.1.0', 'Desktop', NULL,
|
||||
'[FAKE LOCAL] sync OP-RETRY - operation reçue', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production'),
|
||||
('45000000-0000-0000-0000-000000000007', now() - interval '9 hours' + interval '5 seconds', 'P2', 'Warning', 'OMK-WKR-SYNC-002', 'Omika.Worker',
|
||||
NULL, NULL, '0c0c0c0c-1000-4000-8000-000000000003', NULL, NULL, '1.1.0', 'worker', 'SYNC_RETRY',
|
||||
'[FAKE LOCAL] sync OP-RETRY - transient retry', NULL, NULL, 300, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"sync","retryCount":1}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'WORKER-B-01', 'Production');
|
||||
|
||||
-- =====================================================================
|
||||
-- 5. SESSIONS PARTAGÉES (SessionId) — corrélation du détail.
|
||||
-- =====================================================================
|
||||
|
||||
-- Session S1 (FAKE-CLIENT-A / Production).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('5a000000-0000-0000-0000-000000000001', now() - interval '2 hours', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, '5e5e5e5e-5000-4000-8000-0000000000b1', NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] session S1 - app started', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"session"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'),
|
||||
('5a000000-0000-0000-0000-000000000002', now() - interval '1 hour 50 minutes', 'P3', 'Info', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, '5e5e5e5e-5000-4000-8000-0000000000b1', NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] session S1 - diagnostic init', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"session"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production'),
|
||||
('5a000000-0000-0000-0000-000000000003', now() - interval '1 hour 40 minutes', 'P2', 'Warning', 'OMK-MOB-APP-002', 'Omika.App',
|
||||
NULL, '5e5e5e5e-5000-4000-8000-0000000000b1', NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] session S1 - app session stopped', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"session"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production');
|
||||
|
||||
-- Session S2 (FAKE-CLIENT-B / Production).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('5b000000-0000-0000-0000-000000000001', now() - interval '30 minutes', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, '5f5f5f5f-5000-4000-8000-0000000000b2', NULL, 'fake-actor-002', 1, '1.0.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] session S2 - app started', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"session"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production'),
|
||||
('5b000000-0000-0000-0000-000000000002', now() - interval '29 minutes', 'P3', 'Info', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, '5f5f5f5f-5000-4000-8000-0000000000b2', NULL, 'fake-actor-002', 1, '1.0.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] session S2 - diagnostic init', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"session"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production');
|
||||
|
||||
-- =====================================================================
|
||||
-- 6. SCREENVIEW (usage, §13) — 250 vues pondérées sur 12 écrans du catalogue.
|
||||
-- EventCode OMK-MOB-UI-001. AGENDA dominant, SETTINGS rare.
|
||||
-- =====================================================================
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment,
|
||||
license_number, device_key, device_key_version, device_manufacturer,
|
||||
device_model, operating_system, operating_system_version, app_build,
|
||||
screen_width, screen_height, logical_width, logical_height, display_scale,
|
||||
screen_code, feature_code)
|
||||
SELECT
|
||||
('61000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (g % 60) * interval '5 hours',
|
||||
'P4', 'Info', 'OMK-MOB-UI-001', 'Navigation',
|
||||
NULL, ('6a000000-0000-0000-0000-' || lpad((g % 30)::text, 12, '0'))::uuid, NULL,
|
||||
(ARRAY['fake-actor-001','fake-actor-002','fake-actor-003'])[1 + (g % 3)], 1,
|
||||
(ARRAY['1.0.0','1.0.1','1.1.0'])[1 + (g % 3)],
|
||||
(ARRAY['Android','Android','iOS','Desktop'])[1 + (g % 4)],
|
||||
NULL, '[FAKE LOCAL] ScreenView', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"screen-view"}'::jsonb, now(),
|
||||
(ARRAY['FAKE-CLIENT-A','FAKE-CLIENT-B','FAKE-CLIENT-C'])[1 + (g % 3)],
|
||||
(ARRAY['API-A-01','API-B-01','API-C-DEV-01'])[1 + (g % 3)],
|
||||
(ARRAY['Production','Production','Development'])[1 + (g % 3)],
|
||||
(ARRAY['FAKE-LIC-C','FAKE-LIC-D','FAKE-LIC-E','FAKE-LIC-DESKTOP-A','FAKE-LIC-DESKTOP-B','FAKE-LIC-F'])[1 + (g % 6)],
|
||||
(ARRAY['devk-android-google-c','devk-ios-apple-d','devk-ios-apple-e','devk-desktop-windows-f','devk-desktop-windows-g','devk-android-extra-h'])[1 + (g % 6)], 1,
|
||||
(ARRAY['Google','Apple','Apple','Microsoft','Dell','OnePlus'])[1 + (g % 6)],
|
||||
(ARRAY['Pixel 8','iPhone 15 Pro','iPhone 16 Pro Max','Surface Pro 9','XPS 15','OnePlus 12'])[1 + (g % 6)],
|
||||
(ARRAY['Android','iOS','iOS','Windows','Windows','Android'])[1 + (g % 6)],
|
||||
(ARRAY['14','17.6','18.7','11','10','14'])[1 + (g % 6)],
|
||||
(ARRAY['1','2','3','4','5','6'])[1 + (g % 6)],
|
||||
1080, 2400, 393, 873, 2.75,
|
||||
(CASE
|
||||
WHEN g <= 40 THEN 'AGENDA'
|
||||
WHEN g <= 70 THEN 'SITE_DETAIL'
|
||||
WHEN g <= 100 THEN 'RENDEZVOUS_DETAIL'
|
||||
WHEN g <= 130 THEN 'INTERVENTION_SEARCH'
|
||||
WHEN g <= 160 THEN 'INTERVENTION_DETAIL'
|
||||
WHEN g <= 180 THEN 'RAPPORT'
|
||||
WHEN g <= 195 THEN 'EMAIL'
|
||||
WHEN g <= 210 THEN 'TEAM'
|
||||
WHEN g <= 220 THEN 'SETTINGS'
|
||||
WHEN g <= 230 THEN 'DOSSIER_LIST'
|
||||
WHEN g <= 240 THEN 'CLIENT_LIST'
|
||||
ELSE 'SITE_LIST'
|
||||
END),
|
||||
NULL
|
||||
FROM generate_series(1, 250) AS g;
|
||||
|
||||
-- =====================================================================
|
||||
-- 7. FEATUREUSE (usage, §14) — 120 utilisations, fréquences DIFFÉRENTES.
|
||||
-- INTERVENTION_SEARCH_RUN (60) > REPORT_GENERATE (36) > EMAIL_SEND (24).
|
||||
-- EventCode OMK-MOB-UI-002.
|
||||
-- =====================================================================
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment,
|
||||
license_number, device_key, device_key_version, device_manufacturer,
|
||||
device_model, operating_system, operating_system_version, app_build,
|
||||
screen_width, screen_height, logical_width, logical_height, display_scale,
|
||||
screen_code, feature_code)
|
||||
SELECT
|
||||
('62000000-0000-0000-0000-' || lpad(g::text, 12, '0'))::uuid,
|
||||
now() - (g % 50) * interval '4 hours',
|
||||
'P4', 'Info', 'OMK-MOB-UI-002',
|
||||
(CASE WHEN g <= 60 THEN 'InterventionsViewModel'
|
||||
WHEN g <= 96 THEN 'RapportChampsViewModel'
|
||||
ELSE 'NouveauEmailViewModel' END),
|
||||
NULL, ('6a000000-0000-0000-0000-' || lpad((g % 30)::text, 12, '0'))::uuid, NULL,
|
||||
(ARRAY['fake-actor-001','fake-actor-002','fake-actor-003'])[1 + (g % 3)], 1,
|
||||
(ARRAY['1.0.0','1.0.1','1.1.0'])[1 + (g % 3)],
|
||||
(ARRAY['Android','Android','iOS','Desktop'])[1 + (g % 4)],
|
||||
NULL, '[FAKE LOCAL] FeatureUse', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"feature-use"}'::jsonb, now(),
|
||||
(ARRAY['FAKE-CLIENT-A','FAKE-CLIENT-B','FAKE-CLIENT-C'])[1 + (g % 3)],
|
||||
(ARRAY['API-A-01','API-B-01','API-C-DEV-01'])[1 + (g % 3)],
|
||||
(ARRAY['Production','Production','Development'])[1 + (g % 3)],
|
||||
(ARRAY['FAKE-LIC-C','FAKE-LIC-D','FAKE-LIC-E','FAKE-LIC-DESKTOP-A','FAKE-LIC-DESKTOP-B','FAKE-LIC-F'])[1 + (g % 6)],
|
||||
(ARRAY['devk-android-google-c','devk-ios-apple-d','devk-ios-apple-e','devk-desktop-windows-f','devk-desktop-windows-g','devk-android-extra-h'])[1 + (g % 6)], 1,
|
||||
(ARRAY['Google','Apple','Apple','Microsoft','Dell','OnePlus'])[1 + (g % 6)],
|
||||
(ARRAY['Pixel 8','iPhone 15 Pro','iPhone 16 Pro Max','Surface Pro 9','XPS 15','OnePlus 12'])[1 + (g % 6)],
|
||||
(ARRAY['Android','iOS','iOS','Windows','Windows','Android'])[1 + (g % 6)],
|
||||
(ARRAY['14','17.6','18.7','11','10','14'])[1 + (g % 6)],
|
||||
(ARRAY['1','2','3','4','5','6'])[1 + (g % 6)],
|
||||
1080, 2400, 393, 873, 2.75,
|
||||
(CASE WHEN g <= 60 THEN 'INTERVENTION_SEARCH'
|
||||
WHEN g <= 96 THEN 'RAPPORT'
|
||||
ELSE 'EMAIL' END),
|
||||
(CASE WHEN g <= 60 THEN 'INTERVENTION_SEARCH_RUN'
|
||||
WHEN g <= 96 THEN 'REPORT_GENERATE'
|
||||
ELSE 'EMAIL_SEND' END)
|
||||
FROM generate_series(1, 120) AS g;
|
||||
|
||||
-- =====================================================================
|
||||
-- 8. CAS PARC (§9-§11) : licence réattribuée, changement OS, changement version,
|
||||
-- appareils Desktop/Windows, variété de flotte.
|
||||
-- =====================================================================
|
||||
|
||||
-- 8.1 Réattribution de licence FAKE-LIC-REASSIGNED :
|
||||
-- Device A (Android 15, ancien) → Device B (iOS 18, récent).
|
||||
-- MÊME LicenseNumber sur deux DeviceKey = 2 appareils DISTINCTS, jamais fusionnés.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment,
|
||||
license_number, device_key, device_key_version, device_manufacturer,
|
||||
device_model, operating_system, operating_system_version, app_build,
|
||||
screen_width, screen_height, logical_width, logical_height, display_scale,
|
||||
screen_code, feature_code)
|
||||
VALUES
|
||||
('71000000-0000-0000-0000-000000000001', now() - interval '20 days', 'P2', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.0.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] reassigned device A (old)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"license-reassigned"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-REASSIGNED', 'devk-reassigned-android-a', 1, 'Samsung', 'SM-S921B', 'Android', '15', '1',
|
||||
1080, 2400, 360, 800, 3.0, 'AGENDA', NULL),
|
||||
('71000000-0000-0000-0000-000000000002', now() - interval '18 days', 'P2', 'Info', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.0.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] reassigned device A (old)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"license-reassigned"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-REASSIGNED', 'devk-reassigned-android-a', 1, 'Samsung', 'SM-S921B', 'Android', '15', '1',
|
||||
1080, 2400, 360, 800, 3.0, 'SITE_DETAIL', NULL),
|
||||
('71000000-0000-0000-0000-000000000003', now() - interval '2 days', 'P2', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.1.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] reassigned device B (recent)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"license-reassigned"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-REASSIGNED', 'devk-reassigned-ios-b', 1, 'Apple', 'iPhone 15 Pro', 'iOS', '18', '3',
|
||||
1179, 2556, 393, 852, 3.0, 'RENDEZVOUS_DETAIL', NULL),
|
||||
('71000000-0000-0000-0000-000000000004', now() - interval '1 day', 'P2', 'Info', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.1.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] reassigned device B (recent)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"license-reassigned"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-REASSIGNED', 'devk-reassigned-ios-b', 1, 'Apple', 'iPhone 15 Pro', 'iOS', '18', '3',
|
||||
1179, 2556, 393, 852, 3.0, 'INTERVENTION_DETAIL', NULL);
|
||||
|
||||
-- 8.2 Changement d'OS d'un même DeviceKey (§10) : devk-android-samsung-a
|
||||
-- Android 15 → Android 16. Vue parc actuelle = Android 16 (dernière observation).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment,
|
||||
license_number, device_key, device_key_version, device_manufacturer,
|
||||
device_model, operating_system, operating_system_version, app_build,
|
||||
screen_width, screen_height, logical_width, logical_height, display_scale,
|
||||
screen_code, feature_code)
|
||||
VALUES
|
||||
('72000000-0000-0000-0000-000000000001', now() - interval '12 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] os change samsung-a (old Android 15)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"os-change"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-A', 'devk-android-samsung-a', 1, 'Samsung', 'SM-S928B', 'Android', '15', '1',
|
||||
1080, 2400, 360, 800, 3.0, 'AGENDA', NULL),
|
||||
('72000000-0000-0000-0000-000000000002', now() - interval '3 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] os change samsung-a (recent Android 16)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"os-change"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-A', 'devk-android-samsung-a', 1, 'Samsung', 'SM-S928B', 'Android', '16', '2',
|
||||
1080, 2400, 360, 800, 3.0, 'SITE_DETAIL', NULL);
|
||||
|
||||
-- 8.3 Changement de version Omika d'un même DeviceKey (§11) : devk-android-xiaomi-b
|
||||
-- 1.0.0 → 1.1.0. Vue parc actuelle = 1.1.0 (dernière observation).
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment,
|
||||
license_number, device_key, device_key_version, device_manufacturer,
|
||||
device_model, operating_system, operating_system_version, app_build,
|
||||
screen_width, screen_height, logical_width, logical_height, display_scale,
|
||||
screen_code, feature_code)
|
||||
VALUES
|
||||
('73000000-0000-0000-0000-000000000001', now() - interval '15 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.0.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] version change xiaomi-b (old 1.0.0)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"version-change"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production',
|
||||
'FAKE-LIC-B', 'devk-android-xiaomi-b', 1, 'Xiaomi', '23113RKC6G', 'Android', '16', '1',
|
||||
1080, 2400, 393, 873, 2.75, 'AGENDA', NULL),
|
||||
('73000000-0000-0000-0000-000000000002', now() - interval '4 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] version change xiaomi-b (recent 1.1.0)', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"version-change"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production',
|
||||
'FAKE-LIC-B', 'devk-android-xiaomi-b', 1, 'Xiaomi', '23113RKC6G', 'Android', '16', '3',
|
||||
1080, 2400, 393, 873, 2.75, 'SITE_DETAIL', NULL);
|
||||
|
||||
-- 8.4 Appareils Desktop/Windows + variété de flotte (§8) — 8 observations.
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment,
|
||||
license_number, device_key, device_key_version, device_manufacturer,
|
||||
device_model, operating_system, operating_system_version, app_build,
|
||||
screen_width, screen_height, logical_width, logical_height, display_scale,
|
||||
screen_code, feature_code)
|
||||
VALUES
|
||||
('74000000-0000-0000-0000-000000000001', now() - interval '6 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.0.0', 'Desktop', NULL,
|
||||
'[FAKE LOCAL] fleet desktop surface', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-desktop"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-DESKTOP-A', 'devk-desktop-windows-f', 1, 'Microsoft', 'Surface Pro 9', 'Windows', '11', '1',
|
||||
2880, 1920, 1440, 960, 1.5, 'AGENDA', NULL),
|
||||
('74000000-0000-0000-0000-000000000002', now() - interval '6 days', 'P3', 'Info', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.0.0', 'Desktop', NULL,
|
||||
'[FAKE LOCAL] fleet desktop surface diag', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-desktop"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-DESKTOP-A', 'devk-desktop-windows-f', 1, 'Microsoft', 'Surface Pro 9', 'Windows', '11', '1',
|
||||
2880, 1920, 1440, 960, 1.5, 'SETTINGS', NULL),
|
||||
('74000000-0000-0000-0000-000000000003', now() - interval '8 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.1.0', 'Desktop', NULL,
|
||||
'[FAKE LOCAL] fleet desktop dell xps', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-desktop"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production',
|
||||
'FAKE-LIC-DESKTOP-B', 'devk-desktop-windows-g', 1, 'Dell', 'XPS 15', 'Windows', '10', '3',
|
||||
3840, 2400, 1920, 1200, 2.0, 'TEAM', NULL),
|
||||
('74000000-0000-0000-0000-000000000004', now() - interval '9 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-003', 1, '1.0.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] fleet device google pixel', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-variety"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development',
|
||||
'FAKE-LIC-C', 'devk-android-google-c', 1, 'Google', 'Pixel 8', 'Android', '14', '2',
|
||||
1080, 2400, 360, 800, 3.0, 'SETTINGS', NULL),
|
||||
('74000000-0000-0000-0000-000000000005', now() - interval '7 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.0.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] fleet device iphone 15 pro', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-variety"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production',
|
||||
'FAKE-LIC-D', 'devk-ios-apple-d', 1, 'Apple', 'iPhone 15 Pro', 'iOS', '17.6', '1',
|
||||
1179, 2556, 393, 852, 3.0, 'RENDEZVOUS_DETAIL', NULL),
|
||||
('74000000-0000-0000-0000-000000000006', now() - interval '7 days', 'P3', 'Info', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-003', 1, '1.0.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] fleet device iphone 16 pro max', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-variety"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-C', 'API-C-DEV-01', 'Development',
|
||||
'FAKE-LIC-E', 'devk-ios-apple-e', 1, 'Apple', 'iPhone 16 Pro Max', 'iOS', '18.7', '2',
|
||||
1206, 2622, 402, 874, 3.0, 'EMAIL', NULL),
|
||||
('74000000-0000-0000-0000-000000000007', now() - interval '10 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] fleet device samsung again', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-variety"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-A', 'API-A-01', 'Production',
|
||||
'FAKE-LIC-A', 'devk-android-samsung-a', 1, 'Samsung', 'SM-S928B', 'Android', '16', '2',
|
||||
1080, 2400, 360, 800, 3.0, 'RAPPORT', NULL),
|
||||
('74000000-0000-0000-0000-000000000008', now() - interval '10 days', 'P3', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.1.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] fleet device xiaomi again', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"fleet-variety"}'::jsonb, now(),
|
||||
'FAKE-CLIENT-B', 'API-B-01', 'Production',
|
||||
'FAKE-LIC-B', 'devk-android-xiaomi-b', 1, 'Xiaomi', '23113RKC6G', 'Android', '16', '3',
|
||||
1080, 2400, 393, 873, 2.75, 'INTERVENTION_SEARCH', NULL);
|
||||
|
||||
-- =====================================================================
|
||||
-- 9. DONNÉES HISTORIQUES SANS CONTEXTE (§16) :
|
||||
-- device_key / license_number / screen_code / feature_code = NULL.
|
||||
-- Elles restent affichables sans filtre, et exclues par les filtres appareil/
|
||||
-- licence/écran/fonctionnalité. Toujours source='local-seed' + [FAKE LOCAL].
|
||||
-- =====================================================================
|
||||
INSERT INTO diagnostic_event
|
||||
(event_id, timestamp_utc, priority, level, event_code, component,
|
||||
trace_id, session_id, operation_id, actor_key, actor_key_version,
|
||||
app_version, platform, error_code, message, exception_type, stack_trace,
|
||||
duration_ms, source, metadata_json, ingested_at_utc,
|
||||
client_code, server_instance, environment)
|
||||
VALUES
|
||||
('7a000000-0000-0000-0000-000000000001', now() - interval '18 days', 'P2', 'Info', 'OMK-MOB-APP-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-001', 1, '1.0.0', 'Android', NULL,
|
||||
'[FAKE LOCAL] historique sans contexte 1', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"historical-null"}'::jsonb, now(),
|
||||
NULL, NULL, NULL),
|
||||
('7a000000-0000-0000-0000-000000000002', now() - interval '22 days', 'P3', 'Info', 'OMK-API-HTTP-001', 'Omika.Api',
|
||||
NULL, NULL, NULL, NULL, NULL, '1.0.0', 'api', NULL,
|
||||
'[FAKE LOCAL] historique sans contexte 2', NULL, NULL, 120, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"historical-null"}'::jsonb, now(),
|
||||
NULL, NULL, NULL),
|
||||
('7a000000-0000-0000-0000-000000000003', now() - interval '26 days', 'P1', 'Error', 'OMK-API-HTTP-003', 'Omika.Api',
|
||||
NULL, NULL, NULL, NULL, NULL, '1.0.0', 'api', 'TIMEOUT',
|
||||
'[FAKE LOCAL] historique sans contexte 3', 'System.TimeoutException',
|
||||
E'[FAKE LOCAL]\nSystem.TimeoutException: legacy\n at Omika.Api.Tests.FakeService.Execute()', 2000, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"historical-null"}'::jsonb, now(),
|
||||
NULL, NULL, NULL),
|
||||
('7a000000-0000-0000-0000-000000000004', now() - interval '30 days', 'P2', 'Warning', 'OMK-MOB-APP-002', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-002', 1, '1.0.0', 'iOS', NULL,
|
||||
'[FAKE LOCAL] historique sans contexte 4', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"historical-null"}'::jsonb, now(),
|
||||
NULL, NULL, NULL),
|
||||
('7a000000-0000-0000-0000-000000000005', now() - interval '35 days', 'P3', 'Debug', 'OMK-MOB-DIAG-001', 'Omika.App',
|
||||
NULL, NULL, NULL, 'fake-actor-003', 1, '1.0.0', 'Desktop', NULL,
|
||||
'[FAKE LOCAL] historique sans contexte 5', NULL, NULL, NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"historical-null"}'::jsonb, now(),
|
||||
NULL, NULL, NULL),
|
||||
('7a000000-0000-0000-0000-000000000006', now() - interval '40 days', 'P1', 'Error', 'OMK-API-REQ-001', 'Omika.Api',
|
||||
NULL, NULL, NULL, NULL, NULL, '1.0.0', 'api', 'NULL_REF',
|
||||
'[FAKE LOCAL] historique sans contexte 6', 'System.NullReferenceException',
|
||||
E'[FAKE LOCAL]\nSystem.NullReferenceException: legacy\n at Omika.Api.Tests.FakeService.Execute()', NULL, 'local-seed',
|
||||
'{"synthetic":true,"seed":"omika-local-diagnostics-preprod","t21":"historical-null"}'::jsonb, now(),
|
||||
NULL, NULL, NULL);
|
||||
|
||||
-- =====================================================================
|
||||
-- FIN DU SEED T21. Volume attendu (~730 événements local-seed) :
|
||||
-- 270 volume de fond + 57 erreurs + 10 traces + 7 synchronisation +
|
||||
-- 5 sessions + 250 ScreenView + 120 FeatureUse + 16 parc + 6 historiques NULL.
|
||||
-- Requêtes de contrôle :
|
||||
-- SELECT count(*) FROM diagnostic_event WHERE source = 'local-seed';
|
||||
-- SELECT client_code, count(*) FROM diagnostic_event WHERE source='local-seed' GROUP BY 1 ORDER BY 1 NULLS LAST;
|
||||
-- SELECT count(DISTINCT device_key) FROM diagnostic_event WHERE source='local-seed' AND device_key IS NOT NULL;
|
||||
-- SELECT count(DISTINCT license_number) FROM diagnostic_event WHERE source='local-seed' AND license_number IS NOT NULL;
|
||||
-- SELECT screen_code, count(*) FROM diagnostic_event WHERE source='local-seed' AND screen_code IS NOT NULL GROUP BY 1 ORDER BY 2 DESC;
|
||||
-- SELECT feature_code, count(*) FROM diagnostic_event WHERE source='local-seed' AND feature_code IS NOT NULL GROUP BY 1 ORDER BY 2 DESC;
|
||||
-- =====================================================================
|
||||
@@ -0,0 +1,177 @@
|
||||
-- =====================================================================
|
||||
-- Omika Diagnostic Center — SEED RÉFÉRENTIEL COMPLET (généré)
|
||||
-- Généré par scripts\seed-referentiel-complet.ps1
|
||||
-- =====================================================================
|
||||
-- NON DESTRUCTIF : INSERT ... ON CONFLICT DO NOTHING.
|
||||
-- IDEMPOTENT : un libellé modifié par un Admin n'est JAMAIS écrasé.
|
||||
-- Cible : table diagnostics_reference (T24-A, créée par 011_diagnostics_reference.sql).
|
||||
-- Aucun mot de passe, aucune donnée personnelle, aucun secret.
|
||||
-- =====================================================================
|
||||
|
||||
INSERT INTO diagnostics_reference
|
||||
(reference_type, code, label, description, enabled, sort_order, created_at_utc, updated_at_utc)
|
||||
VALUES
|
||||
('SCREEN_CODE', 'AGENDA', 'Agenda', NULL, TRUE, 10, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_SEARCH', 'Recherche d''interventions', NULL, TRUE, 20, now(), now()),
|
||||
('SCREEN_CODE', 'DOSSIER_LIST', 'Dossiers', NULL, TRUE, 30, now(), now()),
|
||||
('SCREEN_CODE', 'TEAM', 'Équipe', NULL, TRUE, 40, now(), now()),
|
||||
('SCREEN_CODE', 'TEAM_DETAIL', 'Détail d''équipe', NULL, TRUE, 50, now(), now()),
|
||||
('SCREEN_CODE', 'CLIENT_LIST', 'Clients', NULL, TRUE, 60, now(), now()),
|
||||
('SCREEN_CODE', 'SITE_LIST', 'Sites', NULL, TRUE, 70, now(), now()),
|
||||
('SCREEN_CODE', 'SETTINGS', 'Paramètres', NULL, TRUE, 80, now(), now()),
|
||||
('SCREEN_CODE', 'RENDEZVOUS_DETAIL', 'Détail de rendez-vous', NULL, TRUE, 90, now(), now()),
|
||||
('SCREEN_CODE', 'AGENDA_TEAM', 'Agenda d''équipe', NULL, TRUE, 100, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_DETAIL', 'Détail d''intervention', NULL, TRUE, 110, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_DOCUMENTS', 'Documents d''intervention', NULL, TRUE, 120, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_NOTES', 'Notes d''intervention', NULL, TRUE, 130, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_NOTES_ADMIN', 'Notes administratives', NULL, TRUE, 140, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_EMAILS', 'Courriels d''intervention', NULL, TRUE, 150, now(), now()),
|
||||
('SCREEN_CODE', 'EMAIL', 'Nouveau courriel', NULL, TRUE, 160, now(), now()),
|
||||
('SCREEN_CODE', 'RAPPORT', 'Rapport', NULL, TRUE, 170, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_RESOURCES', 'Contenus d''intervention', NULL, TRUE, 180, now(), now()),
|
||||
('SCREEN_CODE', 'PHOTO_VIEWER', 'Visionneuse photo', NULL, TRUE, 190, now(), now()),
|
||||
('SCREEN_CODE', 'IMAGE_EDITOR', 'Éditeur d''image', NULL, TRUE, 200, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_CONTACTS', 'Contacts d''intervention', NULL, TRUE, 210, now(), now()),
|
||||
('SCREEN_CODE', 'CONTACT_DETAIL', 'Détail de contact', NULL, TRUE, 220, now(), now()),
|
||||
('SCREEN_CODE', 'DOSSIER_DETAIL', 'Détail de dossier', NULL, TRUE, 230, now(), now()),
|
||||
('SCREEN_CODE', 'CLIENT_DETAIL', 'Détail de client', NULL, TRUE, 240, now(), now()),
|
||||
('SCREEN_CODE', 'SITE_DETAIL', 'Détail de site', NULL, TRUE, 250, now(), now()),
|
||||
('SCREEN_CODE', 'COLLABORATEUR_DETAIL', 'Détail de collaborateur', NULL, TRUE, 260, now(), now()),
|
||||
('SCREEN_CODE', 'INTERVENTION_EDIT', 'Formulaire intervention', NULL, TRUE, 270, now(), now()),
|
||||
('SCREEN_CODE', 'SUIVI_TEMPS_CREATE', 'Saisie de temps', NULL, TRUE, 280, now(), now()),
|
||||
('SCREEN_CODE', 'COMPTE_RENDU_CREATE', 'Compte rendu', NULL, TRUE, 290, now(), now()),
|
||||
('SCREEN_CODE', 'SYNC_QUEUE', 'File de synchronisation', NULL, TRUE, 300, now(), now()),
|
||||
('FEATURE_CODE', 'INTERVENTION_SEARCH_RUN', 'Recherche d''intervention', NULL, TRUE, 10, now(), now()),
|
||||
('FEATURE_CODE', 'REPORT_GENERATE', 'Génération de rapport', NULL, TRUE, 20, now(), now()),
|
||||
('FEATURE_CODE', 'EMAIL_SEND', 'Envoi de courriel', NULL, TRUE, 30, now(), now()),
|
||||
('FEATURE_CODE', 'ADD_COLLABORATEUR', 'Ajouter un collaborateur', NULL, TRUE, 1000, now(), now()),
|
||||
('FEATURE_CODE', 'ADD_DOCUMENT', 'Ajouter un document', NULL, TRUE, 1010, now(), now()),
|
||||
('FEATURE_CODE', 'ADD_NOTE', 'Ajouter une note', NULL, TRUE, 1020, now(), now()),
|
||||
('FEATURE_CODE', 'ADD_PHOTO', 'Ajouter une photo', NULL, TRUE, 1030, now(), now()),
|
||||
('FEATURE_CODE', 'ADD_PHOTO_FROM_CAMERA', 'Prendre une photo', NULL, TRUE, 1040, now(), now()),
|
||||
('FEATURE_CODE', 'ADD_TIME', 'Ajouter un temps', NULL, TRUE, 1050, now(), now()),
|
||||
('FEATURE_CODE', 'AJOUTER_DOCUMENT', 'Ajouter un document', NULL, TRUE, 1060, now(), now()),
|
||||
('FEATURE_CODE', 'AJOUTER_PHOTO', 'Ajouter une photo', NULL, TRUE, 1070, now(), now()),
|
||||
('FEATURE_CODE', 'ANNULER', 'Annuler', NULL, TRUE, 1080, now(), now()),
|
||||
('FEATURE_CODE', 'ANNULER_CONFIRMATION_ANNULATION', 'Annuler la confirmation', NULL, TRUE, 1090, now(), now()),
|
||||
('FEATURE_CODE', 'APPLY_CUSTOM_COLOR', 'Appliquer la couleur personnalisée', NULL, TRUE, 1100, now(), now()),
|
||||
('FEATURE_CODE', 'APPLY_PRIMARY_COLOR', 'Appliquer la couleur principale', NULL, TRUE, 1110, now(), now()),
|
||||
('FEATURE_CODE', 'ARCHIVE', 'Archiver', NULL, TRUE, 1120, now(), now()),
|
||||
('FEATURE_CODE', 'ASSIGN_LICENCE', 'Attribuer une licence', NULL, TRUE, 1130, now(), now()),
|
||||
('FEATURE_CODE', 'BACK', 'Retour', NULL, TRUE, 1140, now(), now()),
|
||||
('FEATURE_CODE', 'BASCULER_OPTION', 'Cocher / décocher l''option', NULL, TRUE, 1150, now(), now()),
|
||||
('FEATURE_CODE', 'BASCULER_SELECTION', 'Sélectionner la pièce jointe', NULL, TRUE, 1160, now(), now()),
|
||||
('FEATURE_CODE', 'CALL', 'Appeler', NULL, TRUE, 1170, now(), now()),
|
||||
('FEATURE_CODE', 'CALL_COLLABORATEUR', 'Appeler le collaborateur', NULL, TRUE, 1180, now(), now()),
|
||||
('FEATURE_CODE', 'CALL_CONTACT', 'Appeler le contact', NULL, TRUE, 1190, now(), now()),
|
||||
('FEATURE_CODE', 'CALL_PRIMARY', 'Appeler (contact principal)', NULL, TRUE, 1200, now(), now()),
|
||||
('FEATURE_CODE', 'CALL_SUIVI_PAR', 'Appeler (suivi par)', NULL, TRUE, 1210, now(), now()),
|
||||
('FEATURE_CODE', 'CANCEL', 'Annuler', NULL, TRUE, 1220, now(), now()),
|
||||
('FEATURE_CODE', 'CANCEL_ARCHIVE', 'Annuler l''archivage', NULL, TRUE, 1230, now(), now()),
|
||||
('FEATURE_CODE', 'CANCEL_SCAN', 'Annuler le scan', NULL, TRUE, 1240, now(), now()),
|
||||
('FEATURE_CODE', 'CLEAR_ALL_DATA', 'Vider toutes les données', NULL, TRUE, 1250, now(), now()),
|
||||
('FEATURE_CODE', 'CLEAR_DOCUMENTS', 'Vider les documents', NULL, TRUE, 1260, now(), now()),
|
||||
('FEATURE_CODE', 'CONFIRM_ARCHIVE', 'Confirmer l''archivage', NULL, TRUE, 1270, now(), now()),
|
||||
('FEATURE_CODE', 'CONFIRMER_ANNULATION', 'Confirmer l''annulation', NULL, TRUE, 1280, now(), now()),
|
||||
('FEATURE_CODE', 'CONTINUER', 'Continuer', NULL, TRUE, 1290, now(), now()),
|
||||
('FEATURE_CODE', 'DELETE_DRAFT', 'Supprimer le brouillon', NULL, TRUE, 1300, now(), now()),
|
||||
('FEATURE_CODE', 'DEMANDER_ANNULATION', 'Demander l''annulation', NULL, TRUE, 1310, now(), now()),
|
||||
('FEATURE_CODE', 'DOWNLOAD', 'Télécharger', NULL, TRUE, 1320, now(), now()),
|
||||
('FEATURE_CODE', 'DOWNLOAD_ALL_DOCUMENTS', 'Télécharger tous les documents', NULL, TRUE, 1330, now(), now()),
|
||||
('FEATURE_CODE', 'DOWNLOAD_ALL_PHOTOS', 'Télécharger toutes les photos', NULL, TRUE, 1340, now(), now()),
|
||||
('FEATURE_CODE', 'EDIT', 'Modifier', NULL, TRUE, 1350, now(), now()),
|
||||
('FEATURE_CODE', 'EDIT_DRAFT', 'Modifier le brouillon', NULL, TRUE, 1360, now(), now()),
|
||||
('FEATURE_CODE', 'EMAIL', 'Envoyer un courriel', NULL, TRUE, 1370, now(), now()),
|
||||
('FEATURE_CODE', 'EMAIL_COLLABORATEUR', 'Écrire au collaborateur', NULL, TRUE, 1380, now(), now()),
|
||||
('FEATURE_CODE', 'EMAIL_CONTACT', 'Écrire au contact', NULL, TRUE, 1390, now(), now()),
|
||||
('FEATURE_CODE', 'EMAIL_PRIMARY', 'Écrire (contact principal)', NULL, TRUE, 1400, now(), now()),
|
||||
('FEATURE_CODE', 'EMAIL_SUIVI_PAR', 'Écrire (suivi par)', NULL, TRUE, 1410, now(), now()),
|
||||
('FEATURE_CODE', 'ENREGISTRER', 'Enregistrer', NULL, TRUE, 1420, now(), now()),
|
||||
('FEATURE_CODE', 'ENROLL', 'Enrôler', NULL, TRUE, 1430, now(), now()),
|
||||
('FEATURE_CODE', 'ENVOYER', 'Envoyer', NULL, TRUE, 1440, now(), now()),
|
||||
('FEATURE_CODE', 'ENVOYER_EMAIL', 'Envoyer par courriel', NULL, TRUE, 1450, now(), now()),
|
||||
('FEATURE_CODE', 'GENERER', 'Générer', NULL, TRUE, 1460, now(), now()),
|
||||
('FEATURE_CODE', 'GO_TO_TODAY', 'Aller à aujourd''hui', NULL, TRUE, 1470, now(), now()),
|
||||
('FEATURE_CODE', 'HIDE_EDITOR', 'Masquer l''éditeur', NULL, TRUE, 1480, now(), now()),
|
||||
('FEATURE_CODE', 'INITIALIZE', 'Initialiser', NULL, TRUE, 1490, now(), now()),
|
||||
('FEATURE_CODE', 'LOAD', 'Charger', NULL, TRUE, 1500, now(), now()),
|
||||
('FEATURE_CODE', 'LOAD_AVEC_DESTINATAIRE', 'Charger avec destinataire', NULL, TRUE, 1510, now(), now()),
|
||||
('FEATURE_CODE', 'LOAD_AVEC_RAPPORT', 'Charger avec rapport', NULL, TRUE, 1520, now(), now()),
|
||||
('FEATURE_CODE', 'LOAD_EDITION', 'Charger en édition', NULL, TRUE, 1530, now(), now()),
|
||||
('FEATURE_CODE', 'LOAD_SCOPES', 'Charger les périmètres', NULL, TRUE, 1540, now(), now()),
|
||||
('FEATURE_CODE', 'LOGOUT', 'Se déconnecter', NULL, TRUE, 1550, now(), now()),
|
||||
('FEATURE_CODE', 'MODIFIER', 'Modifier', NULL, TRUE, 1560, now(), now()),
|
||||
('FEATURE_CODE', 'NAVIGATE', 'Naviguer', NULL, TRUE, 1570, now(), now()),
|
||||
('FEATURE_CODE', 'NEW_INTERVENTION', 'Nouvelle intervention', NULL, TRUE, 1580, now(), now()),
|
||||
('FEATURE_CODE', 'NEXT', 'Suivant', NULL, TRUE, 1590, now(), now()),
|
||||
('FEATURE_CODE', 'NEXT_DAY', 'Jour suivant', NULL, TRUE, 1600, now(), now()),
|
||||
('FEATURE_CODE', 'NEXT_WEEK', 'Semaine suivante', NULL, TRUE, 1610, now(), now()),
|
||||
('FEATURE_CODE', 'NOUVEAU', 'Nouveau', NULL, TRUE, 1620, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN', 'Ouvrir', NULL, TRUE, 1630, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_CLIENT', 'Ouvrir le client', NULL, TRUE, 1640, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_COLLABORATEUR', 'Ouvrir le collaborateur', NULL, TRUE, 1650, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_COMPTE_RENDU', 'Ouvrir le compte rendu', NULL, TRUE, 1660, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_CONTACT', 'Ouvrir le contact', NULL, TRUE, 1670, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_CONTACTS', 'Ouvrir les contacts', NULL, TRUE, 1680, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_DOCUMENTS', 'Ouvrir les documents', NULL, TRUE, 1690, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_DOSSIER', 'Ouvrir le dossier', NULL, TRUE, 1700, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_EMAILS', 'Ouvrir les courriels', NULL, TRUE, 1710, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_EQUIPE', 'Ouvrir l''équipe', NULL, TRUE, 1720, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_FIRST_RENDEZ_VOUS', 'Ouvrir le premier rendez-vous', NULL, TRUE, 1730, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_IMAGES', 'Ouvrir les images', NULL, TRUE, 1740, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_IMAGES_ET_DOCUMENTS', 'Ouvrir images et documents', NULL, TRUE, 1750, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_INTERVENTION', 'Ouvrir l''intervention', NULL, TRUE, 1760, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_ITINERAIRE', 'Ouvrir l''itinéraire', NULL, TRUE, 1770, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_NOTES', 'Ouvrir les notes', NULL, TRUE, 1780, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_NOTES_ADMINISTRATIVES', 'Ouvrir les notes administratives', NULL, TRUE, 1790, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_RAPPORT', 'Ouvrir le rapport', NULL, TRUE, 1800, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_RENDEZ_VOUS', 'Ouvrir le rendez-vous', NULL, TRUE, 1810, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_SITE', 'Ouvrir le site', NULL, TRUE, 1820, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_SYNC_QUEUE', 'Ouvrir la file de synchronisation', NULL, TRUE, 1830, now(), now()),
|
||||
('FEATURE_CODE', 'OPEN_TEAM_AGENDA', 'Ouvrir l''agenda d''équipe', NULL, TRUE, 1840, now(), now()),
|
||||
('FEATURE_CODE', 'OUVRIR_BROUILLON', 'Ouvrir le brouillon', NULL, TRUE, 1850, now(), now()),
|
||||
('FEATURE_CODE', 'OUVRIR_RUBRIQUE', 'Ouvrir une rubrique', NULL, TRUE, 1860, now(), now()),
|
||||
('FEATURE_CODE', 'PREVIOUS', 'Précédent', NULL, TRUE, 1870, now(), now()),
|
||||
('FEATURE_CODE', 'PREVIOUS_DAY', 'Jour précédent', NULL, TRUE, 1880, now(), now()),
|
||||
('FEATURE_CODE', 'PREVIOUS_WEEK', 'Semaine précédente', NULL, TRUE, 1890, now(), now()),
|
||||
('FEATURE_CODE', 'RELEASE_LICENCE', 'Libérer la licence', NULL, TRUE, 1900, now(), now()),
|
||||
('FEATURE_CODE', 'REMOVE_COLLABORATEUR', 'Retirer un collaborateur', NULL, TRUE, 1910, now(), now()),
|
||||
('FEATURE_CODE', 'RESET_APP', 'Réinitialiser l''application', NULL, TRUE, 1920, now(), now()),
|
||||
('FEATURE_CODE', 'RESET_FILTERS', 'Réinitialiser les filtres', NULL, TRUE, 1930, now(), now()),
|
||||
('FEATURE_CODE', 'RESET_SEARCH', 'Réinitialiser la recherche', NULL, TRUE, 1940, now(), now()),
|
||||
('FEATURE_CODE', 'RETOUR', 'Retour', NULL, TRUE, 1950, now(), now()),
|
||||
('FEATURE_CODE', 'RETOUR_RUBRIQUES', 'Retour aux rubriques', NULL, TRUE, 1960, now(), now()),
|
||||
('FEATURE_CODE', 'RETRY', 'Réessayer', NULL, TRUE, 1970, now(), now()),
|
||||
('FEATURE_CODE', 'RUBRIQUE_PRECEDENTE', 'Rubrique précédente', NULL, TRUE, 1980, now(), now()),
|
||||
('FEATURE_CODE', 'RUBRIQUE_SUIVANTE', 'Rubrique suivante', NULL, TRUE, 1990, now(), now()),
|
||||
('FEATURE_CODE', 'SAVE', 'Enregistrer', NULL, TRUE, 2000, now(), now()),
|
||||
('FEATURE_CODE', 'SAVE_EDITOR', 'Enregistrer l''éditeur', NULL, TRUE, 2010, now(), now()),
|
||||
('FEATURE_CODE', 'SAVE_PAUSE_DEJEUNER', 'Enregistrer la pause déjeuner', NULL, TRUE, 2020, now(), now()),
|
||||
('FEATURE_CODE', 'SCAN', 'Scanner', NULL, TRUE, 2030, now(), now()),
|
||||
('FEATURE_CODE', 'SEARCH', 'Rechercher', NULL, TRUE, 2040, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_CALENDAR_DAY', 'Sélectionner un jour', NULL, TRUE, 2050, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_CLIENTS', 'Onglet Clients', NULL, TRUE, 2060, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_CONTACTS', 'Onglet Contacts', NULL, TRUE, 2070, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_DAY', 'Sélectionner le jour', NULL, TRUE, 2080, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_DOSSIERS', 'Onglet Dossiers', NULL, TRUE, 2090, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_INTERVENTIONS', 'Onglet Interventions', NULL, TRUE, 2100, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_RENDEZ_VOUS', 'Onglet Rendez-vous', NULL, TRUE, 2110, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_SITES', 'Onglet Sites', NULL, TRUE, 2120, now(), now()),
|
||||
('FEATURE_CODE', 'SELECT_TAB', 'Changer d''onglet', NULL, TRUE, 2130, now(), now()),
|
||||
('FEATURE_CODE', 'SEND_SUPPORT_EMAIL', 'Écrire au support', NULL, TRUE, 2140, now(), now()),
|
||||
('FEATURE_CODE', 'SET_PRIMARY_COLOR', 'Changer la couleur principale', NULL, TRUE, 2150, now(), now()),
|
||||
('FEATURE_CODE', 'SET_THEME_MODE', 'Changer le thème', NULL, TRUE, 2160, now(), now()),
|
||||
('FEATURE_CODE', 'SHOW_CALENDAR', 'Afficher le calendrier', NULL, TRUE, 2170, now(), now()),
|
||||
('FEATURE_CODE', 'SHOW_DAY', 'Afficher le jour', NULL, TRUE, 2180, now(), now()),
|
||||
('FEATURE_CODE', 'SHOW_PINNED', 'Afficher les épinglés', NULL, TRUE, 2190, now(), now()),
|
||||
('FEATURE_CODE', 'SHOW_RECENT', 'Afficher les récents', NULL, TRUE, 2200, now(), now()),
|
||||
('FEATURE_CODE', 'SHOW_WEEK', 'Afficher la semaine', NULL, TRUE, 2210, now(), now()),
|
||||
('FEATURE_CODE', 'SYNC_NOW', 'Synchroniser maintenant', NULL, TRUE, 2220, now(), now()),
|
||||
('FEATURE_CODE', 'TOGGLE_PINNED', 'Épingler / désépingler', NULL, TRUE, 2230, now(), now()),
|
||||
('FEATURE_CODE', 'VALIDER', 'Valider', NULL, TRUE, 2240, now(), now())
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- =====================================================================
|
||||
-- FIN. Vérification :
|
||||
-- SELECT reference_type, COUNT(*) FROM diagnostics_reference GROUP BY reference_type;
|
||||
-- =====================================================================
|
||||
Reference in New Issue
Block a user