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