life-noc/docs/life_noc_documentation_pack.md

735 lines
15 KiB
Markdown
Raw Normal View History

2026-03-15 14:43:50 -04:00
# Life-NOC — Documentation complète
## 1. Présentation générale
### 1.1 Définition
**Life-NOC** est un système de pilotage personnel qui applique à la vie réelle la logique dun **NOC** (Network Operations Center / centre dopérations).
Son but nest pas dautomatiser la vie à la place de la personne.
Son but est de :
- rendre visibles les suivis importants ;
- transformer la charge mentale en état observable ;
- soutenir la mémoire prospective ;
- orienter lattention vers ce qui mérite réellement dêtre vu ;
- réduire la friction entre la prise de conscience et laction.
Life-NOC peut être résumé ainsi :
> **Voir clair, prioriser juste, agir au bon endroit.**
---
### 1.2 Finalité
Life-NOC sert à superviser des éléments de la vie personnelle, domestique, administrative, technique ou communautaire comme sil sagissait de services critiques dans une salle de contrôle.
Il permet par exemple de suivre :
- des revues périodiques ;
- des échéances ;
- des stocks ;
- des vérifications techniques ;
- des obligations administratives ;
- des contrôles de maintenance ;
- des routines de résilience ;
- des points dattention dans lenvironnement physique.
---
### 1.3 Positionnement
Life-NOC nest pas :
- un simple gestionnaire de tâches ;
- un agenda ;
- un ERP ;
- un moteur dautomatisation généraliste ;
- un outil dinventaire pur.
Life-NOC est :
- un **système de supervision attentionnelle** ;
- un **cadre dévaluation de suivis** ;
- un **point de convergence** entre intrants, règles, états et actions ;
- une **interface de réduction de charge mentale**.
---
## 2. Principes de fonctionnement
### 2.1 Séparation des couches
Life-NOC repose sur quatre couches distinctes :
1. **définition** ;
2. **ingestion** ;
3. **persistance** ;
4. **évaluation**.
#### Définition
Contient les items à superviser, les méthodes, les seuils, les notes et les liens utiles.
#### Ingestion
Contient les mécanismes par lesquels une donnée entre dans le système :
- saisie manuelle ;
- API ;
- page HTML ;
- QR code ;
- plus tard MQTT, GUI avancée, etc.
#### Persistance
Contient les intrants vivants à jour.
#### Évaluation
Contient la logique qui transforme un intrant en état Life-NOC.
---
### 2.2 Philosophie générale
Le système suit cette logique :
- le **domaine** organise ;
- la **méthode** évalue ;
- l**item** fait le lien entre les deux ;
- l**intrant** fournit la valeur vivante ;
- la **page item** réduit la friction daction ;
- **Icinga** rend les états visibles dans un cadre de supervision.
---
## 3. États Life-NOC
Life-NOC utilise une sémantique propre des états.
### 3.1 États
- **UNKNOWN** : pas encore dû, pas encore à faire ;
- **OK** : actionnable maintenant ;
- **WARNING** : il faut se presser ;
- **CRITICAL** : en retard, anormal, ou impossible à évaluer.
### 3.2 Différence avec lusage classique de Nagios/Icinga
Dans Life-NOC :
- le vert ne signifie pas seulement « tout va bien » ;
- le vert signifie souvent « cest le bon moment pour agir » ;
- le gris signifie que litem nest pas encore entré dans sa fenêtre daction.
### 3.3 Politique derreur
Par défaut, si le système ne peut pas conclure techniquement, il retourne **CRITICAL**.
Exemples :
- fichier introuvable ;
- donnée absente ;
- format invalide ;
- parsing impossible ;
- seuil incohérent ;
- type de sonde non pris en charge.
Cette politique force la correction des faux positifs techniques plutôt que leur invisibilisation.
---
## 4. Organisation métier par domaines
Life-NOC regroupe les items dans des **domaines**.
Exemples de domaines :
- revue ;
- focus ;
- finances-personnelles ;
- fiscalite-personnelle ;
- obligations-legales-personnelles ;
- maison ;
- garage-et-rangement ;
- energie ;
- resilience ;
- stock-alimentaire ;
- sante ;
- voiture ;
- jardin ;
- informatique-personnelle ;
- infrastructure-chezlepro ;
- reseau-chezlepro ;
- securite-chezlepro ;
- exploitation-chezlepro ;
- projets ;
- communaute ;
- documentation ;
- animaux.
Le domaine est une unité dorganisation métier, pas nécessairement une unité de calcul.
Un même domaine peut contenir plusieurs méthodes de sonde.
---
## 5. Taxonomie des méthodes de sonde
Le modèle conceptuel v1 de Life-NOC prévoit cinq méthodes principales.
### 5.1 elapsed_time
Mesure le temps écoulé depuis un événement ou une exécution précédente.
Exemples :
- revue hebdomadaire ;
- inspection trimestrielle ;
- test périodique.
Intrant attendu :
- date de dernière exécution.
Unité typique :
- jours.
---
### 5.2 days_until_due
Mesure le temps restant avant une échéance fixe.
Exemples :
- renouvellement du permis ;
- passeport ;
- assurance ;
- obligation légale.
Intrant attendu :
- date déchéance.
Unité typique :
- jours.
---
### 5.3 elapsed_distance
Mesure la distance écoulée depuis une action passée.
Exemples :
- vidange ;
- entretien pneus ;
- entretien freins.
Intrants attendus :
- compteur courant ;
- compteur au dernier entretien.
Unité typique :
- kilomètres.
---
### 5.4 current_value
Évalue une valeur instantanée contre des seuils.
Exemples :
- tension batterie ;
- température ;
- humidité ;
- espace libre.
Intrant attendu :
- valeur actuelle.
Unité typique :
- variable selon le cas.
---
### 5.5 remaining_quantity
Évalue ce quil reste dun stock ou dune réserve.
Exemples :
- nourriture chats ;
- réserve deau ;
- carburant ;
- consommables.
Intrant attendu :
- quantité restante.
Unité typique :
- jours, litres, unités, pourcentage, etc.
---
## 6. Portée actuellement validée
Au stade actuel, les méthodes réellement validées dans le système sont :
- `elapsed_time` ;
- `days_until_due`.
Les autres méthodes sont conceptuellement définies, mais pas encore consolidées de la même manière dans le dépôt.
---
## 7. Définition des items
Les items supervisés sont définis dans :
```text
domains.yaml
```
Chaque item peut contenir :
- `name` ;
- `date` ;
- `notes` ;
- `notes_url` ;
- `instructions_url` ;
- `action_url` ;
- `probe` ;
- `thresholds` ;
- `policy`.
### 7.1 Rôle des champs descriptifs
- `notes` : résumé humain court ;
- `notes_url` : contexte / référence ;
- `instructions_url` : quoi faire / procédure ;
- `action_url` : où agir concrètement.
### 7.2 Champ probe
Le champ `probe` décrit :
- la méthode ;
- la source ;
- lunité ;
- les seuils ;
- la politique derreur.
Exemple :
```yaml
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
```
---
## 8. Store des intrants
### 8.1 Principe
Les intrants vivants ne sont pas mélangés à la définition des items.
Ils sont stockés sous :
```text
data/inputs/<domaine>.yaml
```
Exemples :
- `data/inputs/revue.yaml`
- `data/inputs/obligations-legales-personnelles.yaml`
### 8.2 Contenu minimal dun intrant
Un intrant contient en général :
- `value` ;
- `captured_at` ;
- `origin`.
Exemple :
```yaml
revue-hebdomadaire-priorites:
value: "2026-03-14"
captured_at: "2026-03-14T23:16:41Z"
origin: manual
```
### 8.3 Rôle du store
Le store dintrants permet :
- de changer une valeur sans toucher à `domains.yaml` ;
- dalimenter les sondes avec des valeurs vivantes ;
- de préparer les futures interfaces GUI, API, QR et autres.
---
## 9. CLI de gestion des intrants
Life-NOC dispose dune CLI de gestion des intrants.
### 9.1 Commandes principales
- `list`
- `get`
- `set`
- `complete`
### 9.2 Exemples
```bash
life-noc-input list revue
life-noc-input get revue revue-hebdomadaire-priorites
life-noc-input set revue revue-hebdomadaire-priorites 2026-03-14
life-noc-input complete revue revue-hebdomadaire-priorites
```
### 9.3 Rôle de complete
`complete` est particulièrement utile pour les items de type `elapsed_time/manual_date`.
Il inscrit automatiquement :
- `value = date du jour`
- `captured_at = maintenant`
- `origin = manual`
---
## 10. API locale des intrants
Life-NOC expose une API locale sur :
```text
http://127.0.0.1:8787
```
### 10.1 Endpoints JSON
- `GET /health`
- `GET /inputs/{domain}`
- `GET /inputs/{domain}/{item_key}`
- `POST /inputs/{domain}/{item_key}`
- `POST /inputs/{domain}/{item_key}/complete`
### 10.2 Exemple
```bash
curl http://127.0.0.1:8787/health
curl http://127.0.0.1:8787/inputs/revue
curl http://127.0.0.1:8787/inputs/revue/revue-hebdomadaire-priorites
curl -X POST http://127.0.0.1:8787/inputs/revue/revue-hebdomadaire-priorites \
-H 'Content-Type: application/json' \
-d '{"value":"2026-03-14","origin":"manual"}'
```
### 10.3 Dépendances importantes
Le service FastAPI nécessite notamment :
- `python3-fastapi`
- `python3-uvicorn`
- `python3-multipart`
---
## 11. Pages HTML Life-NOC
Le serveur Life-NOC sert aussi des pages HTML simples destinées à laction humaine.
### 11.1 URL ditem
Format :
```text
/life-noc/item/<domaine>/<item_key>
```
Exemple :
```text
/life-noc/item/revue/revue-hebdomadaire-priorites
```
### 11.2 Contenu de la page
La page affiche :
- titre humain ;
- état actuel ;
- type de sonde ;
- dernier intrant ;
- domaine ;
- item key ;
- notes ;
- lien `notes_url` ;
- lien `instructions_url` ;
- lien `action_url` ;
- bouton `Compléter`.
### 11.3 Route daction HTML
Le bouton `Compléter` utilise :
```text
POST /life-noc/item/<domaine>/<item_key>/complete
```
Puis redirige vers la page de litem.
---
## 12. Intégration Icinga
Life-NOC sappuie sur Icinga 2 / Icinga Web 2 pour la visualisation des états supervisés.
### 12.1 Ce que le système sait faire
- déployer les définitions de services ;
- exposer les custom variables ;
- rendre les états lisibles dans Icinga ;
- supporter `Check Now` ;
- intégrer les BPM natifs ;
- générer des servicegroups cohérents.
### 12.2 Informations visibles dans Icinga
Selon litem, on peut voir notamment :
- létat calculé ;
- les variables de seuil ;
- les variables de source ;
- les liens utiles ;
- `instructions_url` en variable personnalisée.
---
## 13. BPM et servicegroups
Life-NOC génère :
- des services Icinga ;
- des groupes de services ;
- une configuration BPM native.
Lobjectif est de rendre visibles à la fois :
- les items unitaires ;
- les regroupements par domaine ;
- la vision densemble hiérarchisée.
---
## 14. Flux de fonctionnement complet
Le fonctionnement complet suit le chemin suivant :
1. litem est défini dans `domains.yaml` ;
2. lintrant vivant est stocké dans `data/inputs/<domaine>.yaml` ;
3. la CLI, lAPI ou la page HTML modifient cet intrant ;
4. la sonde lit le store ;
5. la sonde calcule létat ;
6. Icinga laffiche ;
7. lusager agit ;
8. lintrant est mis à jour ;
9. le cycle recommence.
---
## 15. Déploiement et reproductibilité
Le dépôt doit permettre de reproduire le système sans correctifs manuels cachés.
### 15.1 Principes
- les correctifs doivent vivre dans le dépôt ;
- les dépendances nécessaires doivent être installées automatiquement ;
- les scripts de chantier temporaires doivent être supprimés une fois les changements intégrés proprement.
### 15.2 Déploiement habituel
```bash
make check
make deploy-with-bpm
```
---
## 16. Documentation pour les usagers
# Guide usager Life-NOC
## 16.1 À quoi sert Life-NOC pour lusager
Life-NOC aide une personne à voir rapidement ce qui mérite son attention, sans tout garder dans sa tête.
Il sert à suivre des choses comme :
- des revues régulières ;
- des dates importantes ;
- des entretiens ;
- des vérifications ;
- des obligations.
## 16.2 Ce que signifient les états
- **UNKNOWN** : pas encore le temps dagir ;
- **OK** : cest le bon moment pour sen occuper ;
- **WARNING** : il faut accélérer ;
- **CRITICAL** : cest urgent ou il y a un problème.
## 16.3 Comment consulter un item
Un item peut être consulté :
- dans Icinga ;
- via une page Life-NOC ;
- plus tard via QR code.
La page Life-NOC affiche :
- le nom du suivi ;
- son état ;
- la dernière valeur enregistrée ;
- les notes ;
- les instructions ;
- un bouton pour marquer laction comme faite.
## 16.4 Comment marquer une action comme faite
Quand litem le permet, il suffit de cliquer sur **Compléter**.
Cela met à jour la valeur de lintrant avec la date du jour.
## 16.5 Quand utiliser les liens utiles
- **Notes** : pour comprendre le contexte ;
- **Instructions** : pour savoir quoi faire ;
- **Action** : pour aller directement au bon outil ou à la bonne page.
## 16.6 Ce que lusager na pas besoin de faire
Lusager na normalement pas besoin de comprendre :
- le moteur de sonde ;
- les fichiers YAML ;
- la structure technique ;
- larchitecture Icinga.
Il lui suffit de :
- voir létat ;
- consulter les instructions ;
- marquer laction effectuée.
---
## 17. Documentation dexploitation
### 17.1 Vérifications utiles
#### Vérifier lAPI
```bash
curl http://127.0.0.1:8787/health
```
#### Vérifier un intrant
```bash
curl http://127.0.0.1:8787/inputs/revue/revue-hebdomadaire-priorites
```
#### Vérifier une page item
```bash
curl http://127.0.0.1:8787/life-noc/item/revue/revue-hebdomadaire-priorites
```
### 17.2 Cas fréquent : lintrant change mais pas létat dans Icinga
Cela signifie souvent quIcinga na pas encore refait le check.
Il faut alors :
- lancer un `Check Now` ;
- ou attendre le prochain check ;
- ou tester directement le plugin à la main.
### 17.3 Cas fréquent : route HTML absente après déploiement
Vérifier :
- que le service API tourne ;
- que le fichier déployé contient bien les routes HTML ;
- que les dépendances FastAPI sont installées, notamment `python3-multipart`.
---
## 18. QR codes — direction prévue
Life-NOC est conçu pour pouvoir pointer des QR codes vers des pages item.
Format visé :
```text
/life-noc/item/<domaine>/<item_key>
```
Le scan permettrait :
- douvrir litem ;
- de lire les instructions ;
- de confirmer laction ;
- de mettre à jour le système facilement.
---
## 19. État actuel du projet
Le système a déjà validé en pratique :
- Icinga Web 2 fonctionnel ;
- BPM natif fonctionnel ;
- servicegroups fonctionnels ;
- `Check Now` fonctionnel ;
- store dintrants séparé ;
- CLI des intrants ;
- API locale ;
- pages HTML ditem ;
- méthodes réelles `elapsed_time` et `days_until_due`.
---
## 20. Conclusion
Life-NOC dispose désormais dun noyau opératoire réel.
Il ne sagit plus seulement dun concept ou dune maquette.
Le système sait déjà :
- définir des suivis ;
- stocker des intrants ;
- évaluer des états ;
- exposer ces états ;
- fournir des instructions ;
- permettre laction ;
- réintégrer cette action dans la supervision.
Cest la base dun véritable système de pilotage personnel orienté action.