Files
geo/app/lib/chat/README.md
Pierre 5ab03751e1 feat: Release version 3.1.4 - Mode terrain et génération PDF
 Nouvelles fonctionnalités:
- Ajout du mode terrain pour utilisation mobile hors connexion
- Génération automatique de reçus PDF avec template personnalisé
- Révision complète du système de cartes avec amélioration des performances

🔧 Améliorations techniques:
- Refactoring du module chat avec architecture simplifiée
- Optimisation du système de sécurité NIST SP 800-63B
- Amélioration de la gestion des secteurs géographiques
- Support UTF-8 étendu pour les noms d'utilisateurs

📱 Application mobile:
- Nouveau mode terrain dans user_field_mode_page
- Interface utilisateur adaptative pour conditions difficiles
- Synchronisation offline améliorée

🗺️ Cartographie:
- Optimisation des performances MapBox
- Meilleure gestion des tuiles hors ligne
- Amélioration de l'affichage des secteurs

📄 Documentation:
- Ajout guide Android (ANDROID-GUIDE.md)
- Documentation sécurité API (API-SECURITY.md)
- Guide module chat (CHAT_MODULE.md)

🐛 Corrections:
- Résolution des erreurs 400 lors de la création d'utilisateurs
- Correction de la validation des noms d'utilisateurs
- Fix des problèmes de synchronisation chat

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 19:38:03 +02:00

198 lines
5.5 KiB
Markdown
Executable File

# Module Chat Autonome pour GEOSECTOR
## Description
Module de chat **totalement autonome et portable** pour l'application GEOSECTOR.
- **100% indépendant** : Peut être réutilisé dans n'importe quelle application Flutter
- **API REST uniquement** : Plus de dépendance MQTT
- **Architecture simple** : Code maintenable et facilement compréhensible
- **Cache local Hive** : Fonctionnement offline avec synchronisation automatique
- **Gestion des rôles** : Permissions configurables via YAML
- **Autocomplete intelligent** : Sélection des destinataires selon les permissions
## Architecture simplifiée
### Structure minimale
```
lib/chat/
├── models/ # 2 modèles simples
│ ├── room.dart
│ └── message.dart
├── services/ # Services de gestion
│ ├── chat_service.dart # Service principal
│ └── chat_config_loader.dart # Chargeur de configuration
├── widgets/ # Composants réutilisables
│ └── recipient_selector.dart # Sélecteur de destinataires
├── pages/ # 2 pages essentielles
│ ├── rooms_page.dart
│ └── chat_page.dart
├── chat_config.yaml # Configuration des permissions
└── chat_module.dart # Point d'entrée
```
## Intégration dans votre application
### 1. Installation
```yaml
# pubspec.yaml
dependencies:
dio: ^5.4.0
hive: ^2.2.3
hive_flutter: ^1.1.0
yaml: ^3.1.2
```
### 2. Initialisation
```dart
await ChatModule.init(
apiUrl: 'https://api.geosector.fr',
userId: currentUser.id,
userName: currentUser.name,
userRole: currentUser.fkRole, // 1, 2 ou 9
userEntite: currentUser.entiteId, // ID de l'amicale
authToken: authToken, // Optionnel
);
```
### 3. Utilisation
```dart
// Ouvrir le chat
ChatModule.openChat(context);
// Ou obtenir directement une page
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => ChatModule.getRoomsPage(),
),
);
```
## Gestion des permissions par rôle
### Configuration (chat_config.yaml)
Les permissions sont définies dans un fichier YAML facilement modifiable :
#### Rôle 1 (Membre)
- Peut discuter avec les membres de son amicale (rôle 1)
- Peut discuter avec l'admin de son amicale (rôle 2)
- Restriction : même entité uniquement
#### Rôle 2 (Admin Amicale)
- Peut discuter avec tous les membres de son amicale
- Peut discuter avec les superadmins (rôle 9)
- Peut créer des groupes de discussion
#### Rôle 9 (Super Admin)
- Peut envoyer des messages à tous les admins d'amicale
- Peut sélectionner des destinataires spécifiques
- Peut faire du broadcast à tous les admins
## API Backend requise
### Endpoints REST
- `GET /api/chat/rooms` - Liste des conversations filtrées par rôle
- `POST /api/chat/rooms` - Créer une conversation avec vérification des permissions
- `GET /api/chat/rooms/{id}/messages` - Messages d'une conversation
- `POST /api/chat/rooms/{id}/messages` - Envoyer un message
- `POST /api/chat/rooms/{id}/read` - Marquer comme lu
- `GET /api/chat/recipients` - Liste des destinataires possibles selon le rôle
### Structure base de données
```sql
-- Tables préfixées "chat_"
CREATE TABLE chat_rooms (
id VARCHAR(36) PRIMARY KEY,
title VARCHAR(255),
type ENUM('private', 'group', 'broadcast'),
created_at TIMESTAMP,
created_by INT
);
CREATE TABLE chat_messages (
id VARCHAR(36) PRIMARY KEY,
room_id VARCHAR(36),
content TEXT,
sender_id INT,
sent_at TIMESTAMP,
FOREIGN KEY (room_id) REFERENCES chat_rooms(id)
);
CREATE TABLE chat_participants (
room_id VARCHAR(36),
user_id INT,
role INT,
entite_id INT,
joined_at TIMESTAMP,
PRIMARY KEY (room_id, user_id)
);
CREATE TABLE chat_read_receipts (
message_id VARCHAR(36),
user_id INT,
read_at TIMESTAMP,
PRIMARY KEY (message_id, user_id)
);
```
## Stockage local Hive
### TypeIds réservés
- TypeId 50: Room
- TypeId 51: Message
- TypeIds 52-60: Réservés pour extensions futures
### Boxes Hive
- `chat_rooms`: Conversations en cache
- `chat_messages`: Messages en cache
## Interface utilisateur
### Design minimaliste et professionnel
- Palette de couleurs sobre (blanc, gris, bleu accent)
- Pas d'animations superflues
- Focus sur la lisibilité et l'efficacité
- Interface responsive pour toutes les plateformes
### Composants principaux
1. **Liste des conversations** : Vue simple avec badges non-lus
2. **Page de chat** : Messages avec bulles, input simple
3. **Sélecteur de destinataires** : Autocomplete avec filtrage par rôle
## Planning de développement (2 sessions)
### Session 1 : Architecture de base ✅
- [x] Nettoyage et suppression du MQTT
- [x] Création des modèles simples (Room, Message)
- [x] Service unique ChatService
- [x] Pages minimales (RoomsPage, ChatPage)
- [x] Module d'entrée ChatModule
- [x] Gestion des rôles et permissions via YAML
- [x] Widget autocomplete pour sélection des destinataires
- [x] Adaptation de l'UI selon les permissions
### Session 2 : Finalisation
- [ ] Tests d'intégration avec l'API
- [ ] Documentation API complète
- [ ] Optimisations performances
- [ ] Gestion erreurs robuste
## Points d'attention
### Sécurité
- Authentification via token JWT
- Vérification des permissions côté serveur
- Validation des inputs
### Performance
- Cache Hive pour mode offline
- Pagination des messages
- Lazy loading des conversations
### Maintenance
- Code simple et documenté
- Architecture modulaire
- Configuration externalisée (YAML)
## Support
Pour toute question ou problème, consulter la documentation principale de l'application GEOSECTOR.