Dashboard web¶
Le dashboard Octavius est une application web FastAPI + HTML/JS qui te permet de gérer ton serveur Discord sans avoir à taper les commandes manuellement.
Connexion¶
L'authentification se fait uniquement via OAuth Discord (Phase 4.1) :
- Ouvre dashboard.octaviusfr.com
(ou
http://127.0.0.1:8000/en local pour les dev) - Clique sur « Se connecter avec Discord »
- Autorise Octavius à lire ta liste de serveurs
- Sélectionne le serveur que tu veux gérer (tu dois avoir la permission Manage Server)
Fin du login par mot de passe
Depuis Phase 4.1, la connexion par mot de passe a été supprimée.
Les commandes !setdashpass / !cleardashpass retournent un message
de dépréciation. Plus simple et plus sûr.
Sections¶
🏠 Tableau de bord¶
Stats live du serveur :
- Membres totaux, actifs 24h/7j
- Messages, XP, tickets, custom commands
- Reaction-roles, snapshots, level-roles configurés
- Alertes de config manquante (type de serveur, salons, rôles)
💬 Communication¶
Sous-onglets :
- Chat IA — historique des conversations avec Octavius
- Annonces — envoyer des annonces dans
DISCORD_ANNOUNCE_CHANNEL_ID - Tickets — vue de tous les tickets (dev) ou les tiens (client)
- Messagerie support — chat avec l'équipe Octavius
🛡️ Modération¶
Sous-onglets :
- Sanctions — historique audit log + filtres
- Salons — config des salons (LOG, SECURITY_LOG, etc.)
- Commande salon — déclencher une action depuis un salon (ban, kick, clear)
- Anti-spam — config
PROTECT_*(limites, window)
🎭 Membres & Rôles¶
- Liste membres avec rôles + activité
- Mapping rôles (Fondateur/Admin/Staff/Membre)
- Auto-rôles au join
- Boutons & menus rôles (visuel)
- Presets thématiques (langages, frameworks, platforms, gaming, fivem, etc.)
⚙️ Configuration¶
Sous-onglets :
- Identité — nom, type, description, ton
- Salons — mapper tous les salons utiles
- Welcome — image de bienvenue, titre, message
- Règlement — éditer le règlement custom
- Setup tickets — choisir le salon panel
- Type serveur — dev / gaming / fivem_rp / etc.
📊 Logs & Audit¶
- Logs bot (modération, sécurité)
- Stats par jour
- Graphs analytics (Silver+)
API publique¶
Toutes les actions du dashboard passent par l'API FastAPI
(api_central.py). Les routes principales :
| Route | Méthode | Description |
|---|---|---|
/auth/discord/start |
GET | Initie OAuth Discord |
/auth/discord/callback |
GET | Callback OAuth |
/auth/me |
GET | Token actuel + is_dev |
/auth/me/guilds |
GET | Mes serveurs avec MANAGE_GUILD |
/auth/switch-guild |
POST | Re-émet un token sur une autre guild |
/discord/guilds/{id}/snapshot |
GET | Snapshot live channels+roles |
/discord/guilds/{id}/config |
GET / PATCH | Config per-guild |
/messages/tickets |
GET | Liste tickets |
/messages/tickets/{id} |
GET | Détail ticket |
/messages/tickets/{id}/reply |
POST | Répondre |
/messages/tickets/{id}/transcript |
GET | Download HTML |
/ai/chat |
POST | Chat IA |
/ai/image |
POST | Génération image |
/translate |
POST | Traduction |
/announce |
POST | Annonce serveur |
/discord/action |
POST | Action distante (kick, ban, etc.) |
/metrics |
GET | Métriques Prometheus |
Tenant isolation auditée (Phase 2.1), tous les endpoints {guild_id}
vérifient token["gid"] == guild_id ou is_dev.
Multi-serveurs¶
Le dashboard permet de switcher entre tes serveurs depuis le sélecteur en haut. Chaque switch ré-émet un token JWT scopé sur la nouvelle guild, sans avoir à re-OAuth.
Sécurité¶
- Toutes les routes derrière
Bearer tokenJWT (HMAC-SHA256) - Rate-limits par endpoint (login, switch-guild, IA, etc.)
- CORS strict (whitelisted dans
ALLOWED_ORIGINS) - Headers de sécurité (SecurityMiddleware)
- 11 tests cross-tenant régressifs en CI