Stability checkpoint — B-7-6/B-7-7 + customers D1 step 1 (MR !115)

Three extractions batched in one MR per 'Réduire les vagues CI' rule :

1. Diagnostic B-7-6 : DiagnosticScenarioComponent generic widget used
   by 5 of 10 uniform-output scenarios (API Versioning, Idempotency,
   Rate Limiting, Kafka Enrich, VT Aggregate). Content projection
   slots for action + desc. 5 custom-output scenarios (Diff, Stress,
   Sched, Waterfall, Sankey) stay inline. html : 433 → 381 LOC.

2. Database B-7-7 : DatabaseHealthTabComponent extracted — owns its
   health-checks state + vacuum state + injections. Parent keeps
   healthChecks[] data array + passes as input. Cross-widget
   'See raw data' dependency via single-hop event drilling through
   parent (no DatabaseStateService needed for one event). html :
   237 → 141 LOC.

3. Customers B-7-2c step 1 : CustomerImportExportService extracted.
   Self-contained bounded service (no overlap with list/detail/
   selection state) — owns importLoading/importProgress/importTotal/
   importResults signals + handleFileSelected/exportJson/exportCsv
   methods. Component delegates via 3 thin wrappers. customers.ts :
   838 → 715 LOC. Remaining customers split (list + detail +
   selection state) deferred — needs full CustomerStateService
   rewrite + signal-bridge widgets, 2-3h focused session.