gigafibre-fsm/apps/ops/src
louispaulb 29589597b1 sync-legacy: raffiner l'annulation des fantômes (pas de cascade aveugle)
La 1re version cascadait compte résilié ⇒ TOUS services Annulé, ce qui contredit
la politique 2026-06-13 (statut SERVICE = vérité ; employés gardent internet gratuit
sur comptes terminés) et annulait ~842 services légitimes (dont 185k$/mo facturés
encore par F ou gratuits).

Raffinement (sync_services_incremental.py, marqueur RAFFINÉ 2026-07-06) :
- annul_ghost(compte, prix) : n'annule QUE le fantôme AVÉRÉ = compte résilié +
  service PAYANT (prix>0) + F silencieux depuis >24 mois (MAX(invoice.date_orig)).
  Préserve les gratuits (employés), tout ce que F facture encore, et le jamais-facturé
  (ambigu → revue manuelle via /rapports/resilies-actifs).
- Phases B (création) + D (rafraîchissement) passent par annul_ghost.
- Résultat mesuré : 3013 fantômes avérés annulés, 842 réactivés/préservés,
  fantômes avérés restants = 0.

Scoreboard : métrique renommée « actifs sur compte résilié — à revoir » (hub note +
libellé UI) puisque le résidu n'est plus un bug mais une liste de revue.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 20:20:24 -04:00
..
api feat(events): sélecteur d'audience (liste clients filtrée OU CSV) + aperçu + choix de modèle 2026-07-06 13:39:22 -04:00
boot feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
components feat(ops): job detail — map collapsed, duration adjust; popup width caps 2026-07-05 18:06:02 -04:00
composables refactor(ui): T1 audit — dédup formatters → useFormatters (0 changement d'affichage) 2026-07-04 18:31:18 -04:00
config feat(events): inscription (RSVP) événement + page admin Ops — Fête Targo 20 ans 2026-07-06 09:41:24 -04:00
css fix(ops/mobile): Network GPON tient sur mobile (onglets défilants + arbre enroulé + boutons tactiles) 2026-07-04 20:56:11 -04:00
data feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
features/workforce feat(fsm): platform build — comms UI, F→ERPNext sync/billing, roster, campaigns, network, reports 2026-06-15 06:12:12 -04:00
layouts feat(events): inscription (RSVP) événement + page admin Ops — Fête Targo 20 ans 2026-07-06 09:41:24 -04:00
modules refactor(ui): T1 (suite) — unifier les formatters variants vers les canoniques (formats cohérents) 2026-07-04 18:42:17 -04:00
pages sync-legacy: raffiner l'annulation des fantômes (pas de cascade aveugle) 2026-07-06 20:20:24 -04:00
router feat(events): inscription (RSVP) événement + page admin Ops — Fête Targo 20 ans 2026-07-06 09:41:24 -04:00
stores fix(ops): fail-loud when OPS perms don't load + username fallback (supersede 96da97b session overlay) 2026-07-03 16:49:26 -04:00
utils fix(ops): sécurité + robustesse dispatch/comms 2026-07-02 08:56:35 -04:00
App.vue fix(ops): overlay accès — message exact « n'a pas pu charger » + détail erreur + piste extension 2026-07-03 17:31:41 -04:00