core/SUIVI.md
enzo 5f6681dd17 feat: LineIcons Duotone, page profil, widgets dashboard, sidebar gauche/droite
- Intégration LineIcons Duotone (css/ + toutes les pages)
- Remplacement de tous les symboles Unicode par des icônes lnid-*
- Page profile.html : préférences thème, position sidebar, langue
- Dashboard : système de widgets add/remove + drag-and-drop natif
- Sidebar gauche/droite configurable per-user (data-sidebar CSS + FOUC script)
- Store ui : sidebarPosition, applySidebarPosition(), setSidebarPosition()
- Composant profilePage() dans app.js
- nav.profile ajouté dans fr.json et en.json
- SUIVI.md mis à jour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 18:38:48 +01:00

149 lines
5.7 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 | ✅ Intégrés (css/ + toutes les pages) | Haute |
| Dashboard widgets add/remove/drag-drop | ✅ Widget system + DnD natif HTML5 | Haute |
| Sidebar gauche/droite per-user | ✅ `data-sidebar` CSS + profilePage | Moyenne |
| Page profil préférences (thème/sidebar/langue) | ✅ profile.html créée | Moyenne |
| Préférences utilisateur en DB | ❌ localStorage uniquement | Basse |
| 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
```