{"generatedAt":"2026-08-30T15:23:03.645Z","lastTickAt":"2026-08-30T15:22:35.170Z","overall":"operational","historyDays":30,"checks":[{"id":"api-health","title":"API","severity":"critical","firing":false,"since":null,"lastRun":{"observedAt":"2026-08-30T15:22:34.377Z","ok":true,"latencyMs":293,"detail":"API et base de données joignables"},"uptime":{"day":100,"week":100,"month":100}},{"id":"app-bundle","title":"Application (app.tries.care)","severity":"critical","firing":false,"since":null,"lastRun":{"observedAt":"2026-08-30T15:18:34.272Z","ok":true,"latencyMs":190,"detail":"page et bundle servis, React défini 1 fois sur 280 fichiers"},"uptime":{"day":100,"week":100,"month":100}},{"id":"shop-bundle","title":"Boutique (shop.tries.care)","severity":"critical","firing":false,"since":null,"lastRun":{"observedAt":"2026-08-30T15:22:34.392Z","ok":true,"latencyMs":308,"detail":"page et bundle servis, React défini 1 fois sur 2 fichiers"},"uptime":{"day":100,"week":100,"month":100}},{"id":"marketing-bundle","title":"Site (tries.care)","severity":"warning","firing":false,"since":null,"lastRun":{"observedAt":"2026-08-30T15:22:34.304Z","ok":true,"latencyMs":220,"detail":"page et bundle servis, React défini 1 fois sur 11 fichiers"},"uptime":{"day":100,"week":100,"month":100}},{"id":"ui-bundle","title":"Bibliothèque de composants (ui.tries.care)","severity":"warning","firing":false,"since":null,"lastRun":{"observedAt":"2026-08-30T15:12:35.135Z","ok":true,"latencyMs":735,"detail":"page et bundle servis, React défini 0 fois sur 3 fichiers"},"uptime":{"day":100,"week":100,"month":100}},{"id":"version-skew","title":"Cohérence application / API","severity":"critical","firing":false,"since":null,"lastRun":{"observedAt":"2026-08-30T15:22:35.170Z","ok":true,"latencyMs":572,"detail":"application et API sur la même version (b11faa6)"},"uptime":{"day":100,"week":100,"month":100}}],"incidents":[{"id":6,"title":"Application web indisponible pendant 14 minutes","startedAt":"2025-08-30T07:14:05.000Z","resolvedAt":"2025-08-30T07:28:39.000Z","impact":"app.tries.care affichait une page blanche sur toutes les routes pendant quatorze minutes. L'API n'a jamais été touchée : aucune donnée n'a été perdue et aucun enregistrement n'a échoué.","surfaces":["app"],"cause":"Deux modifications validées séparément ont été publiées à quelques secondes d'intervalle alors qu'elles avaient été testées sur une version antérieure du projet. Prises ensemble, elles étaient incompatibles, et cette incompatibilité n'apparaissait qu'une fois en ligne.","remediation":"Le correctif a été publié en quatorze minutes. Nous ajoutons deux garde-fous : une modification doit désormais être re-testée sur la version courante du projet avant d'être publiée, et la publication des sites est soumise aux mêmes vérifications que celle de l'API — qui, elle, avait refusé de démarrer plutôt que de servir une version cassée.","updates":[{"postedAt":"2025-08-30T07:28:39.000Z","status":"resolved","message":"L'application est de nouveau accessible."}]},{"id":5,"title":"Boutique indisponible pendant environ trois heures","startedAt":"2025-08-29T16:30:00.000Z","resolvedAt":"2025-08-29T19:23:00.000Z","impact":"shop.tries.care affichait « Something went wrong! » à la place de la boutique, pour tous les visiteurs et sur toutes les pages, pendant environ trois heures. Aucune commande n'a été perdue ; les commandes déjà passées n'ont pas été affectées.","surfaces":["shop"],"cause":"Le fichier de la boutique publié ce jour-là était corrompu : il embarquait deux fois la même bibliothèque interne, ce qui empêchait la page de démarrer. La corruption venait du cache de construction de notre hébergeur, abîmé plus tôt dans la journée par l'incident précédent. Le code, lui, était correct.","remediation":"La boutique a été republiée avec un cache de construction vidé. Une vérification automatique télécharge désormais les fichiers réellement servis par chacun de nos sites et refuse de les déclarer sains si cette duplication réapparaît — un simple test « la page répond » n'aurait rien vu, puisque tout répondait normalement.","updates":[{"postedAt":"2025-08-29T19:23:00.000Z","status":"resolved","message":"La boutique est de nouveau accessible."}]},{"id":4,"title":"Application web indisponible pendant environ trois heures","startedAt":"2025-08-29T12:22:00.000Z","resolvedAt":"2025-08-29T15:15:00.000Z","impact":"app.tries.care affichait un message d'erreur à la place de chaque page, pour tous les visiteurs, connectés ou non, pendant près de trois heures. Le site public et la boutique restaient consultables. Aucune donnée n'a été perdue.","surfaces":["app"],"cause":"Notre hébergeur a épuisé le quota mensuel qui lui permet de reconstruire les sites. Les nouvelles versions de l'application n'étaient donc plus publiées, pendant que l'API, publiée par un autre chemin, continuait d'avancer. Les deux moitiés ont fini par ne plus se comprendre.","remediation":"Le quota a été relevé. Surtout, une vérification compare désormais en continu la version de l'application et celle de l'API : un écart qui dure plus de vingt minutes déclenche une alerte, là où celui-ci est passé inaperçu pendant près de trois heures.","updates":[{"postedAt":"2025-08-29T15:15:00.000Z","status":"resolved","message":"L'application est de nouveau accessible à tous."}]},{"id":2,"title":"Enregistrement de carte bancaire bloqué pour un club","startedAt":"2025-08-28T12:40:00.000Z","resolvedAt":"2025-08-28T13:02:00.000Z","impact":"Un club n'a pas pu enregistrer sa carte bancaire au moment de confirmer une mission. Le reste de la plateforme fonctionnait normalement.","surfaces":["app"],"cause":"Le navigateur du club utilisait encore une version de l'application ouverte plusieurs heures plus tôt, devenue incompatible avec la version déployée depuis. Rien n'indiquait à l'écran qu'il fallait recharger la page.","remediation":"L'application détecte désormais qu'une nouvelle version est disponible et se recharge d'elle-même à la navigation suivante, sans rien perdre de ce qui est en cours de saisie.","updates":[{"postedAt":"2025-08-28T13:02:00.000Z","status":"resolved","message":"Le club concerné a pu enregistrer sa carte après rechargement de la page."}]},{"id":1,"title":"Fiches de suivi inaccessibles côté équipe","startedAt":"2025-08-27T12:00:00.000Z","resolvedAt":"2025-08-28T13:40:00.000Z","impact":"Les équipes tries.care ne pouvaient plus ouvrir la liste des fiches de suivi. Les clubs et les professionnels n'étaient pas touchés : aucune fonctionnalité publique n'était concernée et aucune donnée n'a été perdue.","surfaces":[],"cause":"Une évolution du format des fiches rendait illisibles quelques fiches créées avant ce changement. La page qui les liste s'arrêtait alors sur la première fiche concernée au lieu d'afficher les autres.","remediation":"Les fiches concernées ont été remises au bon format. Nous avons ajouté une règle vérifiée automatiquement à chaque modification : un champ rendu obligatoire doit être accompagné, dans le même changement, de la mise à jour des données déjà enregistrées.","updates":[{"postedAt":"2025-08-28T13:40:00.000Z","status":"resolved","message":"Les fiches de suivi sont de nouveau accessibles."}]},{"id":3,"title":"Enregistrement de carte bancaire bloqué (deuxième club)","startedAt":"2025-08-26T16:00:00.000Z","resolvedAt":"2025-08-28T16:30:00.000Z","impact":"Un second club a rencontré le même blocage à l'enregistrement de sa carte bancaire. Nous ne l'avons appris que deux jours plus tard, lorsqu'il nous a écrit.","surfaces":["app"],"cause":"Même cause que l'incident précédent : une version de l'application restée ouverte trop longtemps dans le navigateur.","remediation":"Au-delà du rechargement automatique, ce délai de deux jours entre le blocage et notre prise de connaissance est ce qui a décidé la création de cette page : la supervision automatique décrite en bas de page vérifie désormais nos services toutes les minutes, depuis une infrastructure indépendante de la nôtre.","updates":[{"postedAt":"2025-08-28T16:30:00.000Z","status":"resolved","message":"Le blocage est levé et le rechargement automatique des nouvelles versions est en place."}]}],"outages":[]}