Kuby/commandes/ticket/TODO.md

131 lines
4.3 KiB
Markdown
Raw Normal View History

# 🎫 Ticket System - TODO & Documentation
## Vue d'ensemble
Système de tickets modulaire et complet pour Discord bot.
## Structure du projet
```
commandes/ticket/
├── __init__.py # Commande principale (le cog)
├── ticket.py # Wrapper de compatibilité (ancien fichier)
├── views/ # Interfaces utilisateurs
│ ├── creation.py # Création de tickets
│ └── admin.py # Panneau d'admin
├── data/ # Données et stockage
│ ├── models.py # Modèles de données
│ └── storage.py # Gestion du stockage JSON
├── utils/ # Utilitaires
│ ├── transcript.py # Génération de transcriptions
│ └── formatters.py # Formatage des embeds
└── TODO.md # Documentation
```
## ⚠️ Vues Persistantes - Important
Pour que les boutons fonctionnent après un redémarrage du bot, toutes les vues doivent:
1. Utiliser `timeout=None` dans le constructeur
2. Être enregistrées avec `bot.add_view(view)` dans `cog_load()`
### Vues persistantes configurées:
-`TicketCreationView` - timeout=None
-`TicketManagementView` - timeout=None
-`SurveyView` - timeout=None
-`AdminPanelView` - timeout=None
-`ConfigPanelView` - timeout=None
-`BulkCloseView` - timeout=None
-`RolesManagementView` - timeout=None
### Enregistrement des vues
Les vues sont enregistrées dans `cog_load()` et aussi périodiquement toutes les 30 secondes:
```python
async def cog_load(self):
await self._register_all_views()
async def _register_all_views(self):
for guild_id in self.storage.get_all_guild_ids():
config = self.storage.load_config(guild_id)
if config and config.enabled:
self.bot.add_view(TicketCreationView(self.bot, config))
self.bot.add_view(TicketManagementView(...))
# etc.
```
## Commandes
| Commande | Description |
|----------|-------------|
| `/ticket setup` | Configure le système (admin) |
| `/ticket panel [channel]` | Crée le panneau de création |
| `/ticket info [channel]` | Infos sur un ticket |
| `/ticket list [user]` | Liste des tickets |
| `/ticket stats` | Statistiques |
| `/ticket admin` | Panneau d'admin |
| `/ticket transcript [channel]` | Génère une transcription |
| `/ticket category add\|remove\|list` | Gère les catégories |
| `/ticket close [channel] [reason]` | Ferme un ticket |
| `/ticket reopen [channel]` | Rouvre un ticket |
## Configuration
### Modèles de données
- **TicketData** - Données d'un ticket
- **TicketCategory** - Catégorie de ticket
- **GuildTicketConfig** - Configuration du serveur
- **TicketStatus** - Statuts: OPEN, CLAIMED, CLOSED, ARCHIVED
- **Priority** - Priorités: LOW, NORMAL, HIGH, URGENT
### Stockage
Les données sont stockées dans `data/tickets/`:
- `config_guild_id.json` - Configuration du serveur
- `tickets.json` - Tous les tickets
## Fonctionnalités
### Création de tickets
1. L'utilisateur clique sur une catégorie
2. Sélectionne la priorité (si activé)
3. Entre la raison (si requis)
4. Le salon est créé automatiquement
### Gestion des tickets
- **Fermer** - Ferme avec raison optionnelle
- **Réclamer** - Reserve le ticket à un staff
- **Priorité** - Change la priorité
- **Transcript** - Génère une transcription
### Système de survey
Enquête de satisfaction 1-5 étoiles après fermeture
## Problèmes connus et solutions
### Boutons ne fonctionnent pas après redémarrage
**Cause:** Views non persistantes (timeout défini) ou non enregistrées
**Solution:**
1. Vérifier que `timeout=None` est défini
2. Vérifier que `bot.add_view()` est appelé dans `cog_load()`
3. Redémarrer le bot après avoir envoyé le panneau
### Transcript non généré
**Cause:** Historique trop long ou permissions manquantes
**Solution:** Le transcript limite à 1000 messages
## Dépannage
```bash
# Tester si les vues sont enregistrées
# Les boutons doivent répondre même après un redémarrage
# Vérifier les logs pour les erreurs
tail -f logs/kuby.log
```
## À faire (Backlog)
- [ ] Ajouter support pour transcripts PDF
- [ ] Implémenter système de tags pour tickets
- [ ] Ajouter intégration avec webhooks
- [ ] Support multi-langue
- [ ] Interface web pour administration