life-noc/docs/architecture-life-noc.md

296 lines
6.2 KiB
Markdown
Raw Normal View History

2026-03-15 14:43:50 -04:00
# Architecture et fonctionnement de Life-NOC
## 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
### 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 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.
## 4. Organisation métier par domaines
Les domaines servent à organiser les suivis.
Exemples :
- revue ;
- focus ;
- finances-personnelles ;
- obligations-legales-personnelles ;
- maison ;
- energie ;
- voiture ;
- projets ;
- documentation ;
- animaux.
Le domaine est une unité dorganisation métier, pas nécessairement une unité de calcul.
## 5. Taxonomie des méthodes de sonde
### 5.1 `elapsed_time`
Mesure le temps écoulé depuis une dernière exécution.
### 5.2 `days_until_due`
Mesure le temps restant avant une échéance fixe.
### 5.3 `elapsed_distance`
Mesure une distance écoulée depuis une action passée.
### 5.4 `current_value`
Évalue une valeur instantanée contre des seuils.
### 5.5 `remaining_quantity`
Évalue ce quil reste dun stock ou dune réserve.
## 6. Portée actuellement validée
Au stade actuel, les méthodes réellement validées sont :
- `elapsed_time` ;
- `days_until_due`.
## 7. Définition des items
Les items sont définis dans :
```text
domains.yaml
```
Un item peut contenir :
- `name`
- `date`
- `notes`
- `notes_url`
- `instructions_url`
- `action_url`
- `probe`
### 7.1 Rôle des champs descriptifs
- `notes` : résumé court ;
- `notes_url` : contexte / référence ;
- `instructions_url` : procédure ;
- `action_url` : outil ou page daction.
## 8. Store des intrants
Les intrants vivants sont stockés sous :
```text
data/inputs/<domaine>.yaml
```
Exemple :
```yaml
revue-hebdomadaire-priorites:
value: "2026-03-14"
captured_at: "2026-03-14T23:16:41Z"
origin: manual
```
## 9. CLI des intrants
Commandes principales :
- `list`
- `get`
- `set`
- `complete`
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
```
## 10. API locale des intrants
API locale sur :
```text
http://127.0.0.1:8787
```
Endpoints JSON :
- `GET /health`
- `GET /inputs/{domain}`
- `GET /inputs/{domain}/{item_key}`
- `POST /inputs/{domain}/{item_key}`
- `POST /inputs/{domain}/{item_key}/complete`
Dépendances importantes :
- `python3-fastapi`
- `python3-uvicorn`
- `python3-multipart`
## 11. Pages HTML Life-NOC
Route :
```text
/life-noc/item/<domaine>/<item_key>
```
La page affiche :
- titre humain ;
- état actuel ;
- type de sonde ;
- dernier intrant ;
- domaine ;
- item key ;
- notes ;
- liens utiles ;
- bouton `Compléter`.
Le bouton utilise :
```text
POST /life-noc/item/<domaine>/<item_key>/complete
```
## 12. Intégration Icinga
Life-NOC sappuie sur Icinga pour :
- la visualisation des états ;
- le `Check Now` ;
- les BPM natifs ;
- les servicegroups ;
- laffichage des variables utiles.
## 13. Flux complet
1. définition dans `domains.yaml` ;
2. intrant dans `data/inputs/<domaine>.yaml` ;
3. mise à jour par CLI, API ou page HTML ;
4. lecture par la sonde ;
5. calcul de létat ;
6. affichage dans Icinga ;
7. action de lusager ;
8. mise à jour de lintrant.
## 14. Déploiement
Commandes usuelles :
```bash
make check
make deploy-with-bpm
```
Le dépôt doit rester reproductible sans correctifs manuels cachés.