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