WITHMIA v1.0.5 — Sécurité, qualité et facturation
Rate limiting sur toute l'API, pipeline CI/CD avec GitHub Actions, suite de tests automatisés, système de parrainage complet et génération de factures PDF aux couleurs de WITHMIA.
Équipe WITHMIA
WITHMIA
Note (juillet 2026) : les formules Business et Enterprise s’appellent désormais Team et Max. Les tarifs restent inchangés.
La v1.0.4 a bâti un modèle économique viable. La v1.0.5 renforce les fondations : protection de l’API, qualité de code automatisée et facturation professionnelle. Cette mise à jour fait de WITHMIA une plateforme prête à passer à l’échelle en toute confiance.
Rate limiting : une protection sur chaque route
Toutes les routes de l’API sont désormais protégées par un rate limiting granulaire. Six limiteurs différents selon le type d’opération :
| Limiteur | Routes protégées | Limite |
|---|---|---|
| api | Profil, tickets, canaux, base de connaissances, configuration | 60 req/min |
| chatwoot-proxy | Proxy des conversations et messages en temps réel | 120 req/min |
| evolution | Instances WhatsApp (Evolution API) | 60 req/min |
| integrations | Agenda, produits, ventes, intégrations externes | 60 req/min |
| billing | Abonnements, checkout, dépassement, factures | 20 req/min |
| admin | Panneau d’administration | 30 req/min |
Pourquoi c’est important ?
Sans rate limiting, un seul acteur malveillant (ou un bug côté client) peut saturer toute l’API. Avec cette protection :
- Prévention des abus — les bots et les scrapers ne peuvent plus bombarder les endpoints
- Stabilité en charge — l’API répond de façon prévisible, même en cas de pic de trafic
- Protection financière — l’endpoint de facturation est particulièrement gardé, à 20 req/min
- Chatwoot optimisé — le proxy de discussion a la limite la plus haute (120 req/min) parce qu’il est en temps réel
Chaque limiteur s’applique par utilisateur authentifié, ou par IP pour les requêtes publiques. Les réponses incluent les en-têtes standards X-RateLimit-Limit, X-RateLimit-Remaining et Retry-After.
CI/CD : déploiement automatisé avec GitHub Actions
WITHMIA dispose maintenant d’un pipeline complet d’intégration et de déploiement continus. Chaque push sur main déclenche automatiquement :
Backend (PHP)
- PostgreSQL 16 + Redis 7 en services du pipeline
- Installation des dépendances avec Composer
- Exécution de toute la suite de tests avec Pest
- Variables d’environnement de test isolées
Frontend (TypeScript/React)
- Installation des dépendances avec npm
- ESLint — validation du style et détection d’erreurs
- TypeScript — vérification des types sur tout le projet
- Build — compilation complète pour s’assurer que tout se résout
Déploiement
- Déploiement automatique vers Railway, uniquement depuis la branche
main - Protégé par le secret
RAILWAY_TOKEN - Ne s’exécute que si les tests et le build passent
Si un test échoue ou si TypeScript détecte une erreur de types, le déploiement est bloqué automatiquement. Aucune chance d’envoyer du code cassé en production.
Tests automatisés avec Pest
La première suite de tests automatisés de WITHMIA, qui couvre les briques les plus critiques du métier :
Tests unitaires
- CurrencyService — détection de la devise par pays, routage de passerelle (Flow pour le CLP, dLocal pour le reste), tarification locale correcte
- BillingConfig — structure des formules (Free, Pro, Business, Enterprise), tarif du dépassement, configuration de Flow et dLocal, validation de la remise annuelle
- OverageService — prix par pack, calcul des coûts selon le nombre de messages dépassés
Tests de feature
- Endpoints de l’API — health check, garde-fous d’authentification, throttling fonctionnel, gestion des 404
- Modèles — création de User, Company et Subscription avec des factory patterns
Chaque test s’exécute sur une base PostgreSQL propre grâce à RefreshDatabase, ce qui garantit des essais indépendants et reproductibles.
Un système de parrainage complet
Le système de parrainage passe d’un simple squelette à une implémentation complète :
Comment ça marche ?
- Votre entreprise génère un code — au format
WM-XXXXXX(6 caractères alphanumériques) - Vous partagez le code avec une autre entreprise
- L’autre entreprise l’applique au moment de s’abonner et obtient 10 % de remise pendant 3 mois
- Vous cumulez les parrainages — le système compte le nombre d’utilisations de votre code
Règles de gestion
- Vous ne pouvez pas utiliser votre propre code (prévention de l’auto-parrainage)
- Un code ne peut pas être appliqué deux fois par la même entreprise
- La remise est paramétrable : pourcentage, nombre de mois, nombre maximal d’utilisations
- Les codes peuvent avoir une date d’expiration
- Seules les entreprises avec une formule active peuvent générer des codes
Nouveaux endpoints
GET /api/subscription/referral-code— récupérer ou générer le code de votre entreprisePOST /api/subscription/apply-referral— appliquer un code de parrainage (il existait déjà en squelette, il est désormais fonctionnel)
Facturation PDF soignée
Nouveau système de génération de factures aux couleurs de WITHMIA :
Modèle Invoice
- Numérotation automatique — format
WM-YYYY-XXXXX(ex. : WM-2026-00001) - Calcul de la TVA — 19 % automatiquement pour les paiements en CLP
- Lignes détaillées — libellé, formule, cycle de facturation
- Relations — liée à Company et Subscription
Génération automatique des factures
Les factures sont créées automatiquement dès qu’un paiement est confirmé, sans intervention de l’utilisateur :
- Flow.cl — à la confirmation du paiement dans le webhook (
status === 2) - dLocal — à la confirmation du paiement dans le webhook dLocal
- Flow Subscription — à chaque renouvellement récurrent (en indiquant s’il s’agit de la première facture ou d’un renouvellement)
Chaque facture consigne le moyen de paiement, la référence de transaction, le montant, la devise et le détail des taxes.
Téléchargement du PDF
Le service InvoiceService génère un document HTML soigné, avec :
- Logo et identité WITHMIA, rehaussés d’accents dorés (#FFD700)
- Coordonnées de l’entreprise émettrice et de la destinataire
- Un tableau des lignes avec le détail du sous-total, de la TVA et du total
- Les informations de paiement : moyen, référence, date
- Un design responsive optimisé pour l’impression
Si dompdf est installé, un vrai PDF est généré. Sinon, une version HTML prête à imprimer est servie, avec window.print() intégré.
Nouveaux endpoints
GET /api/subscription/invoices— liste des 50 dernières factures de l’entrepriseGET /api/subscription/invoices/{id}/pdf— télécharger la facture en PDF/HTML
Récapitulatif technique
| Changement | Fichiers | Impact |
|---|---|---|
| Rate limiting | AppServiceProvider + routes/api.php | 6 limiteurs, 18+ groupes de routes |
| CI/CD | .github/workflows/ci.yml + .env.ci | 3 jobs (backend, frontend, déploiement) |
| Tests | 5 fichiers dans tests/ | 23+ cas de test (unit + feature) |
| Parrainage | 2 modèles + migration + contrôleur | Système complet |
| Factures | Modèle Invoice + InvoiceService + migration | Création automatique dans les webhooks |
La suite
L’infrastructure qualité étant assurée, la feuille de route du T2 2026 se concentre sur des fonctionnalités à fort impact :
- PWA / application mobile — la priorité pour une Amérique latine mobile-first
- Enquêtes CSAT — une fonctionnalité que tous les concurrents proposent
- AI resolution analytics — les indicateurs de résolution par l’IA
- Broadcasting WhatsApp — campagnes de masse
WITHMIA v1.0.5 n’est pas la mise à jour la plus tape-à-l’œil, mais c’est celle qui permet de dormir tranquille. Code testé, API protégée, factures automatiques.
Étiquettes
Commentaires
Restez respectueux. Votre e-mail ne sera pas publié.