From c4f672bb69ebc2261dc8f68661cda97d16a0af93 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Tue, 19 May 2026 07:03:44 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20ajout=20historique=5Fmemoire.md=20?= =?UTF-8?q?=E2=80=94=20historique=20complet=20du=20projet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- historique_memoire.md | 78 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 historique_memoire.md diff --git a/historique_memoire.md b/historique_memoire.md new file mode 100644 index 0000000..914d061 --- /dev/null +++ b/historique_memoire.md @@ -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:@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`