82 lines
4.2 KiB
Go
82 lines
4.2 KiB
Go
package models
|
|
|
|
type PostalZone struct {
|
|
Name string `json:"name"`
|
|
MinAmount float64 `json:"min_amount"`
|
|
Codes []string `json:"codes"`
|
|
}
|
|
|
|
// PointsTier représente un palier du barème de points
|
|
// Si Max == 0, il n'y a pas de borne supérieure (illimité)
|
|
type PointsTier struct {
|
|
Min float64 `json:"min"`
|
|
Max float64 `json:"max"` // 0 = illimité
|
|
Points int `json:"points"`
|
|
}
|
|
|
|
// DaySchedule représente les horaires de livraison pour un jour de la semaine
|
|
type DaySchedule struct {
|
|
Enabled bool `json:"enabled"`
|
|
OpenTime string `json:"open_time"` // ex: "09:00"
|
|
CloseTime string `json:"close_time"` // ex: "20:00"
|
|
}
|
|
|
|
// DeliverySchedule représente les horaires de livraison pour chaque jour
|
|
type DeliverySchedule struct {
|
|
Monday DaySchedule `json:"monday"`
|
|
Tuesday DaySchedule `json:"tuesday"`
|
|
Wednesday DaySchedule `json:"wednesday"`
|
|
Thursday DaySchedule `json:"thursday"`
|
|
Friday DaySchedule `json:"friday"`
|
|
Saturday DaySchedule `json:"saturday"`
|
|
Sunday DaySchedule `json:"sunday"`
|
|
}
|
|
|
|
type PointsPool struct {
|
|
Key string `json:"key"` // identifiant interne (ex: "pool_0")
|
|
Name string `json:"name"` // nom affiché (ex: "Cannabis", "Accessoires")
|
|
Categories []string `json:"categories"` // catégories de produits assignées à ce pool
|
|
Tiers []PointsTier `json:"tiers"` // barème de points
|
|
}
|
|
|
|
// PenaltyTier représente un palier d'amende : à partir de MinCancel annulations, Amount est appliqué
|
|
type PenaltyTier struct {
|
|
MinCancel int `json:"min_cancel"` // nombre d'annulations à partir duquel ce palier s'applique
|
|
Amount int `json:"amount"` // montant de l'amende
|
|
}
|
|
|
|
// CategoryRoute associe un livreur à une ou plusieurs catégories de produits
|
|
type CategoryRoute struct {
|
|
DeliverymanUsername string `json:"deliveryman_username"`
|
|
Categories []string `json:"categories"`
|
|
}
|
|
|
|
// DeliveryModeConfig configure le mode d'assignation des livreurs
|
|
// Mode "single" → un seul livreur, toutes catégories confondues
|
|
// Mode "category_based" → chaque livreur gère ses catégories dédiées
|
|
type DeliveryModeConfig struct {
|
|
Mode string `json:"mode"` // "single" | "category_based"
|
|
CategoryRoutes []CategoryRoute `json:"category_routes"` // utilisé uniquement en mode category_based
|
|
}
|
|
|
|
// AppSettings contient les paramètres globaux de l'application
|
|
type AppSettings struct {
|
|
PenaltiesEnabled bool `json:"penalties_enabled"`
|
|
ShowAmendeScore bool `json:"show_amende_score"` // afficher le score d'amendes aux clients/cabine
|
|
PenaltyTiers []PenaltyTier `json:"penalty_tiers"` // barème des amendes (liste configurable)
|
|
PointsEnabled bool `json:"points_enabled"` // afficher/activer le système de points
|
|
PointsPools []PointsPool `json:"points_pools"` // types de points personnalisés
|
|
ReferralEnabled bool `json:"referral_enabled"` // activer/désactiver le système de parrainage
|
|
ReferralAmount float64 `json:"referral_amount"` // montant crédité par parrainage
|
|
CryptoPaymentEnabled bool `json:"crypto_payment_enabled"` // activer/désactiver le paiement crypto
|
|
CryptoOnly bool `json:"crypto_only"` // forcer le paiement crypto uniquement (pas d'espèces)
|
|
NowPaymentsAPIKey string `json:"nowpayments_api_key"` // clé API NowPayments
|
|
NowPaymentsIPNSecret string `json:"nowpayments_ipn_secret"` // secret IPN NowPayments
|
|
NowPaymentsCurrencies []string `json:"nowpayments_currencies"` // cryptos acceptées (ex: ["btc","eth","ltc"])
|
|
DeliverySchedule DeliverySchedule `json:"delivery_schedule"` // horaires de livraison par jour
|
|
PostalZones []PostalZone `json:"postal_zones"` // zones de livraison avec minimum de commande
|
|
TelegramBotToken string `json:"telegram_bot_token"` // token du bot Telegram (BotFather)
|
|
TelegramBotUsername string `json:"telegram_bot_username"` // username du bot (sans @)
|
|
DeliveryMode DeliveryModeConfig `json:"delivery_mode"` // mode d'assignation des livreurs
|
|
}
|