docs: ajout historique_memoire.md — historique complet du projet

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 07:03:44 +02:00
parent 27c62fa54c
commit c4f672bb69
+78
View File
@@ -0,0 +1,78 @@
# Historique et mémoire du projet SentinelMesh
## Références
- **Dépôt Gitea** : https://git.maison43gil.com/gilles/SentinelMesh.git
- **Utilisateur** : gilles
- **Token** : 8bb9ee27860bd2f66c4113406dbcc0d545ba6ac6
- **Push** : `git remote set-url origin "https://gilles:<token>@git.maison43gil.com/gilles/SentinelMesh.git"`
---
## Règles de travail
- Toutes les réponses, commentaires dans le code, et messages de commit sont **en français uniquement**
- Committer + pusher après chaque étape logique (pas seulement en fin de phase)
- Toujours utiliser le préfixe `rtk` pour les commandes shell (réduction des tokens)
---
## Historique des phases
### Phase 1 — Architecture & Backend
- Workspace Cargo multi-membres (backend, agents/agent-scan-network, agents/agent-metric)
- Backend Axum 0.8 + SQLite via SQLx avec migrations
- Endpoints API v1 : `/agents`, `/network`, `/metrics`, `/events`, `/widgets`
- Spec OpenAPI générée sur `/api-docs/openapi.json`
### Phase 2 — Découverte réseau
- `agent-scan-network` : ping sweep TCP, ARP via `/proc/net/arp`, lookup OUI
- Scan de ports TCP (SSH, HTTP, HTTPS, SMB, MQTT, Docker, Proxmox, HA…)
- API JSON locale sur `:9100`, push vers le backend
- Subnet configuré : `10.0.0.0/22`
### Phase 3 — Métriques système
- `agent-metric` : CPU/RAM/réseau/charge chaque seconde (sysinfo 0.32)
- Disques, températures hwmon, SMART via smartctl (toutes les 30min)
- Infos DMI/hardware depuis `/sys` au boot + toutes les 12h
- API locale sur `:9101`, push vers `/api/v1/metrics` et `/api/v1/events`
### Phase 4 — Widgets Glance
- `widget-network-scan` : liste équipements (état, IP, hostname, vendor, services)
- `widget-agent-metrics` : barres CPU/RAM/disque/température par agent
- CSS custom `sentinelmesh.css` : badges, barres de progression, points de statut
- Page Glance exemple complète (`glance-page-example.yaml`)
### Phase 5 — Déploiement & Distribution
- `install/install.sh` : détection arch, téléchargement, config, systemd, enregistrement
- `install/uninstall.sh` : désinstallation propre
- Docker Compose production (healthcheck, réseau, volumes nommés)
- Dockerfiles agents multi-arch (amd64, arm64, armv7)
- Pipelines Gitea Actions : CI (check/clippy/fmt/test) + release multi-arch sur tag `v*`
### Phase 6 — Extensions
- SSE temps réel : `GET /api/v1/stream` (events metrics + network)
- Historique métriques : `GET /api/v1/history/{agent_id}?hours=N`, rétention 7 jours
- Prometheus : `GET /metrics` format text/plain
- MQTT dans les deux agents (rumqttc, QoS 0/1) — topics realtime/medium/events/network/scan
---
## Bugs corrigés notables
| Problème | Solution |
|---|---|
| utoipa-swagger-ui 8 incompatible avec axum 0.8 | Supprimé, OpenAPI JSON servi manuellement |
| `refresh(true)` supprimé en sysinfo 0.32 | `refresh()` sans argument |
| Edition 2024 requiert Rust 1.86+ | Dockerfile mis à jour |
| SQLite ne crée pas le fichier au premier démarrage | `create_if_missing(true)` dans db.rs |
| Dockerfile backend — contexte workspace mal configuré | Contexte depuis la racine, stubs membres du workspace |
---
## État actuel (mai 2026)
- Toutes les 6 phases complètes et pushées
- Tag `v0.1.0` créé et pushé (déclenche le pipeline release multi-arch)
- Test de déploiement Docker réussi — backend opérationnel
- Fichiers locaux exclus du dépôt via `.gitignore` : `.claude/`, `doc_brainstorming/`, `repo_glance/`, `tokengite.md`