C Codinfyby RAFLOX SAS
Opérations · Production · Maintenance

Runbook Opérationnel Codinfy

Mode opératoire production : contrôles quotidiens, réconciliation paiements, gestion des incidents, commandes Artisan, maintenance et routines hebdomadaires/mensuelles.

1. Checklist quotidienne

À effectuer chaque matin avant le début des opérations commerciales.

Tableau de bord admin

  • Vérifier revenus du jour (MRR, transactions)
  • Vérifier tickets ouverts et priorités urgentes
  • Vérifier alertes système actives
  • Vérifier factures pending > 24h
  • Vérifier prédictions churn > 70%

Intégrations & infrastructure

  • Vérifier diagnostics API (paiements, SMTP, OpenAI)
  • Vérifier le log scheduler cron
  • Vérifier les webhooks sortants en erreur
  • Vérifier les livraisons de callbacks paiement
  • Vérifier les sessions admin actives

Sécurité

  • Vérifier sessions admin suspectes
  • Vérifier alertes sécurité non résolues
  • Vérifier logs d'anomalies licences
  • Contrôler la liste IP admin si activée

Support & SLA

  • Vérifier tickets hors SLA
  • Assigner les tickets non attribués
  • Répondre aux tickets escaladés
  • Vérifier demandes de confidentialité pending

2. Routines hebdomadaires

À effectuer chaque lundi ou début de semaine selon l'équipe.

Analyse business

  • Relire le rapport ops généré (codinfy:generate-monthly-reports)
  • Passer en revue les conversions entonnoir CRM
  • Analyser les cohortes de la semaine précédente
  • Vérifier l'évolution des segments RFM
  • Lancer codinfy:compute-crm-scores si besoin hors cron

Opérations

  • Réconcilier manuellement les paiements non résolus
  • Clore les litiges paiement ouverts > 7 jours
  • Vérifier les affiliés avec solde approbable
  • Lancer codinfy:process-affiliate-payouts
  • Mettre à jour les packs de langues si traductions nouvelles

Marketing

  • Vérifier les campagnes CRM actives
  • Vérifier les coupons proches de l'expiration
  • Envoyer les notifications de mise à jour produit
  • Lancer codinfy:send-update-notifications

Technique

  • Nettoyer les anciens logs de vérification de licences
  • Lancer codinfy:cleanup-license-checks
  • Vérifier l'espace disque storage/ et logs/
  • Tester le mail SMTP depuis l'admin

3. Routines mensuelles

Financier

  • Générer le rapport opérationnel mensuel
  • Valider le MRR, CAC, LTV du mois
  • Exporter les factures payées (comptabilité)
  • Vérifier les taxes sur les transactions internationales

Sécurité

  • Réviser les rôles et permissions admin
  • Supprimer les comptes admin inactifs
  • Vérifier la politique 2FA et les sessions
  • Lancer codinfy:compute-cohorts
  • Sauvegarder storage/keys/ RSA

Produit

  • Vérifier les versions produits à mettre à jour
  • Purger les anciens packages ZIP si remplacés
  • Mettre à jour la base de connaissances
  • Réviser les pages légales (CGU, confidentialité)
  • Faire une sauvegarde complète BDD

4. Réconciliation paiements

Workflow standard

  1. Identifier les factures en statut pending depuis Admin > Paiements.
  2. Utiliser le bouton Vérifier sur la facture pour déclencher un re-check côté gateway.
  3. Si confirmée payée côté gateway → utiliser Marquer payée avec la référence de transaction.
  4. Si non trouvée → contacter le client pour preuve de paiement.
  5. En dernier recours, valider manuellement avec annotation dans les notes internes.

CinetPay

  • Vérifier via /v2/payment/check avant toute action manuelle.
  • Le webhook Codinfy valide x-token HMAC.
  • Canaux configurables : Mobile Money, carte, wallet.

TouchPay / InTouch

  • Vérifier via GET /transaction/{id} avant réconciliation.
  • Vérifier le bon serviceCode opérateur (MTN, Orange, etc.).
  • Le webhook secret valide les callbacks.

KKiaPay

  • Le webhook signé x-kkiapay-secret est la source de vérité.
  • Ne pas se fier uniquement à la redirection navigateur.
  • Le bridge local /checkout/kkiapay/{invoice} gère le widget.

Remboursement & chargeback

  1. Admin > Paiements → Rembourser → saisir le motif.
  2. La facture passe en refunded, la licence est suspendue.
  3. En cas de chargeback : ouvrir un litige → suspendre la licence → résoudre won/lost/closed.
  4. Si résolution won : réactiver la licence automatiquement.

Commandes de réconciliation

# Relancer la vérification des factures pending
php artisan codinfy:sync-pending-invoices

# Envoyer des rappels aux factures pending âgées
php artisan codinfy:send-invoice-reminders

# Surveiller les litiges paiement
php artisan codinfy:monitor-payment-disputes

# Traiter les payouts affiliés
php artisan codinfy:process-affiliate-payouts

5. Gestion des incidents support

Workflow ticket

  1. Ouvrir Admin > Support → vérifier les tickets non assignés.
  2. Assigner un agent selon la priorité et la catégorie.
  3. Vérifier le SLA restant (badge coloré sur le ticket).
  4. Répondre au client ou ajouter une note interne.
  5. Basculer le statut en pending, waiting_customer ou resolved.
  6. Si escalade nécessaire : ajouter note interne + contacter l'équipe Awa pour résumé contexte.

Awa — Support IA niveau 1

Awa gère automatiquement les questions fréquentes basées sur la FAQ et la base de connaissances. Elle peut :

  • Répondre aux questions de licence, téléchargements, facturation
  • Créer un résumé + tags auto sur les tickets entrants
  • Escalader avec contexte complet vers un agent humain

SLA par priorité

PrioritéDélai SLA
Urgente2 heures
Haute8 heures
Moyenne24 heures
Basse72 heures

Commandes SLA

# Vérifier les tickets hors SLA et envoyer des rappels agents
php artisan codinfy:monitor-support-sla

# Envoyer des rappels aux agents sur tickets non résolus
php artisan codinfy:send-support-reminders

6. Gestion des incidents sécurité

Workflow incident sécurité

  1. Créer une alerte système via Admin > Sécurité > Alertes.
  2. Identifier la source (IP, user-agent, pattern dans les audit logs).
  3. Blacklister l'IP, le domaine ou le purchase code concerné.
  4. Révoquer les sessions actives de l'utilisateur suspect.
  5. Vérifier les audit logs pour tracer l'étendue de l'incident.
  6. Documenter la résolution et marquer l'alerte comme résolue.

Blacklist

Renseigner le type (IP / domaine / email / purchase_code), la valeur, et la raison. La blacklist est vérifiée à chaque appel API de validation de licence.

Sessions admin

Révoquer une session ciblée ou toutes les sessions d'un utilisateur depuis Admin > Sécurité > Sessions actives. Agir immédiatement en cas de session suspecte (IP inconnue, pays inhabituel).

Clés RSA licences : si storage/keys/license_private.pem est compromis, régénérer immédiatement les clés (commande Artisan ou via le wizard réinstallation), redistribuer la nouvelle clé publique dans les SDK clients, et contacter tous les clients actifs.

7. Incidents licences

Licence non activée après achat

  1. Vérifier que la facture est en statut paid.
  2. Vérifier que la licence a été créée dans Admin > Licences.
  3. Si manquante : créer manuellement la licence liée à la facture.
  4. Envoyer les informations de licence au client.

Domaine invalide / refus de validation

  1. Vérifier le domaine enregistré sur la licence.
  2. Vérifier que le client n'est pas en période de grâce expirée.
  3. Si domaine légitime : mettre à jour le domaine principal depuis l'admin.
  4. Si anomalie détectée : vérifier le log license_checks.

Anomalie détectée

  1. Vérifier le rapport d'anomalies Admin > Licences > Anomalies.
  2. Analyser les IPs multiples et domaines non autorisés.
  3. Suspendre la licence si fraude avérée.
  4. Blacklister les IPs/domaines suspects.

Extension de support

  1. Admin > Licences → Étendre le support.
  2. Saisir le nombre de mois supplémentaires.
  3. La date support_expires_at est mise à jour automatiquement.

Commandes licences

# Détecter les anomalies de licence
php artisan codinfy:detect-license-anomalies

# Nettoyer les anciens logs de vérification
php artisan codinfy:cleanup-license-checks

# Envoyer les notifications de mise à jour produit
php artisan codinfy:send-update-notifications

8. CRM & alertes churn

Le CRM Codinfy calcule des scores A/B/C/D pour chaque client et génère des prédictions churn. Intervenir sur les clients à risque avant qu'ils churns.

Grade A (80–100)

Clients premium. Proposer des upgrades Agency, des packs support étendus, des accès anticipés aux nouvelles versions.

Grade B/C (40–79)

Clients actifs mais engagement variable. Cibler avec campagne email d'activation, rappels de mise à jour, offres promotionnelles.

Grade D (0–39)

Clients à risque de churn. Action immédiate : email personnalisé, contact support proactif, coupon de renouvellement.

Workflow alerte churn

  1. Le cron codinfy:process-churn-alerts identifie les prédictions churn ≥ 70%.
  2. Une alerte CRM est créée, visible dans Admin > CRM > Prédictions IA.
  3. Créer une campagne ciblée (email, push ou Awa) depuis Admin > CRM > Campagnes.
  4. Suivre le taux de conversion de la campagne dans le tableau CRM.

Commandes CRM

# Recalculer les scores clients (lancé automatiquement nightly)
php artisan codinfy:compute-crm-scores

# Calculer les cohortes de rétention (weekly)
php artisan codinfy:compute-cohorts

# Traiter les alertes churn et déclencher les automations
php artisan codinfy:process-churn-alerts

9. Référence complète — Commandes Artisan

CommandeFréquenceDescription
schedule:runToutes les minutes (cron)Orchestre toutes les tâches planifiées Laravel.
codinfy:compute-crm-scoresNuit (nightly)Recalcule les scores A/B/C/D et churn risk de tous les clients.
codinfy:compute-cohortsHebdomadaireAnalyse de cohortes de rétention et LTV.
codinfy:process-churn-alertsQuotidienIdentifie les prédictions churn ≥ 70% et déclenche les campagnes.
codinfy:sync-pending-invoicesToutes les heuresRe-vérifie le statut des factures pending auprès des gateways.
codinfy:send-invoice-remindersQuotidienRappels automatiques pour factures non réglées.
codinfy:monitor-support-slaToutes les heuresDétecte les tickets hors SLA et notifie les agents.
codinfy:send-support-remindersQuotidienRappels agents sur les tickets non résolus.
codinfy:monitor-payment-disputesQuotidienSurveille les litiges chargeback ouverts.
codinfy:monitor-privacy-requestsQuotidienVérifie les demandes RGPD/confidentialité pending.
codinfy:retry-failed-webhooksToutes les 30 minRejoue les livraisons de webhooks sortants en erreur.
codinfy:detect-license-anomaliesQuotidienDétecte les activations suspectes et génère des alertes.
codinfy:process-affiliate-payoutsHebdomadaireTraite les commissions affiliés approuvées.
codinfy:send-update-notificationsÀ la demandeNotifie les clients des nouvelles versions produits.
codinfy:generate-monthly-reportsMensuelGénère le rapport opérationnel CEO/équipe.
codinfy:cleanup-license-checksHebdomadairePurge les anciens logs de vérification licence.

Commandes techniques

# Tests
php artisan test

# Migrations
php artisan migrate --force

# Cache
php artisan config:clear && php artisan route:clear && php artisan view:clear

# Vérifier le scheduler
php artisan schedule:list

# Lancer le worker de queue (si Redis disponible)
php artisan queue:work --tries=3 --timeout=90

# Générer une clé d'application
php artisan key:generate

10. Maintenance & mise à jour de la plateforme

Avant mise à jour

  • Sauvegarder la base de données complète.
  • Copier .env et storage/keys/ en lieu sûr.
  • Prendre note des personnalisations (vues, configs).
  • Notifier l'équipe du créneau de maintenance.

Procédure de mise à jour

composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:clear
php artisan route:clear
php artisan view:clear

Après mise à jour

  • Tester le wizard /install (doit être désactivé).
  • Tester le checkout et la validation de licence.
  • Vérifier les cron jobs et le scheduler.
  • Envoyer un mail de test SMTP depuis l'admin.
  • Vérifier que les docs publiques sont à jour.

Rollback d'urgence

  • Restaurer le fichier .env sauvegardé.
  • Restaurer la base de données depuis le dump.
  • Re-déployer l'ancienne version du code.
  • Vérifier et nettoyer les caches.

11. Sauvegardes

Éléments critiques à sauvegarder

ÉlémentFréquence recommandéeNotes
Base de données MySQLQuotidienDump complet mysqldump, conserver 30 jours.
storage/keys/À chaque générationClés RSA licences — critiques et irremplaçables.
.envÀ chaque modificationVariables d'environnement et secrets.
storage/app/HebdomadaireFichiers uploadés (ZIP produits, documents).
public/docs/À chaque mise à jour docDocumentation HTML publiée.

Dump MySQL cPanel

# Via cPanel > phpMyAdmin > Export
# Ou en ligne de commande depuis le compte cPanel :
mysqldump -u cpaneluser_codinfy -p cpaneluser_codinfy > backup_$(date +%Y%m%d).sql

# Restauration
mysql -u cpaneluser_codinfy -p cpaneluser_codinfy < backup_20260101.sql

12. Escalade & contacts

Escalade interne

NiveauQui contacter
Support client N1Agent support Codinfy
Incident paiementÉquipe opérations + gateway
Incident sécuritéCEO + Lead Tech immédiatement
Incident infrastructureLead Tech + o2switch support

Contacts gatways

  • CinetPay : support.cinetpay.com
  • TouchPay / InTouch : intouch-group.com
  • KKiaPay : support.kkiapay.me
  • Stripe : support.stripe.com
  • PayPal : developer.paypal.com/support
  • o2switch : o2switch.fr/support
En cas de doute sur une action irréversible (suppression, remboursement massif, rotation de clé), toujours consulter le CEO ou le lead technique avant d'agir.