From 8f36fa8fd33673d9d958b94db6003e6287a4d6cd Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Mon, 16 Mar 2026 22:14:54 -0400 Subject: [PATCH] ajout du type distance parcourue --- checks/check_life_noc_probe.py | 63 +- domains.yaml | 76 + domains.yaml.orig | 3234 ++++++++++++++++++++++++++++++++ icinga/services/voiture.conf | 68 +- lib/life_noc_inputs.py | 73 +- scripts/generate_services.py | 26 +- scripts/life_noc_input_api.py | 65 +- 7 files changed, 3541 insertions(+), 64 deletions(-) create mode 100644 domains.yaml.orig diff --git a/checks/check_life_noc_probe.py b/checks/check_life_noc_probe.py index 3e69c31..d4eccf3 100755 --- a/checks/check_life_noc_probe.py +++ b/checks/check_life_noc_probe.py @@ -15,7 +15,7 @@ def parse_date(value: str) -> datetime: return datetime.strptime(value, "%Y-%m-%d").replace(tzinfo=timezone.utc) -def load_input_value(inputs_file: str, item_key: str) -> str: +def load_input_item(inputs_file: str, item_key: str) -> dict: path = Path(inputs_file) if not path.exists(): raise ValueError(f"inputs file introuvable: {inputs_file}") @@ -30,10 +30,13 @@ def load_input_value(inputs_file: str, item_key: str) -> str: item = data[item_key] if not isinstance(item, dict): raise ValueError(f"entrée invalide pour item_key: {item_key}") + return item + +def load_input_value(inputs_file: str, item_key: str) -> str: + item = load_input_item(inputs_file, item_key) if "value" not in item: raise ValueError(f"champ 'value' absent pour item_key: {item_key}") - return str(item["value"]).strip() @@ -63,21 +66,50 @@ def main() -> int: args = ap.parse_args() try: - if args.source_type != "manual_date": - exit_with(2, f"CRITICAL - source_type non supporté: {args.source_type}") + if args.probe_type in {"elapsed_time", "days_until_due"}: + if args.source_type != "manual_date": + exit_with(2, f"CRITICAL - source_type non supporté: {args.source_type}") + if args.unit != "days": + exit_with(2, f"CRITICAL - unité non supportée: {args.unit}") - if args.unit != "days": - exit_with(2, f"CRITICAL - unité non supportée: {args.unit}") + if args.inputs_file and args.item_key: + source_value = load_input_value(args.inputs_file, args.item_key) + elif args.source_value: + source_value = args.source_value + else: + raise ValueError("aucune source fournie: inputs-file/item-key ou source-value requis") + + dt = parse_date(source_value) + now = datetime.now(timezone.utc) + + elif args.probe_type == "elapsed_distance": + if args.source_type != "manual_counter": + exit_with(2, f"CRITICAL - source_type non supporté: {args.source_type}") + if args.unit != "km": + exit_with(2, f"CRITICAL - unité non supportée: {args.unit}") + + if args.inputs_file and args.item_key: + item = load_input_item(args.inputs_file, args.item_key) + current_value = float(str(item.get("value", "")).strip()) + reference_value = float(str(item.get("reference_value", "")).strip()) + else: + raise ValueError("manual_counter exige inputs-file et item-key") + + metric = current_value - reference_value + + if args.unknown_lt is not None and metric < args.unknown_lt: + exit_with(3, f"UNKNOWN - {args.label}: écart compteur invalide ({metric:.0f} km)") + if args.critical_gte is not None and metric >= args.critical_gte: + exit_with(2, f"CRITICAL - {args.label}: {metric:.0f} km") + if args.warning_gte is not None and metric >= args.warning_gte: + exit_with(1, f"WARNING - {args.label}: {metric:.0f} km") + if args.ok_gte is not None and metric >= args.ok_gte: + exit_with(0, f"OK - {args.label}: {metric:.0f} km") + + exit_with(2, f"CRITICAL - {args.label}: seuils incohérents") - if args.inputs_file and args.item_key: - source_value = load_input_value(args.inputs_file, args.item_key) - elif args.source_value: - source_value = args.source_value else: - raise ValueError("aucune source fournie: inputs-file/item-key ou source-value requis") - - dt = parse_date(source_value) - now = datetime.now(timezone.utc) + exit_with(2, f"CRITICAL - probe_type non supporté: {args.probe_type}") if args.probe_type == "elapsed_time": metric = (now - dt).total_seconds() / 86400.0 @@ -107,9 +139,6 @@ def main() -> int: exit_with(2, f"CRITICAL - {args.label}: seuils incohérents") - else: - exit_with(2, f"CRITICAL - probe_type non supporté: {args.probe_type}") - except Exception as exc: if args.on_error == "critical": exit_with(2, f"CRITICAL - erreur sonde: {exc}") diff --git a/domains.yaml b/domains.yaml index c4942b2..d822f92 100644 --- a/domains.yaml +++ b/domains.yaml @@ -1415,18 +1415,94 @@ domains: - name: verification-huile-moteur date: 2026-04-01 notes: Vérification de l'huile moteur + probe: + type: elapsed_distance + source: + type: manual_counter + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: verification-huile-moteur + metric: + unit: km + thresholds: + unknown_lt: 0 + ok_gte: 0 + warning_gte: 8000 + critical_gte: 10000 + policy: + on_error: unknown + ui: + form_mode: counter_pair + allow_complete: false + allow_manual_edit: true - name: inspection-freins date: 2026-05-01 notes: Inspection des freins + probe: + type: elapsed_distance + source: + type: manual_counter + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: inspection-freins + metric: + unit: km + thresholds: + unknown_lt: 0 + ok_gte: 0 + warning_gte: 15000 + critical_gte: 20000 + policy: + on_error: unknown + ui: + form_mode: counter_pair + allow_complete: false + allow_manual_edit: true - name: verification-pneus date: 2026-04-15 notes: Vérification usure, pression et permutation des pneus + probe: + type: elapsed_distance + source: + type: manual_counter + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: verification-pneus + metric: + unit: km + thresholds: + unknown_lt: 0 + ok_gte: 0 + warning_gte: 10000 + critical_gte: 12000 + policy: + on_error: unknown + ui: + form_mode: counter_pair + allow_complete: false + allow_manual_edit: true - name: ajustement-valves date: 2026-08-01 notes: Vérification et ajustement des valves Honda Accord - name: verification-timing-belt date: 2027-01-01 notes: Vérification de la courroie de distribution et pompe à eau + probe: + type: elapsed_distance + source: + type: manual_counter + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: verification-timing-belt + metric: + unit: km + thresholds: + unknown_lt: 0 + ok_gte: 0 + warning_gte: 150000 + critical_gte: 168000 + policy: + on_error: unknown + ui: + form_mode: counter_pair + allow_complete: false + allow_manual_edit: true - name: verification-batterie-voiture date: 2026-10-01 notes: Vérification de l'état de la batterie automobile diff --git a/domains.yaml.orig b/domains.yaml.orig new file mode 100644 index 0000000..c4942b2 --- /dev/null +++ b/domains.yaml.orig @@ -0,0 +1,3234 @@ +domains: + revue: + - name: revue-quotidienne-life-noc + date: '2026-03-13' + notes: Vérifier le tableau de bord Life-NOC + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/revue.yaml + item_key: revue-quotidienne-life-noc + metric: + unit: days + thresholds: + unknown_lt: 1 + ok_gte: 1 + warning_gte: 2 + critical_gte: 3 + policy: + on_error: critical + - name: revue-hebdomadaire-priorites + date: '2026-03-10' + notes: Revoir les priorités de la semaine + instructions_url: https://chezlepro.ca/life-noc/test-instructions + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/revue.yaml + item_key: revue-hebdomadaire-priorites + metric: + unit: days + thresholds: + unknown_lt: 5 + ok_gte: 5 + warning_gte: 7 + critical_gte: 10 + policy: + on_error: critical + - name: revue-mensuelle-systeme-vie + date: 2026-04-01 + notes: Revue mensuelle de l'ensemble du système Life-NOC + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/revue.yaml + item_key: revue-mensuelle-systeme-vie + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-trimestrielle-orientation + date: 2026-06-30 + notes: Revue trimestrielle des orientations de vie et de Chezlepro + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/revue.yaml + item_key: revue-trimestrielle-orientation + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + focus: + - name: entretien-processus-focus + date: 2026-03-09 + notes: Vérifier que les cartouches FOCUS sont à jour + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/focus.yaml + item_key: entretien-processus-focus + metric: + unit: days + thresholds: + unknown_lt: 5 + ok_gte: 5 + warning_gte: 7 + critical_gte: 10 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: nettoyage-inbox-mentale + date: 2026-03-09 + notes: Vider et clarifier les éléments capturés hors système + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/focus.yaml + item_key: nettoyage-inbox-mentale + metric: + unit: days + thresholds: + unknown_lt: 5 + ok_gte: 5 + warning_gte: 7 + critical_gte: 10 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-limitation-engagements + date: 2026-03-31 + notes: Vérifier que les engagements actifs demeurent réalistes + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/focus.yaml + item_key: revue-limitation-engagements + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + finances-personnelles: + - name: revision-comptes-bancaires + date: 2026-04-01 + notes: Révision mensuelle des comptes bancaires personnels + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: revision-comptes-bancaires + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-cartes-credit + date: 2026-04-01 + notes: Vérification des soldes et transactions des cartes de crédit + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: verification-cartes-credit + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: paiement-cartes-credit + date: 2026-04-15 + notes: Paiement des cartes de crédit personnelles + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: paiement-cartes-credit + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-budget-personnel + date: 2026-04-05 + notes: Révision mensuelle du budget personnel + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: revision-budget-personnel + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-prelevements-automatiques + date: 2026-04-03 + notes: Vérification des prélèvements automatiques personnels + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: verification-prelevements-automatiques + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-placements + date: 2026-06-30 + notes: Vérification périodique des placements et comptes enregistrés + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: verification-placements + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-cotisations-reer + date: 2026-02-28 + notes: Vérification des cotisations REER + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: verification-cotisations-reer + metric: + unit: days + thresholds: + unknown_lt: 5 + ok_gte: 5 + warning_gte: 7 + critical_gte: 10 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-celi + date: 2026-05-01 + notes: Vérification de l'espace CELI et de son utilisation + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: verification-celi + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: preparation-dossier-financier-annuel + date: 2026-01-31 + notes: Préparer le dossier financier annuel personnel + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/finances-personnelles.yaml + item_key: preparation-dossier-financier-annuel + metric: + unit: days + thresholds: + unknown_lt: 300 + ok_gte: 300 + warning_gte: 365 + critical_gte: 395 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + fiscalite-personnelle: + - name: preparation-documents-impots + date: 2026-03-15 + notes: Rassembler tous les documents fiscaux personnels + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/fiscalite-personnelle.yaml + item_key: preparation-documents-impots + metric: + unit: days + thresholds: + unknown_lt: 5 + ok_gte: 5 + warning_gte: 7 + critical_gte: 10 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: production-impots-federal + date: 2026-04-30 + notes: Produire la déclaration de revenus fédérale + - name: production-impots-quebec + date: 2026-04-30 + notes: Produire la déclaration de revenus Québec + - name: paiement-solde-impots + date: 2026-04-30 + notes: Payer tout solde d'impôt exigible + - name: verification-avis-cotisation + date: 2026-05-31 + notes: Vérifier les avis de cotisation ARC et Revenu Québec + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/fiscalite-personnelle.yaml + item_key: verification-avis-cotisation + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: archivage-documents-fiscaux + date: 2026-06-15 + notes: Archiver les documents fiscaux personnels + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/fiscalite-personnelle.yaml + item_key: archivage-documents-fiscaux + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-acomptes-provisionnels + date: 2026-03-15 + notes: Vérifier si des acomptes provisionnels sont requis + obligations-legales-personnelles: + - name: verification-testament + date: 2026-07-01 + notes: Vérifier la pertinence et l'actualité du testament + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-legales-personnelles.yaml + item_key: verification-testament + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-mandat-inaptitude + date: 2026-07-01 + notes: Vérifier le mandat de protection et documents connexes + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-legales-personnelles.yaml + item_key: verification-mandat-inaptitude + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-directives-medicales + date: 2026-07-15 + notes: Vérifier les directives médicales anticipées + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-legales-personnelles.yaml + item_key: verification-directives-medicales + metric: + unit: days + thresholds: + unknown_lt: 150 + ok_gte: 150 + warning_gte: 180 + critical_gte: 210 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-papiers-identite + date: 2026-06-01 + notes: Vérifier l'expiration des papiers d'identité + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-legales-personnelles.yaml + item_key: verification-papiers-identite + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: renouvellement-permis-conduire + date: '2026-09-20' + notes: Vérifier la proximité de l’échéance du permis + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-legales-personnelles.yaml + item_key: renouvellement-permis-conduire + metric: + unit: days + thresholds: + critical_lt: 7 + warning_lt: 30 + ok_lt: 90 + unknown_gte: 90 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + - name: verification-carte-assurance-maladie + date: 2026-10-01 + notes: Vérifier l'expiration de la carte d'assurance maladie + - name: verification-passeport + date: 2026-06-01 + notes: Vérifier l'expiration du passeport + maison: + - name: remplacement-filtre-fournaise + date: 2026-04-01 + notes: Remplacer le filtre de la fournaise + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: remplacement-filtre-fournaise + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-fournaise + date: 2026-09-15 + notes: Inspection générale de la fournaise avant saison froide + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-fournaise + metric: + unit: days + thresholds: + unknown_lt: 150 + ok_gte: 150 + warning_gte: 180 + critical_gte: 210 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-thermopompe + date: 2026-05-01 + notes: Inspection et entretien de la thermopompe + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-thermopompe + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: nettoyage-unites-exterieures + date: 2026-05-15 + notes: Nettoyer les unités extérieures et vérifier le dégagement + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: nettoyage-unites-exterieures + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-toiture + date: 2026-10-01 + notes: Inspection annuelle de la toiture + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-toiture + metric: + unit: days + thresholds: + unknown_lt: 150 + ok_gte: 150 + warning_gte: 180 + critical_gte: 210 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-gouttieres + date: 2026-11-01 + notes: Inspection et nettoyage des gouttières + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-gouttieres + metric: + unit: days + thresholds: + unknown_lt: 150 + ok_gte: 150 + warning_gte: 180 + critical_gte: 210 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-fondation + date: 2026-06-01 + notes: Inspection de la fondation et des fissures + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-fondation + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-drainage-terrain + date: 2026-05-15 + notes: Vérification du drainage autour de la maison + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: verification-drainage-terrain + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: test-detecteurs-fumee + date: 2026-04-01 + notes: Test des détecteurs de fumée + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: test-detecteurs-fumee + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: test-detecteurs-co + date: 2026-04-01 + notes: Test des détecteurs de monoxyde de carbone + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: test-detecteurs-co + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: remplacement-piles-detecteurs + date: 2026-10-01 + notes: Remplacement préventif des piles des détecteurs + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: remplacement-piles-detecteurs + metric: + unit: days + thresholds: + unknown_lt: 150 + ok_gte: 150 + warning_gte: 180 + critical_gte: 210 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-plomberie-visible + date: 2026-05-01 + notes: Vérification visuelle de la plomberie accessible + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: verification-plomberie-visible + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-sump-pump + date: 2026-04-15 + notes: Vérification de la pompe de puisard si applicable + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-sump-pump + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-calfetrage + date: 2026-10-15 + notes: Vérification du calfeutrage portes et fenêtres + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: verification-calfetrage + metric: + unit: days + thresholds: + unknown_lt: 150 + ok_gte: 150 + warning_gte: 180 + critical_gte: 210 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-portes-garage + date: 2026-05-15 + notes: Vérification mécanique et sécurité des portes de garage + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/maison.yaml + item_key: inspection-portes-garage + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-extincteurs + date: 2026-06-01 + notes: Vérification des extincteurs + garage-et-rangement: + - name: inspection-rangement-plafond + date: 2026-05-01 + notes: Vérification des supports suspendus au plafond du garage + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/garage-et-rangement.yaml + item_key: inspection-rangement-plafond + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-inventaire-garage + date: 2026-04-15 + notes: Revue de l'inventaire et de l'ordre du garage + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/garage-et-rangement.yaml + item_key: revue-inventaire-garage + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-rouille-outillage + date: 2026-05-15 + notes: Vérification de la corrosion sur les outils et équipements + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/garage-et-rangement.yaml + item_key: verification-rouille-outillage + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-securite-garage + date: 2026-06-01 + notes: Vérification des conditions de sécurité du garage + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/garage-et-rangement.yaml + item_key: inspection-securite-garage + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: rotation-stockage-bacs + date: 2026-05-15 + notes: Revue des contenus de bacs de rangement + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/garage-et-rangement.yaml + item_key: rotation-stockage-bacs + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + energie: + - name: inspection-batteries-lifepo4 + date: 2026-04-01 + notes: Inspection physique et logique des batteries LiFePO4 + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: inspection-batteries-lifepo4 + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-tension-batteries + date: 2026-03-15 + notes: Vérification des tensions et cohérence des batteries + - name: verification-smartshunt + date: 2026-03-15 + notes: Vérification SmartShunt et cohérence du monitoring + - name: verification-cerbo-gx + date: 2026-03-15 + notes: Vérification Cerbo GX et remontée des données + - name: verification-can-rs485 + date: 2026-04-15 + notes: Vérification des communications CAN ou RS485 + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: verification-can-rs485 + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-cablage-energie + date: 2026-05-01 + notes: Inspection du câblage et des connexions énergétiques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: inspection-cablage-energie + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-busbars + date: 2026-05-01 + notes: Vérification du serrage, corrosion et échauffement des busbars + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: verification-busbars + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-parametres-charge + date: 2026-04-01 + notes: Vérification des paramètres de charge et float + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: verification-parametres-charge + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: test-charge-batteries + date: 2026-04-15 + notes: Test de comportement en charge des batteries + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: test-charge-batteries + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: test-comportement-onduleur + date: 2026-05-01 + notes: Vérifier le comportement du Multiplus sous charge légère + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: test-comportement-onduleur + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-journal-evenements-victron + date: 2026-04-15 + notes: Vérification des événements et anomalies Victron + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/energie.yaml + item_key: verification-journal-evenements-victron + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + resilience: + - name: test-generatrice-propane + date: 2026-04-01 + notes: Test mensuel de la génératrice au propane + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/resilience.yaml + item_key: test-generatrice-propane + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-carburant-generatrice + date: 2026-04-01 + notes: Vérification de l'approvisionnement propane lié à la génératrice + - name: verification-procedure-bascule + date: 2026-04-15 + notes: Réviser la procédure de bascule en mode secours + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/resilience.yaml + item_key: verification-procedure-bascule + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-stock-lampes-piles + date: 2026-05-01 + notes: Vérification des lampes, piles et éclairage d'urgence + - name: verification-trousses-urgence + date: 2026-05-15 + notes: Vérification des trousses d'urgence + - name: revision-plan-urgence + date: 2026-06-01 + notes: Réviser le plan d'urgence domestique + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/resilience.yaml + item_key: revision-plan-urgence + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: test-autonomie-base + date: 2026-06-15 + notes: Vérifier l'autonomie énergétique minimale attendue + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/resilience.yaml + item_key: test-autonomie-base + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-moyens-cuisson-secours + date: 2026-05-15 + notes: Vérification des moyens de cuisson de secours + stock-alimentaire: + - name: rotation-nourriture-seche + date: 2026-04-01 + notes: Rotation des stocks de nourriture sèche + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/stock-alimentaire.yaml + item_key: rotation-nourriture-seche + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-reserve-eau + date: 2026-04-15 + notes: Vérification de la réserve d'eau potable + - name: verification-mylar-absorbeurs + date: 2026-05-01 + notes: Vérifier l'intégrité des emballages Mylar et absorbeurs + - name: revue-inventaire-conserves + date: 2026-04-15 + notes: Revue des conserves et dates de rotation + - name: revue-inventaire-farine-riz-pates + date: 2026-04-01 + notes: Vérification des gros stocks alimentaires de base + - name: verification-bacs-legumes-racines + date: 2026-10-01 + notes: Vérification des bacs de stockage de légumes racines + - name: revue-supplements-vitamines + date: 2026-05-01 + notes: Vérification du stock de suppléments et dates utiles + sante: + - name: verification-trousse-premiers-soins + date: 2026-04-01 + notes: Vérification de la trousse de premiers soins + - name: verification-expiration-medicaments + title: Vérification de l’expiration des médicaments + summary: Suivre la prochaine échéance d’expiration des médicaments importants. + notes: Mettre la plus proche date d’expiration pertinente. + instructions: '1. Vérifier les dates d’expiration des médicaments importants. + + 2. Retenir la date la plus proche. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/sante.yaml + item_key: verification-expiration-medicaments + metric: + unit: days + thresholds: + critical_lt: 30 + warning_lt: 90 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-09-30' + - name: revision-rendez-vous-medicaux + title: Révision des rendez-vous médicaux + summary: Suivre la prochaine date de rendez-vous médical. + notes: Entrer la prochaine date significative déjà connue. + instructions: '1. Identifier le prochain rendez-vous médical pertinent. + + 2. Vérifier la date retenue. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/sante.yaml + item_key: revision-rendez-vous-medicaux + metric: + unit: days + thresholds: + critical_lt: 2 + warning_lt: 14 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-04-10' + - name: verification-lunettes-prescriptions + date: 2026-06-01 + notes: Vérifier les prescriptions et besoins de renouvellement + - name: verification-dossier-sante + date: 2026-06-15 + notes: Vérifier l'ordre et l'accessibilité des documents de santé + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/sante.yaml + item_key: verification-dossier-sante + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + voiture: + - name: verification-huile-moteur + date: 2026-04-01 + notes: Vérification de l'huile moteur + - name: inspection-freins + date: 2026-05-01 + notes: Inspection des freins + - name: verification-pneus + date: 2026-04-15 + notes: Vérification usure, pression et permutation des pneus + - name: ajustement-valves + date: 2026-08-01 + notes: Vérification et ajustement des valves Honda Accord + - name: verification-timing-belt + date: 2027-01-01 + notes: Vérification de la courroie de distribution et pompe à eau + - name: verification-batterie-voiture + date: 2026-10-01 + notes: Vérification de l'état de la batterie automobile + - name: verification-balais-essuie-glace + date: 2026-05-01 + notes: Vérification des essuie-glaces + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: verification-balais-essuie-glace + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-liquides + date: 2026-04-15 + notes: Vérification des liquides de la voiture + - name: verification-eclairage + date: 2026-05-01 + notes: Vérification de l'éclairage et des phares + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: verification-eclairage + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-immatriculation-assurance + title: Vérification immatriculation et assurance + summary: Suivre la prochaine échéance entre immatriculation et assurance. + notes: Retenir la date la plus proche à renouveler. + instructions: '1. Vérifier les dates d’échéance de l’immatriculation et de l’assurance. + + 2. Retenir la plus rapprochée. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/voiture.yaml + item_key: verification-immatriculation-assurance + metric: + unit: days + thresholds: + critical_lt: 30 + warning_lt: 90 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-11-30' + jardin: + - name: inspection-vignes + date: 2026-04-15 + notes: Inspection et entretien des vignes + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: inspection-vignes + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: entretien-bleuetiers + date: 2026-05-01 + notes: Entretien des bleuetiers + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: entretien-bleuetiers + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: entretien-framboisiers + date: 2026-06-01 + notes: Entretien des framboisiers + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: entretien-framboisiers + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-kiwis-nordiques + date: 2026-05-15 + notes: Vérification des kiwis nordiques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: inspection-kiwis-nordiques + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: entretien-rhubarbe + date: 2026-05-15 + notes: Entretien de la rhubarbe + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: entretien-rhubarbe + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-groseillier + date: 2026-05-15 + notes: Inspection du groseillier + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: inspection-groseillier + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-muriers + date: 2026-05-15 + notes: Inspection des mûriers + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: inspection-muriers + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: entretien-houblon + date: 2026-06-01 + notes: Vérification et entretien du houblon + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/jardin.yaml + item_key: entretien-houblon + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-pharmacopée-jardin + date: 2026-05-01 + notes: Vérification du stock de soins pour végétaux + - name: revision-armoire-produits-jardin + date: 2026-05-01 + notes: Vérification et ordre de l'armoire des produits pour végétaux + outils-et-equipements: + - name: entretien-outils-jardin + date: 2026-04-15 + notes: Nettoyage et entretien des outils de jardin + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/outils-et-equipements.yaml + item_key: entretien-outils-jardin + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: inspection-outils-electriques + date: 2026-05-01 + notes: Vérification des outils électriques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/outils-et-equipements.yaml + item_key: inspection-outils-electriques + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-rallonges-et-connecteurs + date: 2026-05-01 + notes: Vérification des rallonges et connecteurs + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/outils-et-equipements.yaml + item_key: verification-rallonges-et-connecteurs + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-compresseur-et-accessoires + date: 2026-05-15 + notes: Vérification du compresseur et accessoires + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/outils-et-equipements.yaml + item_key: verification-compresseur-et-accessoires + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-inventaire-outillage + date: 2026-06-01 + notes: Revue de l'inventaire d'outillage + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/outils-et-equipements.yaml + item_key: revision-inventaire-outillage + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + informatique-personnelle: + - name: verification-sauvegardes-personnelles + date: 2026-04-01 + notes: Vérification des sauvegardes personnelles + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/informatique-personnelle.yaml + item_key: verification-sauvegardes-personnelles + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: nettoyage-stockage-personnel + date: 2026-04-15 + notes: Nettoyage du stockage numérique personnel + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/informatique-personnelle.yaml + item_key: nettoyage-stockage-personnel + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-comptes-importants + date: 2026-05-01 + notes: Vérification des comptes numériques personnels importants + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/informatique-personnelle.yaml + item_key: verification-comptes-importants + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-mots-de-passe-personnels + date: 2026-06-01 + notes: Revue des mots de passe personnels critiques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/informatique-personnelle.yaml + item_key: revue-mots-de-passe-personnels + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-documents-cloud-personnels + date: 2026-05-15 + notes: Vérifier la cohérence des documents personnels sauvegardés + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/informatique-personnelle.yaml + item_key: verification-documents-cloud-personnels + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + infrastructure-chezlepro: + - name: verification-proxmox + date: 2026-04-01 + notes: Vérification générale de l'environnement Proxmox + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-proxmox + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-ceph + date: 2026-04-01 + notes: Vérification générale de l'état Ceph + - name: test-restauration-backups + date: 2026-04-15 + notes: Test de restauration des sauvegardes + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: test-restauration-backups + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-pbs-truenas + date: 2026-05-01 + notes: Vérification des solutions de sauvegarde et synchronisation + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-pbs-truenas + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-ups-infrastructure + date: 2026-04-15 + notes: Vérification des UPS de l'infrastructure + - name: verification-capacite-stockage + date: 2026-04-15 + notes: Vérifier capacité et croissance du stockage + - name: verification-apt-cacher-ng + date: 2026-05-01 + notes: Vérification du bon fonctionnement d'apt-cacher-ng + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-apt-cacher-ng + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-icinga2 + date: 2026-04-01 + notes: Vérification de la supervision Icinga2 + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-icinga2 + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-keycloak-openldap + date: 2026-05-01 + notes: Vérification de l'identité et de l'authentification centralisées + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-keycloak-openldap + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-nextcloud + date: 2026-04-15 + notes: Vérification de l'état Nextcloud + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-nextcloud + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-mailcow + date: 2026-05-01 + notes: Vérification de l'infrastructure Mailcow + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-mailcow + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-openvas + date: 2026-05-15 + notes: Vérification de la plateforme OpenVAS + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-openvas + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-journaux-systemes + date: 2026-04-15 + notes: Revue des journaux systèmes critiques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/infrastructure-chezlepro.yaml + item_key: verification-journaux-systemes + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + reseau-chezlepro: + - name: verification-firewalls + date: 2026-04-01 + notes: Vérification des firewalls + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-firewalls + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-vpn-openvpn + date: 2026-04-15 + notes: Vérification des tunnels OpenVPN + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-vpn-openvpn + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-crl-certificats + date: 2026-04-15 + notes: Vérification de la CRL et des certificats + - name: verification-switches + date: 2026-05-01 + notes: Vérification des switches et uplinks + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-switches + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-vlans-segmentation + date: 2026-05-01 + notes: Vérification de la segmentation réseau + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-vlans-segmentation + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-dns + date: 2026-05-15 + notes: Vérification DNS interne et externe + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-dns + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-dynamic-dns + date: 2026-05-15 + notes: Vérification du DNS dynamique si utilisé + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-dynamic-dns + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: audit-regles-firewall + date: 2026-06-01 + notes: Audit périodique des règles de firewall + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: audit-regles-firewall + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-geoblocking + date: 2026-05-15 + notes: Vérifier le geoblocking et son effet attendu + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-geoblocking + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-certificats-publics + title: Vérification des certificats publics + summary: Suivre la prochaine échéance d’un certificat public important. + notes: Retenir la date d’expiration la plus proche parmi les certificats publics + suivis. + instructions: '1. Vérifier les certificats publics critiques. + + 2. Retenir la date d’expiration la plus proche. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/reseau-chezlepro.yaml + item_key: verification-certificats-publics + metric: + unit: days + thresholds: + critical_lt: 15 + warning_lt: 45 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-06-15' + securite-chezlepro: + - name: verification-mises-a-jour-securite + date: 2026-04-01 + notes: Vérification des mises à jour de sécurité + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/securite-chezlepro.yaml + item_key: verification-mises-a-jour-securite + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: audit-comptes-acces + date: 2026-05-01 + notes: Audit des comptes et accès privilégiés + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/securite-chezlepro.yaml + item_key: audit-comptes-acces + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-ids-snort + date: 2026-05-01 + notes: Vérification des IDS et de leur état + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/securite-chezlepro.yaml + item_key: verification-ids-snort + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-pki-privee + date: 2026-05-15 + notes: Revue de la PKI privée et des autorités intermédiaires + - name: revue-politiques-securite + date: 2026-06-01 + notes: Revue des politiques et pratiques de sécurité numérique + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/securite-chezlepro.yaml + item_key: revue-politiques-securite + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-sauvegardes-configuration + date: 2026-04-15 + notes: Vérifier les sauvegardes des configurations critiques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/securite-chezlepro.yaml + item_key: verification-sauvegardes-configuration + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + exploitation-chezlepro: + - name: revision-playbooks-ansible + date: 2026-05-01 + notes: Revue des playbooks Ansible + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/exploitation-chezlepro.yaml + item_key: revision-playbooks-ansible + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-inventaires-ansible + date: 2026-05-01 + notes: Vérification des inventaires Ansible + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/exploitation-chezlepro.yaml + item_key: verification-inventaires-ansible + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-documentation-technique + date: 2026-05-15 + notes: Revue de la documentation technique Chezlepro + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/exploitation-chezlepro.yaml + item_key: revision-documentation-technique + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-procedures-reprise + date: 2026-06-01 + notes: Vérifier les procédures de reprise et restauration + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/exploitation-chezlepro.yaml + item_key: verification-procedures-reprise + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-capacite-ressources + date: 2026-06-15 + notes: Revue CPU RAM stockage et charge de l'infrastructure + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/exploitation-chezlepro.yaml + item_key: revue-capacite-ressources + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-jobs-automatises + date: 2026-05-15 + notes: Vérification des jobs automatisés et scripts périodiques + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/exploitation-chezlepro.yaml + item_key: verification-jobs-automatises + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + obligations-chezlepro: + - name: verification-dossier-comptable-entreprise + date: 2026-04-15 + notes: Vérifier l'ordre du dossier comptable Chezlepro + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: verification-dossier-comptable-entreprise + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-facturation-clients + date: 2026-04-10 + notes: Vérifier la facturation et son suivi + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: verification-facturation-clients + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-paiements-fournisseurs + date: 2026-04-10 + notes: Vérifier les paiements fournisseurs + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: verification-paiements-fournisseurs + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-contrats-ententes + date: 2026-05-15 + notes: Vérifier contrats, ententes et obligations associées + - name: verification-registraire-entreprise + title: Vérification registraire d’entreprise + summary: Suivre la prochaine échéance liée au Registraire des entreprises. + notes: Entrer la prochaine date limite pertinente. + instructions: '1. Vérifier la prochaine échéance liée au Registraire. + + 2. Confirmer la date applicable. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: verification-registraire-entreprise + metric: + unit: days + thresholds: + critical_lt: 30 + warning_lt: 90 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-06-30' + - name: verification-declarations-taxes + title: Vérification des déclarations de taxes + summary: Suivre la prochaine échéance de déclaration de taxes. + notes: Entrer la prochaine date limite applicable. + instructions: '1. Vérifier la prochaine échéance de déclaration de taxes. + + 2. Confirmer la date applicable. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: verification-declarations-taxes + metric: + unit: days + thresholds: + critical_lt: 15 + warning_lt: 45 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-04-30' + - name: verification-assurances-entreprise + title: Vérification des assurances d’entreprise + summary: Suivre la prochaine échéance de renouvellement d’assurance. + notes: Entrer la date de renouvellement la plus proche. + instructions: '1. Vérifier les dates de renouvellement des assurances pertinentes. + + 2. Retenir la plus proche. + + 3. Entrer cette date dans Life-NOC. + + ' + notes_url: '' + instructions_url: '' + action_url: '' + probe: + type: days_until_due + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: verification-assurances-entreprise + metric: + unit: days + thresholds: + critical_lt: 30 + warning_lt: 90 + ok_lt: 366 + policy: + on_error: critical + ui: + form_mode: due_date + allow_complete: false + allow_manual_edit: true + date: '2026-10-01' + - name: archivage-documents-entreprise + date: 2026-05-31 + notes: Archiver les documents administratifs et financiers de l'entreprise + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/obligations-chezlepro.yaml + item_key: archivage-documents-entreprise + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + actifs-chezlepro: + - name: revision-inventaire-materiel + date: 2026-05-01 + notes: Revoir l'inventaire du matériel de Chezlepro + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/actifs-chezlepro.yaml + item_key: revision-inventaire-materiel + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-amortissables + date: 2026-06-01 + notes: Vérifier le registre des biens amortissables + - name: verification-serveurs-et-composants + date: 2026-05-15 + notes: Vérifier l'état des serveurs et composants matériels + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/actifs-chezlepro.yaml + item_key: verification-serveurs-et-composants + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-reserve-pieces + date: 2026-06-01 + notes: Vérifier les pièces de rechange critiques + - name: revision-actifs-transferts + date: 2026-06-15 + notes: Réviser les actifs transférés ou à transférer à l'entreprise + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/actifs-chezlepro.yaml + item_key: revision-actifs-transferts + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + projets: + - name: revision-life-noc + date: 2026-04-01 + notes: Révision du projet Life-NOC + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/projets.yaml + item_key: revision-life-noc + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-alliance-boreale + date: 2026-04-15 + notes: Révision du projet Alliance Boréale + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/projets.yaml + item_key: revision-alliance-boreale + metric: + unit: days + thresholds: + unknown_lt: 20 + ok_gte: 20 + warning_gte: 31 + critical_gte: 45 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-erplibre + date: 2026-05-01 + notes: Révision du projet ERPLibre + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/projets.yaml + item_key: revision-erplibre + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-semence-numerique + date: 2026-05-15 + notes: Révision du projet semence numérique + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/projets.yaml + item_key: revision-semence-numerique + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-ortrux-1 + date: 2026-05-15 + notes: Révision du système Ortrux-1 + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/projets.yaml + item_key: revision-ortrux-1 + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-district16 + date: 2026-05-01 + notes: Révision du projet DISTRICT16 + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/projets.yaml + item_key: revision-district16 + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + communaute: + - name: verification-outils-aa + date: 2026-05-01 + notes: Vérifier les outils numériques liés aux activités communautaires + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/communaute.yaml + item_key: verification-outils-aa + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-espace-87-16 + date: 2026-05-01 + notes: Vérifier l'espace Nextcloud du district + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/communaute.yaml + item_key: verification-espace-87-16 + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-salles-visio-groupes + date: 2026-05-15 + notes: Vérifier les salles de visioconférence des groupes + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/communaute.yaml + item_key: verification-salles-visio-groupes + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-depots-rapports-rsg + date: 2026-05-15 + notes: Vérifier les dépôts de rapports RSG + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/communaute.yaml + item_key: verification-depots-rapports-rsg + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revision-outils-communication-communaute + date: 2026-06-01 + notes: Réviser les moyens de communication communautaires + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/communaute.yaml + item_key: revision-outils-communication-communaute + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + documentation: + - name: revue-docs-personnelles-importantes + date: 2026-05-15 + notes: Revoir l'organisation des documents personnels importants + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/documentation.yaml + item_key: revue-docs-personnelles-importantes + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-wiki-technique + date: 2026-05-15 + notes: Revoir le wiki technique et sa cohérence + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/documentation.yaml + item_key: revue-wiki-technique + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: revue-base-connaissances + date: 2026-06-01 + notes: Revoir la base de connaissances globale + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/documentation.yaml + item_key: revue-base-connaissances + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + - name: verification-sauvegarde-docs-cles + date: 2026-05-15 + notes: Vérifier la sauvegarde des documents clés + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/documentation.yaml + item_key: verification-sauvegarde-docs-cles + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true + animaux: + - name: verification-stock-nourriture-chats + date: 2026-04-15 + notes: Vérification du stock de nourriture pour chats + - name: verification-friandises-et-litiere + date: 2026-04-15 + notes: Vérification des stocks de friandises et de litière + - name: revision-routine-soins-animaux + date: 2026-05-01 + notes: Revue de la routine de soins et des besoins matériels des chats + probe: + type: elapsed_time + source: + type: manual_date + inputs_file: /opt/life-noc/data/inputs/animaux.yaml + item_key: revision-routine-soins-animaux + metric: + unit: days + thresholds: + unknown_lt: 60 + ok_gte: 60 + warning_gte: 90 + critical_gte: 120 + policy: + on_error: critical + ui: + form_mode: complete_date + allow_complete: true + allow_manual_edit: true diff --git a/icinga/services/voiture.conf b/icinga/services/voiture.conf index 0ef2fd8..23a9b75 100644 --- a/icinga/services/voiture.conf +++ b/icinga/services/voiture.conf @@ -5,33 +5,60 @@ */ apply Service "voiture-verification-huile-moteur" { - import "service_echeance" - vars.date_echeance = "2026-04-01" - vars.mock_state = "OK" - vars.mock_message = "Sous contrôle" + import "service_life_noc_probe" + vars.life_noc_probe_type = "elapsed_distance" + vars.life_noc_source_type = "manual_counter" + vars.life_noc_source_value = "" + vars.life_noc_inputs_file = "/opt/life-noc/data/inputs/voiture.yaml" + vars.life_noc_item_key = "verification-huile-moteur" + vars.life_noc_metric_unit = "km" + vars.life_noc_label = "verification-huile-moteur" groups = [ "VOITURE" ] + vars.life_noc_threshold_unknown_lt = "0" + vars.life_noc_threshold_ok_gte = "0" + vars.life_noc_threshold_warning_gte = "8000" + vars.life_noc_threshold_critical_gte = "10000" + vars.life_noc_on_error = "unknown" notes = "Vérification de l'huile moteur" vars.instructions_url = "/life-noc/item/voiture/verification-huile-moteur" assign where host.name == "life-noc" } apply Service "voiture-inspection-freins" { - import "service_echeance" - vars.date_echeance = "2026-05-01" - vars.mock_state = "OK" - vars.mock_message = "Sous contrôle" + import "service_life_noc_probe" + vars.life_noc_probe_type = "elapsed_distance" + vars.life_noc_source_type = "manual_counter" + vars.life_noc_source_value = "" + vars.life_noc_inputs_file = "/opt/life-noc/data/inputs/voiture.yaml" + vars.life_noc_item_key = "inspection-freins" + vars.life_noc_metric_unit = "km" + vars.life_noc_label = "inspection-freins" groups = [ "VOITURE" ] + vars.life_noc_threshold_unknown_lt = "0" + vars.life_noc_threshold_ok_gte = "0" + vars.life_noc_threshold_warning_gte = "15000" + vars.life_noc_threshold_critical_gte = "20000" + vars.life_noc_on_error = "unknown" notes = "Inspection des freins" vars.instructions_url = "/life-noc/item/voiture/inspection-freins" assign where host.name == "life-noc" } apply Service "voiture-verification-pneus" { - import "service_echeance" - vars.date_echeance = "2026-04-15" - vars.mock_state = "OK" - vars.mock_message = "Sous contrôle" + import "service_life_noc_probe" + vars.life_noc_probe_type = "elapsed_distance" + vars.life_noc_source_type = "manual_counter" + vars.life_noc_source_value = "" + vars.life_noc_inputs_file = "/opt/life-noc/data/inputs/voiture.yaml" + vars.life_noc_item_key = "verification-pneus" + vars.life_noc_metric_unit = "km" + vars.life_noc_label = "verification-pneus" groups = [ "VOITURE" ] + vars.life_noc_threshold_unknown_lt = "0" + vars.life_noc_threshold_ok_gte = "0" + vars.life_noc_threshold_warning_gte = "10000" + vars.life_noc_threshold_critical_gte = "12000" + vars.life_noc_on_error = "unknown" notes = "Vérification usure, pression et permutation des pneus" vars.instructions_url = "/life-noc/item/voiture/verification-pneus" assign where host.name == "life-noc" @@ -49,11 +76,20 @@ apply Service "voiture-ajustement-valves" { } apply Service "voiture-verification-timing-belt" { - import "service_echeance" - vars.date_echeance = "2027-01-01" - vars.mock_state = "OK" - vars.mock_message = "Sous contrôle" + import "service_life_noc_probe" + vars.life_noc_probe_type = "elapsed_distance" + vars.life_noc_source_type = "manual_counter" + vars.life_noc_source_value = "" + vars.life_noc_inputs_file = "/opt/life-noc/data/inputs/voiture.yaml" + vars.life_noc_item_key = "verification-timing-belt" + vars.life_noc_metric_unit = "km" + vars.life_noc_label = "verification-timing-belt" groups = [ "VOITURE" ] + vars.life_noc_threshold_unknown_lt = "0" + vars.life_noc_threshold_ok_gte = "0" + vars.life_noc_threshold_warning_gte = "150000" + vars.life_noc_threshold_critical_gte = "168000" + vars.life_noc_on_error = "unknown" notes = "Vérification de la courroie de distribution et pompe à eau" vars.instructions_url = "/life-noc/item/voiture/verification-timing-belt" assign where host.name == "life-noc" diff --git a/lib/life_noc_inputs.py b/lib/life_noc_inputs.py index bbe3ba0..10f0e1d 100644 --- a/lib/life_noc_inputs.py +++ b/lib/life_noc_inputs.py @@ -67,6 +67,18 @@ def set_item(domain: str, item_key: str, value: str, origin: str = "manual") -> return data[item_key] +def set_counter_pair(domain: str, item_key: str, current_value: str, reference_value: str, origin: str = "manual") -> dict: + data = load_domain(domain) + data[item_key] = { + "value": current_value, + "reference_value": reference_value, + "captured_at": utc_now_iso(), + "origin": origin, + } + save_domain(domain, data) + return data[item_key] + + def complete_item(domain: str, item_key: str, origin: str = "manual") -> dict: return set_item(domain, item_key, utc_today_date(), origin=origin) @@ -106,30 +118,33 @@ def compute_state_for_item(domain: str, item_key: str) -> str: source = probe.get("source", {}) thresholds = probe.get("thresholds", {}) metric = probe.get("metric", {}) - - if str(source.get("type", "")).strip() != "manual_date": - return "CRITICAL" - if str(metric.get("unit", "")).strip() != "days": - return "CRITICAL" + source_type = str(source.get("type", "")).strip() + metric_unit = str(metric.get("unit", "")).strip() item = get_item(domain, item_key) - value = str(item.get("value", "")).strip() - dt = datetime.strptime(value, "%Y-%m-%d").replace(tzinfo=timezone.utc) - now = datetime.now(timezone.utc) - if probe_type == "elapsed_time": - days = (now - dt).total_seconds() / 86400.0 - if "critical_gte" in thresholds and days >= float(thresholds["critical_gte"]): + if probe_type in {"elapsed_time", "days_until_due"}: + if source_type != "manual_date": + return "CRITICAL" + if metric_unit != "days": + return "CRITICAL" + + value = str(item.get("value", "")).strip() + dt = datetime.strptime(value, "%Y-%m-%d").replace(tzinfo=timezone.utc) + now = datetime.now(timezone.utc) + + if probe_type == "elapsed_time": + days = (now - dt).total_seconds() / 86400.0 + if "critical_gte" in thresholds and days >= float(thresholds["critical_gte"]): + return "CRITICAL" + if "warning_gte" in thresholds and days >= float(thresholds["warning_gte"]): + return "WARNING" + if "ok_gte" in thresholds and days >= float(thresholds["ok_gte"]): + return "OK" + if "unknown_lt" in thresholds and days < float(thresholds["unknown_lt"]): + return "UNKNOWN" return "CRITICAL" - if "warning_gte" in thresholds and days >= float(thresholds["warning_gte"]): - return "WARNING" - if "ok_gte" in thresholds and days >= float(thresholds["ok_gte"]): - return "OK" - if "unknown_lt" in thresholds and days < float(thresholds["unknown_lt"]): - return "UNKNOWN" - return "CRITICAL" - if probe_type == "days_until_due": days = (dt - now).total_seconds() / 86400.0 if "critical_lt" in thresholds and days < float(thresholds["critical_lt"]): return "CRITICAL" @@ -141,4 +156,24 @@ def compute_state_for_item(domain: str, item_key: str) -> str: return "UNKNOWN" return "CRITICAL" + if probe_type == "elapsed_distance": + if source_type != "manual_counter": + return "CRITICAL" + if metric_unit != "km": + return "CRITICAL" + + current_value = float(str(item.get("value", "")).strip()) + reference_value = float(str(item.get("reference_value", "")).strip()) + distance = current_value - reference_value + + if "unknown_lt" in thresholds and distance < float(thresholds["unknown_lt"]): + return "UNKNOWN" + if "critical_gte" in thresholds and distance >= float(thresholds["critical_gte"]): + return "CRITICAL" + if "warning_gte" in thresholds and distance >= float(thresholds["warning_gte"]): + return "WARNING" + if "ok_gte" in thresholds and distance >= float(thresholds["ok_gte"]): + return "OK" + return "CRITICAL" + return "CRITICAL" diff --git a/scripts/generate_services.py b/scripts/generate_services.py index 72bb0f0..48de0ec 100644 --- a/scripts/generate_services.py +++ b/scripts/generate_services.py @@ -202,26 +202,36 @@ def validate_probe(item: dict) -> None: raise ValueError("probe doit être un objet") probe_type = str(probe.get("type", "")).strip() - if probe_type not in {"elapsed_time", "days_until_due"}: - raise ValueError("seuls probe.type=elapsed_time et days_until_due sont supportés") + if probe_type not in {"elapsed_time", "days_until_due", "elapsed_distance"}: + raise ValueError("seuls probe.type=elapsed_time, days_until_due et elapsed_distance sont supportés") source = probe.get("source") if not isinstance(source, dict): raise ValueError("probe.source doit être un objet") - if str(source.get("type", "")).strip() != "manual_date": - raise ValueError("seul probe.source.type=manual_date est supporté en v1") + source_type = str(source.get("type", "")).strip() has_inline_value = "value" in source has_store_ref = "inputs_file" in source and "item_key" in source - if not has_inline_value and not has_store_ref: - raise ValueError("probe.source.value ou probe.source.inputs_file + item_key requis") + if probe_type in {"elapsed_time", "days_until_due"}: + if source_type != "manual_date": + raise ValueError("seul probe.source.type=manual_date est supporté pour les sondes de date") + if not has_inline_value and not has_store_ref: + raise ValueError("probe.source.value ou probe.source.inputs_file + item_key requis") + elif probe_type == "elapsed_distance": + if source_type != "manual_counter": + raise ValueError("seul probe.source.type=manual_counter est supporté pour elapsed_distance") + if not has_store_ref: + raise ValueError("probe.source.inputs_file + item_key requis pour elapsed_distance") metric = probe.get("metric") if not isinstance(metric, dict): raise ValueError("probe.metric doit être un objet") - if str(metric.get("unit", "")).strip() != "days": - raise ValueError("seul probe.metric.unit=days est supporté en v1") + metric_unit = str(metric.get("unit", "")).strip() + if probe_type in {"elapsed_time", "days_until_due"} and metric_unit != "days": + raise ValueError("seul probe.metric.unit=days est supporté pour les sondes de date") + if probe_type == "elapsed_distance" and metric_unit != "km": + raise ValueError("seul probe.metric.unit=km est supporté pour elapsed_distance") thresholds = probe.get("thresholds") if not isinstance(thresholds, dict): diff --git a/scripts/life_noc_input_api.py b/scripts/life_noc_input_api.py index f112445..76cdfe5 100644 --- a/scripts/life_noc_input_api.py +++ b/scripts/life_noc_input_api.py @@ -37,6 +37,7 @@ from lib.life_noc_inputs import ( # noqa: E402 list_items, get_item, set_item, + set_counter_pair, complete_item, get_defined_service, compute_state_for_item, @@ -52,6 +53,12 @@ class CompleteInputRequest(BaseModel): origin: str = "manual" +class CounterPairInputRequest(BaseModel): + current_value: str + reference_value: str + origin: str = "manual" + + app = FastAPI(title="Life-NOC Input API", version="1.1.0") @@ -537,16 +544,34 @@ def api_complete_input(domain: str, item_key: str, req: CompleteInputRequest | N return {"domain": domain, "item_key": item_key, **item} +@app.post("/inputs/{domain}/{item_key}/counter") +def api_set_counter_pair(domain: str, item_key: str, req: CounterPairInputRequest) -> dict: + item = set_counter_pair( + domain, + item_key, + current_value=req.current_value, + reference_value=req.reference_value, + origin=req.origin or "manual", + ) + return {"domain": domain, "item_key": item_key, **item} + + @app.get("/life-noc/item/{domain}/{item_key}", response_class=HTMLResponse) def page_item(domain: str, item_key: str) -> HTMLResponse: try: service = get_defined_service(domain, item_key) - current_input = get_item(domain, item_key) - state = compute_state_for_item(domain, item_key) except KeyError: raise HTTPException(status_code=404, detail="item introuvable") - except ValueError as exc: - raise HTTPException(status_code=400, detail=str(exc)) + + try: + current_input = get_item(domain, item_key) + except KeyError: + current_input = {} + + try: + state = compute_state_for_item(domain, item_key) + except (KeyError, ValueError): + state = "UNKNOWN" title = service.get("title") or service.get("display_name") or item_key.replace("-", " ").capitalize() summary = service.get("summary", "") @@ -601,6 +626,25 @@ def page_item(domain: str, item_key: str) -> HTMLResponse: """ + elif allow_manual_edit and form_mode == "counter_pair": + manual_form_html = f""" +
+

Mettre à jour les compteurs

+

Saisir le compteur courant et le compteur au dernier entretien.

+
+ + + +
+ +
+
+
+ """ complete_form_html = "" if allow_complete: @@ -632,6 +676,7 @@ def page_item(domain: str, item_key: str) -> HTMLResponse:

Dernier intrant

Valeur : {html_escape(current_input.get('value', ''))}

+ {f'

Valeur de référence : {html_escape(current_input.get("reference_value", ""))}

' if 'reference_value' in current_input else ''}

Capturé le : {html_escape(current_input.get('captured_at', ''))}

Origine : {html_escape(current_input.get('origin', ''))}

@@ -668,6 +713,18 @@ def page_set_item(domain: str, item_key: str, value: str = Form(...), origin: st return RedirectResponse(url=f"/life-noc/item/{domain}/{item_key}", status_code=303) +@app.post("/life-noc/item/{domain}/{item_key}/counter") +def page_set_counter(domain: str, item_key: str, current_value: str = Form(...), reference_value: str = Form(...), origin: str = Form(default="manual")) -> RedirectResponse: + try: + set_counter_pair(domain, item_key, current_value=current_value, reference_value=reference_value, origin=origin) + except KeyError: + raise HTTPException(status_code=404, detail="item introuvable") + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) + + return RedirectResponse(url=f"/life-noc/item/{domain}/{item_key}", status_code=303) + + @app.post("/life-noc/item/{domain}/{item_key}/complete") def page_complete_item(domain: str, item_key: str, origin: str = Form(default="manual")) -> RedirectResponse: try: