chore: refacto
This commit is contained in:
+30
-68
@@ -47,6 +47,36 @@ func main() {
|
||||
geoService := services.NewGeoService(db.Redis, db.RedisCtx)
|
||||
log.Println("✅ Service de géolocalisation initialisé")
|
||||
|
||||
// Initialisation du service Telegram
|
||||
telegramService := services.NewTelegramService()
|
||||
if telegramService.IsConfigured() {
|
||||
log.Println("✅ Service Telegram initialisé")
|
||||
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
|
||||
if err := telegramService.SetWebhook(webhookURL); err != nil {
|
||||
log.Printf("⚠️ [TELEGRAM] Erreur enregistrement webhook: %v", err)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.Println("ℹ️ Service Telegram désactivé (TELEGRAM_BOT_TOKEN non défini)")
|
||||
}
|
||||
|
||||
// Migration: ajout des colonnes telegram_chat_id
|
||||
database.MigrateAddTelegramColumns()
|
||||
|
||||
// Priorité DB > .env pour la config Telegram
|
||||
if dbSettings, err := database.GetSettings(); err == nil {
|
||||
telegramService.Reload(dbSettings.TelegramBotToken, dbSettings.TelegramBotUsername)
|
||||
if dbSettings.TelegramBotToken != "" {
|
||||
log.Printf("✅ [TELEGRAM] Config chargée depuis la DB (username: %s)", dbSettings.TelegramBotUsername)
|
||||
// Enregistrer le webhook si l'URL est configurée (et pas déjà fait depuis l'env)
|
||||
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
|
||||
if err := telegramService.SetWebhook(webhookURL); err != nil {
|
||||
log.Printf("⚠️ [TELEGRAM] Erreur enregistrement webhook (DB reload): %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// 🧹 NETTOYAGE INITIAL DES COMMANDES INVALIDES
|
||||
// ============================================
|
||||
@@ -128,7 +158,6 @@ func main() {
|
||||
c.Next()
|
||||
})
|
||||
|
||||
// Middleware NowPayments : injecte le client si crypto activé dans les settings
|
||||
r.Use(func(c *gin.Context) {
|
||||
settings, err := database.GetSettings()
|
||||
if err == nil && settings.CryptoPaymentEnabled && settings.NowPaymentsAPIKey != "" {
|
||||
@@ -146,74 +175,7 @@ func main() {
|
||||
// ============================================
|
||||
routes.SetupRoutes(r, database, geoService)
|
||||
|
||||
// ============================================
|
||||
// LANCEMENT DU SERVEUR
|
||||
// ============================================
|
||||
printServerInfo()
|
||||
|
||||
if err := r.Run(":8080"); err != nil {
|
||||
log.Fatalf("❌ Erreur au lancement du serveur : %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// printServerInfo affiche les infos du serveur au démarrage
|
||||
func printServerInfo() {
|
||||
log.Println("")
|
||||
log.Println("═══════════════════════════════════════════════════════════")
|
||||
log.Println("🚀 Serveur lancé sur http://localhost:8080")
|
||||
log.Println("═══════════════════════════════════════════════════════════")
|
||||
log.Println("")
|
||||
log.Println("📡 API Endpoints disponibles:")
|
||||
log.Println("")
|
||||
log.Println(" 🌍 PUBLIC:")
|
||||
log.Println(" GET /api/v1/health - Health check")
|
||||
log.Println(" GET /api/v1/products - Liste produits")
|
||||
log.Println("")
|
||||
log.Println(" 👤 CLIENTS:")
|
||||
log.Println(" POST /api/v1/auth/register - Inscription")
|
||||
log.Println(" POST /api/v1/auth/login - Connexion")
|
||||
log.Println(" POST /api/v1/checkout - ✅ PASSER COMMANDE (avec auto-assign)")
|
||||
log.Println(" GET /api/v1/my-commands - Mes commandes avec suivi")
|
||||
log.Println(" GET /api/v1/commands/:id/status - ✅ Statut temps réel")
|
||||
log.Println(" GET /api/v1/commands/:id/tracking - ✅ Suivi détaillé")
|
||||
log.Println(" POST /api/v1/commands/:id/approve - Confirmer livraison")
|
||||
log.Println("")
|
||||
log.Println(" 🚗 LIVREURS:")
|
||||
log.Println(" GET /api/v1/livreur/deliveries - ✅ Mes livraisons (SANS téléphone client)")
|
||||
log.Println(" GET /api/v1/livreur/deliveries/:id - ✅ Détail livraison filtrée")
|
||||
log.Println(" PUT /api/v1/livreur/deliveries/:id/status - MAJ statut (avec GPS)")
|
||||
log.Println(" POST /api/v1/livreur/location/update - MAJ position GPS")
|
||||
log.Println(" GET /api/v1/livreur/queue - Ma queue de livraisons")
|
||||
log.Println("")
|
||||
log.Println(" 🔐 ADMIN:")
|
||||
log.Println(" POST /api/v2/admin/auth/login - Connexion admin")
|
||||
log.Println(" GET /api/v2/admin/protected/orders - Toutes les commandes")
|
||||
log.Println(" POST /api/v2/admin/protected/orders/:id/auto-assign - ✅ Auto-assign GPS")
|
||||
log.Println(" POST /api/v2/admin/protected/commands/auto-assign-all - ✅ Assigner toutes")
|
||||
log.Println(" GET /api/v2/admin/protected/delivery/queues - Queues livreurs")
|
||||
log.Println("")
|
||||
log.Println("⏰ Workers & Services actifs:")
|
||||
log.Println(" - ✅ AutoAssignmentCron (5min) - Assignation backup")
|
||||
log.Println(" - ✅ QueueCleanupScheduler (5min) - 🧹 Nettoyage commandes invalides")
|
||||
log.Println(" - ✅ NotificationWorker (30s) - Notifications ETA")
|
||||
log.Println(" - ✅ StockCleanupWorker (5min) - Nettoyage stock")
|
||||
log.Println("")
|
||||
log.Println("🎯 Fonctionnalités activées:")
|
||||
log.Println(" 1. ✅ Auto-assignation au checkout (immédiate)")
|
||||
log.Println(" 2. ✅ Cron job backup (toutes les 5 min)")
|
||||
log.Println(" 3. ✅ Validation stricte avant ajout à la queue")
|
||||
log.Println(" 4. ✅ Nettoyage automatique des commandes invalides")
|
||||
log.Println(" 5. ✅ Vue livreur filtrée (sans téléphone)")
|
||||
log.Println(" 6. ✅ Vue client avec suivi temps réel")
|
||||
log.Println(" 7. ✅ Gestion automatique statut BUSY (queue >= 10)")
|
||||
log.Println("")
|
||||
log.Println("🔒 Règles de validation automatique:")
|
||||
log.Println(" - Username non vide ✓")
|
||||
log.Println(" - Adresse de livraison non vide ✓")
|
||||
log.Println(" - Coordonnées GPS valides (lat != 0, lng != 0) ✓")
|
||||
log.Println(" - Date de création valide ✓")
|
||||
log.Println(" - Prix total > 0 (recommandé) ✓")
|
||||
log.Println("")
|
||||
log.Println("═══════════════════════════════════════════════════════════")
|
||||
log.Println("")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user