core/SUIVI.md
enzo 9739dbaee8 Correction CSS Swup, types WS et création fichier de suivi
- Extraction de tous les styles inline en css/pages.css (chargé globalement)
  pour corriger le CSS cassé lors des navigations Swup
- Correction types WebSocket : proxmox_resources → resources_update
  et msg.data → msg.payload (format réel du hub Go)
- Ajout d'un fetch HTTP immédiat dans dashboardPage/proxmoxPage
  pour éviter l'attente du premier tick (10s) du polling WS
- Correction msg.payload pour les updates (update_output/done/error)
- Ajout class terminal-wrapper sur .main-layout de terminal.html
  pour le fullscreen height sans affecter les autres pages
- Création SUIVI.md : état d'implémentation vs instruction.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 17:49:33 +01:00

148 lines
5.6 KiB
Markdown

# Suivi d'implémentation — ProxmoxPanel CORE
Référence : `instruction.md` | Mis à jour : 2026-03-21
---
## Stack technique actuelle
| Composant | Choix | Statut |
|-----------|-------|--------|
| Backend | Go 1.23 + chi v5 + gorilla/websocket | ✅ Implémenté |
| Base de données | SQLite via modernc.org/sqlite (sans CGO) | ✅ Implémenté |
| Auth | PAM via SSH + JWT RS256 | ✅ Implémenté |
| Chiffrement | AES-256-GCM (master.key) | ✅ Implémenté |
| Frontend | Alpine.js v3 + HTMX v2 + Swup v4 | ✅ Branche `frontend/alpine` |
| Icônes | **LineIcons Duotone** | ⚠️ Non intégré (symboles Unicode utilisés) |
| Terminal | xterm.js v5 + addon-fit + WS PTY | ✅ Implémenté |
| Build frontend | esbuild (bundler Swup ESM → IIFE) | ✅ Implémenté |
| Serveur statique | Nginx 1.27 | ✅ Dockerfile simplifié |
---
## Fonctionnalités CORE — État d'avancement
### 1. Page d'installation ✅
- Wizard 4 étapes (Alpine.js)
- Pré-remplissage URL automatique depuis `window.location.origin`
- Test SSH (fetch POST /api/install/test-ssh)
- Configuration Proxmox API (token unique format `user@realm!tokenid=secret`)
- **Manque** : pré-remplissage du port depuis la requête entrante
### 2. Gestion des comptes utilisateurs ✅
- Création automatique au premier login (PAM SSH → upsert SQLite)
- JWT access (15min) + refresh cookie httpOnly (7j)
- Deux niveaux : Admin (groupe sudo/wheel) et Utilisateur
- **Manque** : page profil utilisateur, préférences per-user en DB
### 3. Détection LXC/VM ✅
- API Proxmox REST (client Go, InsecureSkipVerify)
- WS `/ws/proxmox` — polling 10s, type `resources_update`, payload `[...]`
- Affichage en temps réel dans les pages Dashboard et Proxmox
- **Fix appliqué** : données immédiates via HTTP + WS pour live updates
### 4. Dashboard ⚠️ Partiel
- Compteurs LXC running/stopped ✅
- Liste LXC avec CPU/RAM ✅
- WebSocket live ✅
- **Manque** : widgets configurables (add/remove/drag-drop) ← requis par instruction.md
- **Manque** : raccourcis vers services (Grafana, Proxmox, Traefik…)
- **Manque** : personnalisation per-user sauvegardée en DB
### 5. Thème Neumorphism ✅
- neu.css (dark/light mode via CSS custom properties) ✅
- Toggle dark/light dans la navbar ✅
- Sidebar repliable ✅
- Responsive (media queries) ✅
- **Manque** : sidebar gauche/droite per-user ← requis par instruction.md
- **Manque** : LineIcons Duotone (actuellement Unicode symbols) ← requis par instruction.md
### 6. Gestion des langues ✅
- fr.json / en.json via Alpine store i18n ✅
- Sélecteur dans la navbar ✅
- Sauvegarde dans localStorage ✅
- **Manque** : sauvegarde per-user en DB
### 7. Mises à jour paquets ✅
- Liste par cible (host + LXC) ✅
- `apt update + apt full-upgrade -y` via SSH ✅
- Streaming WS live (type `update_output` / `update_done` / `update_error`) ✅
- **Fix appliqué** : `msg.payload` (pas `msg.data`)
- **Manque** : historique des mises à jour
### 8. Système de paramètres ✅
- Onglets Général / SSH / Proxmox API ✅
- `PUT /api/settings/{key}` per-key ✅
- Secrets chiffrés AES-256-GCM en DB ✅
- **Manque** : onglet Apparence (sidebar position, thème par défaut)
- **Manque** : onglet Langues disponibles
### 9. Mises à jour CORE/modules ❌ Non implémenté
- Vérification nouvelles versions Forgejo
- Affichage changelog
- Détection migrations post-update
### 10. Store de modules ⚠️ Partiel
- Liste des modules (CORE + optionnels stubs) ✅
- Toggle enable/disable ✅
- **Manque** : installation/désinstallation de modules externes
- **Manque** : registre officiel + registres supplémentaires
### 11. Page post-installation/migration ❌ Non implémenté
- Blocage total de l'accès si migration en attente
---
## Bugs résolus dans cette session
| Bug | Fix |
|-----|-----|
| CSS cassé au changement de page via Swup | Extraction de tous les styles inline en `css/pages.css` global |
| Dashboard/Proxmox WS bloqué à "⌛ Connexion…" | Type WS était `proxmox_resources` → corrigé en `resources_update` |
| WS lit `msg.data` au lieu de `msg.payload` | Corrigé pour dashboard, proxmox, updates |
| Délai 10s avant 1er affichage données | Ajout fetch HTTP immédiat + WS pour updates live |
| `access_token` null au login | Corrigé en session précédente |
| CSS variables incorrectes (`--bg-primary`) | Corrigé en session précédente |
---
## Non-conformités instruction.md à corriger
| Règle | État | Priorité |
|-------|------|----------|
| Icônes LineIcons Duotone uniquement | ❌ Symbols Unicode utilisés | Haute |
| Dashboard widgets add/remove/drag-drop | ❌ Non implémenté | Haute |
| Sidebar gauche/droite per-user | ❌ Gauche fixe uniquement | Moyenne |
| Préférences utilisateur en DB | ❌ localStorage uniquement | Moyenne |
| Historique mises à jour | ❌ Non affiché | Basse |
| Mises à jour CORE/modules depuis interface | ❌ Non implémenté | Basse |
| Page blocage migration | ❌ Non implémenté | Basse |
---
## Architecture Docker
```
core/
├── backend/ (Go — port 3001 interne)
├── frontend/ (Alpine.js — build → Nginx)
│ ├── js/app.js (stores + composants Alpine)
│ ├── css/neu.css (neumorphism + layout)
│ ├── css/pages.css (styles spécifiques pages)
│ └── *.html (pages statiques)
└── docker-compose.yml
```
## Commandes utiles
```bash
# Build frontend (sur LXC ou machine dev)
cd core/frontend && npm run build
# Déploiement sur LXC 112
docker compose pull && docker compose up -d --build
# Logs
docker compose logs -f backend
docker compose logs -f frontend
```