Files
geo/api/TODO-API.md

142 lines
4.1 KiB
Markdown

# TODO-API.md
## 📋 Liste des tâches à implémenter
### 🔴 PRIORITÉ HAUTE
#### 1. Système de backup pour les suppressions (DELETE)
**Demandé le :** 20/08/2025
**Objectif :** Sauvegarder toutes les données supprimées (soft delete) dans un fichier SQL pour pouvoir les restaurer en cas d'erreur humaine.
**Détails techniques :**
- Créer un système de backup automatique lors de chaque DELETE
- Stocker les données dans un fichier SQL avec structure permettant la réintégration facile
- Format suggéré : `/backups/deleted/{année}/{mois}/deleted_{table}_{YYYYMMDD}.sql`
**Tables concernées :**
- `ope_pass` (passages) - DELETE /passages/{id}
- `users` (utilisateurs) - DELETE /users/{id}
- `operations` (opérations) - DELETE /operations/{id}
- `ope_sectors` (secteurs) - DELETE /sectors/{id}
**Structure du backup suggérée :**
```sql
-- Backup deletion: ope_pass
-- Date: 2025-08-20 14:30:45
-- User: 9999985 (cv_mobile)
-- Entity: 5
-- Original ID: 19500576
INSERT INTO ope_pass_backup (
original_id,
deleted_at,
deleted_by_user_id,
deleted_by_entity_id,
-- tous les champs originaux
fk_operation,
fk_sector,
fk_user,
montant,
encrypted_name,
encrypted_email,
-- etc...
) VALUES (
19500576,
'2025-08-20 14:30:45',
9999985,
5,
-- valeurs originales
...
);
-- Pour restauration facile :
-- UPDATE ope_pass SET chk_active = 1 WHERE id = 19500576;
```
**Fonctionnalités à implémenter :**
1. **Service de backup** : `BackupService.php`
- Méthode `backupDeletedRecord($table, $id, $data)`
- Génération automatique du SQL de restauration
- Rotation des fichiers (garder 90 jours)
2. **Intégration dans les controllers**
- Ajouter l'appel au BackupService avant chaque soft delete
- Logger l'emplacement du backup
3. **Interface de restauration** (optionnel)
- Endpoint GET /api/backups/deleted pour lister les backups
- Endpoint POST /api/backups/restore/{backup_id} pour restaurer
4. **Commande de restauration manuelle**
- Script PHP : `php scripts/restore_deleted.php --table=ope_pass --id=19500576`
**Avantages :**
- Traçabilité complète des suppressions
- Restauration rapide en cas d'erreur
- Audit trail pour conformité
- Tranquillité d'esprit pour le client
---
### 🟡 PRIORITÉ MOYENNE
#### 2. Amélioration des logs
- Ajouter plus de contexte dans les logs
- Rotation automatique des logs
- Dashboard de monitoring
#### 3. Optimisation des performances
- Cache des requêtes fréquentes
- Index sur les tables volumineuses
- Pagination optimisée
#### 4. Sécurisation des clés Stripe par environnement
**Objectif :** Étudier une approche plus sécurisée pour stocker les clés Stripe
**Problème actuel :**
- Toutes les clés (DEV, REC, PROD) sont dans un seul fichier `AppConfig.php`
- Les clés PRODUCTION sont visibles dans le code DEV/REC
- Risque si accès au container DEV → exposition des clés PROD
**Solutions à étudier :**
1. **Variables d'environnement** (`.env` par container)
- Fichier `.env.dev`, `.env.rec`, `.env.prod`
- Chargement dynamique selon l'environnement
- Exclusion des `.env` du versionning Git
2. **Fichiers de config séparés**
- `config/stripe.dev.php`, `config/stripe.rec.php`, `config/stripe.prod.php`
- Déploiement sélectif selon l'environnement
- Non versionnés (ajoutés au .gitignore)
3. **Secrets management** (avancé)
- HashiCorp Vault, AWS Secrets Manager, etc.
- API de récupération sécurisée des secrets
**Recommandation :** Approche #1 (variables d'environnement) pour équilibre sécurité/simplicité
---
### 🟢 PRIORITÉ BASSE
#### 5. Documentation API
- Génération automatique OpenAPI/Swagger
- Documentation interactive
- Exemples de code pour chaque endpoint
#### 6. Tests automatisés
- Tests unitaires pour les services critiques
- Tests d'intégration pour les endpoints
- Tests de charge
---
## 📝 Notes
- Les tâches marquées 🔴 doivent être traitées en priorité
- Chaque tâche implémentée doit être documentée
- Prévoir des tests pour chaque nouvelle fonctionnalité
---
**Dernière mise à jour :** 20/08/2025