package models // GlobalRules = constantes communes à tous les utilisateurs. type GlobalRules struct { // ForfaitDimFerie = forfait par dimanche / jour férié (€/jour) ForfaitDimFerie float64 `json:"forfait_dim_ferie"` } // Profile = taux dépendants de la personne (grade, etc.) type Profile struct { ID string `json:"id"` Label string `json:"label"` Matricule string `json:"matricule,omitempty"` // ✅ pour auto-match avec l'agent importé // Taux horaires (€/h) T456 float64 `json:"t456"` // Interventions jour hors dimanche/férié T458 float64 `json:"t458"` // Interventions dimanche/jour férié T459 float64 `json:"t459"` // Interventions nuit hors dimanche/férié T471 float64 `json:"t471"` // Astreinte: heures totales du mois } // ProfileListItem = ce qu'on expose à l'UI (id + label + matricule pour auto-match) type ProfileListItem struct { ID string `json:"id"` Label string `json:"label"` Matricule string `json:"matricule,omitempty"` } // CalculateRequest = saisies mensuelles par l'utilisateur. type CalculateRequest struct { ProfileID string `json:"profileId"` // Quantités en heures Q456 float64 `json:"q456"` // heures interventions jour hors dim/férié Q458 float64 `json:"q458"` // heures interventions dimanche/férié Q459 float64 `json:"q459"` // heures interventions nuit hors dim/férié Q471 float64 `json:"q471"` // heures totales astreinte du mois // ✅ Nombre de dimanches / jours fériés "au forfait" (auto-rempli à l'import, modifiable) NbDimFerie int `json:"nbDimFerie"` } // Line = une ligne de la grille (456/458/459/471/480). type Line struct { Code string `json:"code"` Label string `json:"label"` Rate float64 `json:"rate"` Quantity float64 `json:"quantity"` Amount float64 `json:"amount"` Unit string `json:"unit"` // "h" ou "j" } // CalculateResponse = résultat du calcul (lignes + total) type CalculateResponse struct { Lines []Line `json:"lines"` Total float64 `json:"total"` }