Aller au contenu principal

Créer un nouveau module

Checklist de création

□ Créer le dossier du module sous Modules/<Nom>/
□ Ajouter le service provider
□ Créer routes/web.php et/ou routes/api.php
□ Enregistrer les routes dans le service provider
□ Créer les contrôleurs, requests, services, policies, modèles
□ Créer les migrations (préfixe de table obligatoire)
□ Créer les seeders si nécessaire
□ Enregistrer l'application dans core_applications
□ Créer les permissions dans Admin
□ Ajouter les entrées de menu
□ Configurer le sous-domaine dans Nginx / NPM
□ Écrire les tests (routes, permissions, validation, logique service)
□ Mettre à jour docs/architecture/modules.md
□ Créer l'entrée Admin → Applications → Paramètres avec bouton Logs

Convention de nommage

  • Nom singulier représentant la capacité métier
  • Stable une fois que les routes et permissions en dépendent
  • Nouveau module ne duplique pas les services partagés existants

Structure minimale

Modules/MonModule/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ └── Requests/
│ ├── Models/
│ ├── Policies/
│ ├── Providers/
│ │ └── MonModuleServiceProvider.php
│ └── Services/
├── database/
│ └── migrations/
├── resources/
│ └── views/
│ └── layouts/ # si layout spécifique
└── routes/
├── web.php
└── api.php

Enregistrement du scheduler

Si le module nécessite des tâches planifiées, les ajouter conditionnellement dans bootstrap/app.php :

->withSchedule(function (Schedule $schedule): void {
$app = Application::where('code', 'mon_module')->first();

if ($app && $app->getSetting('sync_enabled')) {
$schedule->command('monmodule:sync')
->everyFiveMinutes()
->withoutOverlapping()
->runInBackground();
}
})

Page Paramètres Admin obligatoire

Toute application métier doit avoir une page de paramètres dans Admin avec :

  • Formulaire de configuration (settings JSON)
  • Bouton "Logs d'exécution" → modale log
  • Référence : AnalysesSettingsController