life-noc/docs/architecture-life-noc.md
2026-03-15 14:43:50 -04:00

295 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.