Apparence
Modèle de données
Ce document décrit ce que l'application enregistre : une section par domaine, une table par entité, et pour chaque colonne son libellé métier, son type et ses règles. Il est produit à partir du code — les libellés français viennent des modèles Django eux-mêmes, donc ils disent ce que l'application fait, pas ce qu'elle devait faire.
Les tables sont celles de la base MySQL ; les colonnes suffixées _id portent une référence vers une autre table (colonne « Relations » de la section).
Vue d’ensemble
Comment lire une table
- Colonne : le nom technique en base, celui qui apparaît dans un export.
- Libellé : le nom métier, tel qu'affiché dans le back-office. Absent quand le code n'en déclare pas : la colonne se lit alors telle quelle.
- Obligatoire : « oui » si la saisie est exigée à la création.
- Description : l'aide affichée dans le back-office, les valeurs autorisées d'une liste de choix, la valeur par défaut, et l'unicité éventuelle.
Comptes et authentification
invitations de comptes — accounts_accountinvitation
Tri par défaut : next_attempt_at, created_at, pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
user_id | compte | int | oui | Valeur unique |
status | état | string(16) | oui | Valeurs : pending (En attente), processing (En cours), accepted (Accepté par le fournisseur), failed (Échec définitif), cancelled (Annulé) · Par défaut : pending |
origin | origine | string(16) | oui | Valeurs : automatic (Création du compte), manual (Action du back-office) · Par défaut : automatic |
requested_by_id | opérateur | int | non | — |
created_at | créé le | datetime | non | — |
requested_at | demandé le | datetime | oui | Par défaut : calculé à la création |
updated_at | mis à jour le | datetime | non | — |
next_attempt_at | prochaine tentative | datetime | oui | Par défaut : calculé à la création |
accepted_at | accepté le | datetime | non | — |
cycle | cycle d'envoi | int | oui | Par défaut : 1 |
cycle_attempts | tentatives du cycle | int | oui | Par défaut : 0 |
attempt_count | nombre total de tentatives | int | oui | Par défaut : 0 |
cancellation_reason | motif d'annulation | string(200) | non | — |
recipient | destinataire | string(254) | oui | Email professionnel de la fiche au moment de la demande. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
user | User | 1:1 | obligatoire | supprime aussi cette ligne |
requested_by | User | n:1 | optionnelle | vide le champ |
Règles en base
- Index sur
status+next_attempt_at
tentatives d'invitation — accounts_invitationattempt
Tri par défaut : -number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
invitation_id | — | int | oui | — |
number | numéro de tentative | int | oui | — |
cycle | cycle d'envoi | int | oui | — |
started_at | début | datetime | oui | Par défaut : calculé à la création |
finished_at | fin | datetime | non | — |
status | état | string(16) | oui | Valeurs : processing (En cours), accepted (Accepté par le fournisseur), failed (Échec) · Par défaut : processing |
error_code | code d'erreur | string(64) | non | — |
error_message | détail sûr | string(200) | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
invitation | AccountInvitation | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Unicité sur
invitation+number— contrainteunique_invitation_attempt
cadence des invitations — accounts_invitationdispatchstate
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | identifiant | int | auto | Clé technique, attribuée automatiquement |
next_batch_at | prochain lot autorisé | datetime | oui | Par défaut : calculé à la création |
Règles en base
- Condition imposée
(AND: ('pk', 1))— contraintesingle_invitation_dispatcher
Rôles et habilitations
rôles — roles_roleassignment
Tri par défaut : user__username, role__name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
user_id | compte | int | oui | — |
role_id | rôle | int | oui | — |
date_start | date de début | date | non | Vide = actif dès la création. |
date_end | date de fin | date | non | Vide = attribution permanente. |
created_at | — | datetime | non | — |
updated_at | — | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
user | User | n:1 | obligatoire | supprime aussi cette ligne |
role | Group | n:1 | obligatoire | supprime aussi cette ligne |
establishments | Establishment | n:n | facultative | — |
Audit
journal des actions — audit_actionlog
Tri par défaut : -created_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
actor_id | acteur | int | non | Compte à l'origine de l'action, s'il existe encore. |
actor_repr | identité de l'acteur | string(255) | oui | Identité figée au moment de l'action, conservée si le compte disparaît. |
verb | action | string(16) | oui | Valeurs : created (Création), updated (Modification), deleted (Suppression) |
content_type_id | type d'objet | int | oui | — |
object_id | identifiant de l'objet | string(255) | oui | — |
object_repr | représentation de l'objet | string(200) | oui | Libellé figé au moment de l'action. |
changes | modifications | json | oui | Valeurs avant et après, normalisées dans un format JSON stable. |
created_at | date de l'action | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
actor | User | n:1 | optionnelle | vide le champ |
content_type | ContentType | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Index sur
content_type+object_id
Jours fériés
jours fériés — holidays_publicholiday
Tri par défaut : date, zone.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
zone | — | string(32) | oui | Valeurs : metropole (Métropole), alsace-moselle (Alsace-Moselle), guadeloupe (Guadeloupe), guyane (Guyane), martinique (Martinique), mayotte (Mayotte), nouvelle-caledonie (Nouvelle-Calédonie), la-reunion (La Réunion), polynesie-francaise (Polynésie française), saint-barthelemy (Saint-Barthélemy), saint-martin (Saint-Martin), saint-pierre-et-miquelon (Saint-Pierre-et-Miquelon), wallis-et-futuna (Wallis-et-Futuna) · Par défaut : metropole |
date | — | date | oui | — |
label | libellé | string(100) | oui | — |
source | origine | string(8) | oui | « API gouv » est écrasé à chaque synchronisation. « Saisie manuelle » ne l'est jamais. · Valeurs : api (API gouv), manual (Saisie manuelle) · Par défaut : manual |
created_at | — | datetime | non | — |
updated_at | — | datetime | non | — |
Règles en base
- Unicité sur
zone+date— contrainteunique_holiday_per_zone_and_date
Établissements
équipes — establishment_division
Tri par défaut : name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
name | nom | string(120) | non | — |
manager_id | responsable | int | non | Le compte qui a créé cette équipe. Renseigné automatiquement, non réassignable. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
manager | User | n:1 | optionnelle | vide le champ |
establishments | Establishment | n:n | facultative | — |
établissements — establishment_establishment
Tri par défaut : name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
name | nom | string(120) | oui | Valeur unique |
hub_id | pôle | int | non | — |
payroll_code_id | code de paye | int | oui | — |
cegi_payroll_file_code | code dossier de paye CEGI | string(32) | non | Code dos_code utilisé pour rattacher les contrats importés depuis CEGI. · Valeur unique |
opening_time | heure d'ouverture | time | oui | — |
closing_time | heure de fermeture | time | oui | — |
color | couleur | string(7) | non | Repère visuel de l'établissement dans les plannings, au format #RRGGBB. Laisser vide pour la couleur par défaut. |
working_days | jours d'ouverture | json | oui | Jours où l'établissement accueille du public. · Par défaut : calculé à la création |
open_on_public_holidays | ouvert les jours fériés | boolean | oui | Coché, l'établissement accueille du public les jours fériés qui tombent sur un jour d'ouverture. · Par défaut : False |
day_count_basis | base de décompte | string(8) | oui | Convention de décompte des congés et absences. Indépendante des jours d'ouverture ci-dessus. · Valeurs : OUVRABLE (Jours ouvrables (lundi au samedi)), OUVRE (Jours ouvrés (lundi au vendredi)) · Par défaut : OUVRABLE |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
hub | Hub | n:1 | optionnelle | vide le champ |
payroll_code | PayrollCode | n:1 | obligatoire | interdite tant que cette ligne existe |
sites | Site | n:n | facultative | — |
pôles — establishment_hub
Tri par défaut : name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
name | nom | string(120) | oui | Valeur unique |
codes de paye — establishment_payrollcode
Tri par défaut : code.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
code | — | string(32) | oui | Valeur unique |
sites — establishment_site
Tri par défaut : name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
name | nom | string(120) | oui | Valeur unique |
address | adresse | string | oui | — |
Types de contrat
types de contrat — contract_types_contracttype
Tri par défaut : label.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
label | libellé | string(60) | oui | — |
cegi_code | code CEGI | string(32) | non | Code cont_cod qui identifie ce type dans les imports CEGI. · Valeur unique |
fixed_term | contrat à durée déterminée | boolean | non | Oui pour un contrat qui s'arrête à une date (CDD, intérim, stage, contrat d'accompagnement par le travail), non pour un contrat qui court jusqu'à nouvel ordre. À renseigner : un type laissé vide n'est compté dans aucune tuile de la page Utilisateurs et n'ouvre pas de congés d'ancienneté. |
externally_managed | contrat non géré par l'APAJH | boolean | oui | Coché pour un contrat porté par un tiers, l'intérim aujourd'hui. Le salarié reçoit le rôle Intérimaire, n'attend aucun matricule et n'a pas d'établissement de paye — c'est son agence qui le paie. · Par défaut : False |
outside_collective_agreement | hors convention collective (CCN-66) | boolean | oui | Coché pour un contrat qui ne relève pas de la CCN-66, l'agent polyvalent aujourd'hui. Seul le compteur de congés payés s'y ouvre, sans annualisation ni forfait jours, et le temps de travail y est plafonné à 35 h par semaine. · Par défaut : False |
active | actif | boolean | oui | Décoché pour retirer un type des nouveaux contrats sans supprimer l'historique des contrats déjà rattachés. · Par défaut : True |
Qualifications
qualifications — skills_skill
Tri par défaut : name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
name | qualification | string(150) | oui | Valeur unique |
Salariés
enfants — employee_child
Tri par défaut : -birth_date.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
birth_date | date de naissance | date | oui | — |
is_disabled | en situation de handicap | boolean | oui | Par défaut : False |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
contrats — employee_contract
Tri par défaut : -date_start, employee__staff_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
contract_type_id | type de contrat | int | oui | — |
employee_id | salarié | int | oui | — |
payroll_establishment_id | établissement de paye | int | non | Établissement dont le code de paye figure sur le bulletin. Vide sur un contrat d'intérim, qui n'entre pas dans la paye. |
cegi_contract_id | identifiant contrat CEGI | string(64) | non | Identifiant cont_id, unique pour un même salarié. |
job_title | fonction | string(80) | non | Intitulé du poste occupé (AS, IDE, AES…). |
job_code | code fonction | string(32) | non | — |
qualification | — | string(100) | non | Diplôme ou niveau reconnu au titre duquel la personne est employée (DEES, DEAS, AES…). Distinct de la fonction, qui est le poste occupé. |
qualification_code | code qualification | string(32) | non | — |
weekly_hours | heures hebdomadaires | decimal(4,2) | oui | Durée contractuelle de travail par semaine. C'est la référence des compteurs : les heures dues sur la semaine, le mois et l'année en découlent. |
hiring_reason_code | code motif d'embauche | string(32) | non | — |
hiring_reason | motif d'embauche | string(100) | non | — |
date_start | date de début | date | oui | — |
date_end | date de fin | date | non | Vide = contrat en cours (CDI, ou CDD dont le terme n'est pas saisi). |
trial_period_start | début de la période d'essai | date | non | — |
trial_period_end | fin de la période d'essai | date | non | Terme de la période d'essai, renouvellement compris. |
is_annualized | annualisé | boolean | oui | Temps de travail réparti sur l'année plutôt que sur la semaine. · Par défaut : False |
is_day_rate | forfait jours | boolean | oui | Décompte en jours travaillés sur l'année, sans horaire hebdomadaire. · Par défaut : False |
is_night_work | travail de nuit | boolean | oui | Par défaut : False |
is_on_call | astreinte | boolean | oui | Par défaut : False |
has_delegation_rights | droits de délégation | boolean | oui | Réservé aux RH. Ouvre le mandat de titulaire CSE du salarié et son crédit mensuel d'heures de délégation (24 h/mois par défaut). · Par défaut : False |
sundays_and_holidays_per_year | dimanches & jours fériés prévisionnels | int | non | Nombre de dimanches et jours fériés travaillés prévus sur l'année. Sans objet sur un contrat annualisé, dont le calendrier les porte déjà. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
contract_type | ContractType | n:1 | obligatoire | interdite tant que cette ligne existe |
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
payroll_establishment | Establishment | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
employee+cegi_contract_id— contrainteunique_cegi_contract_per_employee - Unicité sur
employee+payroll_establishment+date_start— contrainteunique_contract_per_employee_establishment_and_start
affectations — employee_divisionassignment
Tri par défaut : -date_start, division__name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
division_id | équipe | int | oui | — |
date_start | date de début | date | oui | — |
date_end | date de fin | date | non | Vide = affectation en cours. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
division | Division | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Unicité sur
employee+division+date_start— contrainteunique_assignment_per_employee_division_and_start
personnes à prévenir — employee_emergencycontact
Tri par défaut : employee, name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
name | nom | string(150) | oui | — |
relationship | lien | string(80) | oui | Ex. « conjoint », « fils ». |
phone | téléphone | string(20) | oui | — |
phone_secondary | téléphone secondaire | string(20) | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
salariés — employee_employee
Tri par défaut : user__last_name, user__first_name, staff_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
on_call_revision | révision des astreintes | int | oui | Version technique utilisée pour éviter les écrasements concurrents d'astreintes. · Par défaut : 0 |
user_id | compte | int | oui | Valeur unique |
staff_number | matricule | string(32) | non | Identifiant du salarié dans le logiciel de paie. Vide tant que la paie ne l'a pas généré, et définitivement vide pour un intérimaire, qui n'entre pas dans la paie. · Valeur unique |
main_working_place_id | lieu de travail principal | int | non | Optionnel pour l'instant ; sera requis à terme. |
civility | civilité | string(4) | non | Valeurs : MME (Mme), M (M.), MLLE (Mlle) |
last_name_birth | nom de naissance | string(150) | non | Nom de jeune fille, si différent du nom d'usage. |
birth_date | date de naissance | date | non | — |
nationality | nationalité | string(80) | non | — |
marital_status | situation familiale | string(16) | non | Valeurs : CELIBATAIRE (Célibataire), MARIEE (Mariée), PACSEE (Pacsée), DIVORCEE (Divorcée), VEUVE (Veuve), CONCUBINAGE (Concubinage) |
social_security_number | n° sécurité sociale | string(32) | non | 13 chiffres, ou 15 avec la clé de contrôle — qui est alors vérifiée. Les espaces sont tolérés. |
declared_sex | sexe déclaré | string(1) | non | Sexe F/H fourni par le logiciel de paie, distinct de la civilité. · Valeurs : F (Femme), H (Homme) |
rpps_number | n° RPPS | string(11) | non | 11 chiffres, dont le dernier est la clé de contrôle. |
rpps_not_applicable | RPPS non applicable | boolean | oui | Coché pour les postes ne nécessitant pas de n° RPPS (personnel non soignant). · Par défaut : False |
address | adresse | string(255) | non | — |
personal_phone | téléphone personnel | string(20) | non | — |
professional_phone | téléphone professionnel | string(20) | non | — |
mobile_phone | téléphone portable | string(20) | non | — |
personal_email | email personnel | string(254) | non | — |
professional_email | email professionnel | string(254) | non | — |
company_entry_date | date d'entrée dans l'entreprise | date | non | — |
recognized_seniority_date | date d'ancienneté reconnue | date | non | — |
dependent_children_count | nombre d'enfants à charge déclaré | int | non | Nombre fourni par CEGI, distinct des fiches détaillées des enfants. |
mutual_insurance | mutuelle | string(200) | non | Organisme et type de contrat (ex. « Harmonie Mutuelle · contrat collectif »). |
is_disabled_worker | salarié en situation de handicap | boolean | oui | Par défaut : False |
honorability_certificate_issued_at | date de remise de l'attestation d'honorabilité | date | non | — |
honorability_certificate_renewed_at | date de renouvellement de l'attestation d'honorabilité | date | non | — |
honorability_certificate_file | justificatif d'honorabilité | file(100) | non | PDF ou image (JPG, PNG), 10 Mo au plus. |
is_caregiver | statut aidant | boolean | oui | Par défaut : False |
caregiver_beneficiaries | personnes aidées | json | non | Noms des personnes aidées (ex. « père », « enfant »). · Par défaut : calculé à la création |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
user | User | 1:1 | obligatoire | interdite tant que cette ligne existe |
main_working_place | Establishment | n:1 | optionnelle | interdite tant que cette ligne existe |
secondary_working_places | Establishment | n:n | facultative | — |
skills | Skill | n:n | facultative | — |
alertes de renouvellement d'honorabilité — employee_honorabilityrenewalalert
Tri par défaut : -sent_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
deadline | échéance notifiée | date | oui | Date d'échéance de l'attestation au moment de l'envoi. |
threshold_days | seuil (en jours) | int | oui | Nombre de jours avant l'échéance auquel l'alerte a été déclenchée (60, 30 ou 15). |
sent_at | date d'envoi | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Unicité sur
employee+deadline+threshold_days— contrainteunique_honorability_alert_per_employee_deadline_threshold
Compteurs
associations absence-compteur — counters_absencecounterassociation
Tri par défaut : absence_type_id, priority, pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
absence_type_id | type d'absence | int | oui | — |
counter_type_id | type de compteur | int | oui | — |
is_active | active | boolean | oui | Par défaut : True |
unit | unité | string(1) | oui | Valeurs : j (Jours), h (Heures) |
quantity_basis | base de quantité | string(24) | oui | Valeurs : absence (Quantité de l'absence), theoretical_hours (Heures théoriques) · Par défaut : absence |
direction | sens | string(8) | oui | Valeurs : credit (Crédit), debit (Débit) · Par défaut : debit |
pending_destination | effet en attente | string(24) | oui | Valeurs : none (Aucun effet), acquired (Acquis), planned (Planifiés), taken (Pris), banked (Épargné), annualization_positive (Annualisation positive), annualization_negative (Annualisation négative) · Par défaut : planned |
validated_destination | effet validé | string(24) | oui | Valeurs : none (Aucun effet), acquired (Acquis), planned (Planifiés), taken (Pris), banked (Épargné), annualization_positive (Annualisation positive), annualization_negative (Annualisation négative) · Par défaut : planned |
effective_destination | effet réalisé | string(24) | oui | Valeurs : none (Aucun effet), acquired (Acquis), planned (Planifiés), taken (Pris), banked (Épargné), annualization_positive (Annualisation positive), annualization_negative (Annualisation négative) · Par défaut : taken |
priority | priorité | int | oui | La valeur la plus basse est prioritaire. · Par défaut : 100 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
absence_type | AbsenceType | n:1 | obligatoire | interdite tant que cette ligne existe |
counter_type | CounterType | n:1 | obligatoire | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
absence_type+counter_type— contrainteunique_absence_counter_association
soldes d'annualisation — counters_annualizationbalance
Tri par défaut : employee_id, year.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
counter_type_id | type de compteur | int | oui | — |
year | année | int | oui | — |
reference_hours | seuil annuel de référence | decimal(8,2) | non | Objectif après déduction des congés annuels paie, ancienneté comprise, et CT. Vide si le droit paie définitif ou le calendrier des jours fériés manque. |
reference_mode | origine de l'objectif | string(16) | oui | Valeurs : automatic (Calculé depuis le contrat et les congés), manual (Fixé par les RH), review (Reprise à vérifier par les RH), historical (Objectif historique conservé) · Par défaut : manual |
reference_details | détail du calcul de l'objectif | json | non | Périodes contractuelles, fériés, solidarité, droits individuels et réserve de congés. |
solidarity_status | journée de solidarité | string(24) | oui | Statut déclaré par les RH pour cette année. Effectuée dans l’association : ajout d’un cinquième des heures hebdomadaires moyennes à l’objectif automatique. Les autres statuts ajoutent zéro heure et ne déclarent aucun réalisé. · Valeurs : unknown (Non renseignée), not_completed (Non effectuée), completed_here (Effectuée dans l’association), completed_elsewhere (Déjà effectuée ailleurs) · Par défaut : unknown |
unplanned_leave_hours | réserve pour congés non posés | decimal(10,2) | non | Heures des droits utilisables encore non pris et non posés, déduites de la projection. |
hours_positive | heures + | decimal(8,2) | oui | Par défaut : 0 |
hours_negative | heures - | decimal(8,2) | oui | Par défaut : 0 |
consolidated_through | date de consolidation | date | non | Dernière date prise en compte dans les contributions journalières. |
annual_planned_hours | heures annuelles planifiées | decimal(10,2) | non | Total calculé des trames affectées, après retrait des congés déjà déduits du seuil. Actualisé avec les contributions journalières. |
future_adjustment_hours | écart prévisionnel des journées futures | decimal(10,2) | non | Écart entre le planning modifié futur et la trame, hors heures déjà acquises. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
counter_type | CounterType | n:1 | obligatoire | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
employee+year— contrainteunique_annualization_balance_per_employee_year
corrections d'annualisation — counters_annualizationcorrection
Tri par défaut : -corrected_at, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
balance_id | solde d'annualisation | int | oui | — |
positive_before | heures + avant | decimal(8,2) | oui | — |
positive_after | heures + après | decimal(8,2) | oui | — |
negative_before | heures - avant | decimal(8,2) | oui | — |
negative_after | heures - après | decimal(8,2) | oui | — |
effective_date | date d'effet | date | oui | Par défaut : calculé à la création |
reason | motif | string | oui | — |
corrected_by_id | corrigé par | int | non | — |
corrected_at | date de correction | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
balance | AnnualizationBalance | n:1 | obligatoire | interdite tant que cette ligne existe |
corrected_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
anciens barèmes d'annualisation — counters_annualizationreferenceschedule
Tri par défaut : -year.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
year | année | int | oui | Valeur unique |
legacy_thresholds | anciens seuils après congés | json | non | Archive des quatre seuils remplacés lors de la reprise ; sans effet sur le calcul. · Par défaut : calculé à la création |
gross_hours | ancienne base annuelle avant congés à 35 h | decimal(8,2) | non | Archive sans effet sur le calcul actuel, fondé sur les dates des contrats, les fériés de la période, la solidarité déclarée et les congés individuels. |
Règles en base
- Condition imposée
(OR: ('gross_hours__gt', 0), ('gross_hours__isnull', True))— contrainteannualization_schedule_gross_positive
soldes CET — counters_cetbalance
Tri par défaut : employee_id, year.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
counter_type_id | type de compteur | int | oui | — |
year | année | int | oui | — |
ceiling | plafond | decimal(8,2) | oui | — |
banked | épargné | decimal(8,2) | oui | Par défaut : 0 |
planned | planifiés | decimal(8,2) | oui | Par défaut : 0 |
taken | pris | decimal(8,2) | oui | Par défaut : 0 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
counter_type | CounterType | n:1 | obligatoire | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
employee+year— contrainteunique_cet_balance_per_employee_year
écritures automatiques de compteurs — counters_counteracquisition
Tri par défaut : employee_id, period_start, rule.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
counter_type_id | type de compteur | int | oui | — |
rule | règle appliquée | string(32) | oui | Valeurs : cp_monthly (Acquisition mensuelle des congés annuels), cp_year_end (Arrondi annuel des congés annuels), ct_quarterly (Acquisition trimestrielle des congés trimestriels), anc_yearly (Acquisition annuelle des congés d'ancienneté), em_yearly (Droit annuel pour enfant malade), jrs_yearly (Droit annuel de repos au forfait jours) |
period_start | début de période inclus | date | oui | — |
period_end | fin de période exclue | date | oui | — |
target_year | année cible | int | oui | — |
amount | montant | decimal(8,2) | oui | — |
created_at | date d'écriture | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
counter_type | CounterType | n:1 | obligatoire | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
employee+counter_type+rule+period_start— contrainteunique_counter_acquisition_period - Condition imposée
(AND: ('period_end__gt', F(period_start)))— contraintecounter_acquisition_period_order - Condition imposée
(AND: ('amount__gt', 0))— contraintecounter_acquisition_positive_amount - Index sur
employee+counter_type+target_year
corrections de compteurs — counters_countercorrection
Tri par défaut : -corrected_at, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
counter_id | compteur | int | oui | — |
acquired_before | acquis avant | decimal(8,2) | oui | — |
acquired_after | acquis après | decimal(8,2) | oui | — |
taken_before | pris avant | decimal(8,2) | oui | — |
taken_after | pris après | decimal(8,2) | oui | — |
planned_before | posés avant | decimal(8,2) | oui | — |
planned_after | posés après | decimal(8,2) | oui | — |
reason | motif | string | oui | — |
corrected_by_id | corrigé par | int | oui | — |
corrected_at | date de correction | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
counter | LeaveCounter | n:1 | obligatoire | interdite tant que cette ligne existe |
corrected_by | User | n:1 | obligatoire | interdite tant que cette ligne existe |
mouvements de compteurs — counters_countermovement
Tri par défaut : created_at, pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
source_event_id | événement source | int | oui | — |
absence_association_id | association d'absence | int | non | — |
time_association_id | association de temps | int | non | — |
leave_counter_id | compteur de droit | int | non | — |
cet_balance_id | solde CET | int | non | — |
annualization_balance_id | solde d'annualisation | int | non | — |
destination | — | string(24) | oui | Valeurs : none (Aucun effet), acquired (Acquis), planned (Planifiés), taken (Pris), banked (Épargné), annualization_positive (Annualisation positive), annualization_negative (Annualisation négative) |
direction | sens | string(8) | oui | Valeurs : credit (Crédit), debit (Débit) |
quantity | quantité | decimal(10,2) | oui | — |
unit | unité | string(1) | oui | Valeurs : j (Jours), h (Heures) |
actor_id | auteur | int | non | — |
reversal_of_id | annule le mouvement | int | non | Valeur unique |
created_at | date d'écriture | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
source_event | CounterSourceEvent | n:1 | obligatoire | interdite tant que cette ligne existe |
absence_association | AbsenceCounterAssociation | n:1 | optionnelle | interdite tant que cette ligne existe |
time_association | TimeCounterAssociation | n:1 | optionnelle | interdite tant que cette ligne existe |
leave_counter | LeaveCounter | n:1 | optionnelle | interdite tant que cette ligne existe |
cet_balance | CetBalance | n:1 | optionnelle | interdite tant que cette ligne existe |
annualization_balance | AnnualizationBalance | n:1 | optionnelle | interdite tant que cette ligne existe |
actor | User | n:1 | optionnelle | interdite tant que cette ligne existe |
reversal_of | CounterMovement | 1:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Condition imposée
(AND: ('quantity__gt', 0))— contraintecounter_movement_positive_quantity
événements sources de compteurs — counters_countersourceevent
Tri par défaut : -created_at, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
source_kind | nature de source | string(24) | oui | — |
source_id | identifiant source | string(64) | oui | — |
source_version | version source | int | oui | — |
employee_id | salarié | int | oui | — |
status | état source | string(24) | oui | — |
fingerprint | empreinte | string(64) | oui | — |
payload | contenu source | json | oui | — |
actor_id | auteur | int | non | — |
created_at | date de traitement | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | interdite tant que cette ligne existe |
actor | User | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
source_kind+source_id+source_version— contrainteunique_counter_source_version - Index sur
source_kind+source_id+-source_version
types de compteurs — counters_countertype
Tri par défaut : display_category, display_order, code.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
code | — | string(32) | oui | Identifiant technique stable. Il ne peut plus être modifié après création. · Valeur unique |
label | libellé | string(160) | oui | — |
unit | unité | string(1) | oui | Valeurs : j (Jours), h (Heures) |
display_category | catégorie d'affichage | string(16) | oui | Valeurs : work_time (Temps de travail), leave (Congés), hours (Compteurs en heures), other (Autres) |
validity_cycle | cycle de validité | string(16) | oui | Valeurs : annual (Annuel), quarterly (Trimestriel), monthly (Mensuel), none (Sans échéance) |
management_mode | mode de gestion | string(16) | oui | Valeurs : automatic (Automatique), manual (Manuel) |
requires_validation | validation RH requise | boolean | oui | Le droit reste inutilisable jusqu'à une décision RH explicite. · Par défaut : False |
default_ceiling | plafond par défaut | decimal(8,2) | non | Valeur proposée par défaut. Laissez vide lorsqu'aucun plafond ne s'applique. |
display_order | ordre d'affichage | int | oui | — |
is_active | actif | boolean | oui | Un type archivé reste visible dans l'historique mais ne peut plus être attribué. · Par défaut : False |
is_absence_consumable | consommable par une absence | boolean | oui | Un compteur consommable actif doit être relié à au moins un motif d'absence actif. AN et HS sont des compteurs techniques non consommables. · Par défaut : True |
Règles en base
- Index sur
display_category+display_order+code
opérations d'heures de délégation — counters_delegationhouroperation
Tri par défaut : -created_at, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
kind | opération | string(16) | oui | Valeurs : share (Partage), carryover (Report) |
donor_id | donneur | int | oui | — |
beneficiary_id | bénéficiaire | int | oui | — |
source_period | mois source | date | oui | Premier jour du mois dont proviennent les heures. |
target_period | mois bénéficiaire | date | oui | Premier jour du mois crédité. |
effective_date | date prévue du report ou du partage | date | oui | — |
employer_informed_on | employeur informé le | date | oui | — |
quantity | nombre d'heures | decimal(8,2) | oui | — |
reason | motif | string | non | — |
source_reference | référence du formulaire | string(160) | non | Référence textuelle du formulaire signé conservé hors application. |
status | état | string(16) | oui | Valeurs : applied (Appliquée), cancelled (Annulée et compensée) · Par défaut : applied |
created_by_id | saisi par | int | oui | — |
created_at | saisi le | datetime | non | — |
cancelled_by_id | annulé par | int | non | — |
cancelled_at | annulé le | datetime | non | — |
cancellation_reason | motif d'annulation | string | non | — |
version | — | int | oui | Par défaut : 1 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
donor | Employee | n:1 | obligatoire | interdite tant que cette ligne existe |
beneficiary | Employee | n:1 | obligatoire | interdite tant que cette ligne existe |
created_by | User | n:1 | obligatoire | interdite tant que cette ligne existe |
cancelled_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Condition imposée
(AND: ('quantity__gt', 0))— contraintedelegation_operation_positive_quantity
compteurs de congés/heures — counters_leavecounter
Tri par défaut : employee_id, period_start, kind_id.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
kind_id | type | int | oui | — |
year | année | int | oui | Année historique, synchronisée avec le début de la période. |
period_start | début de période | date | oui | — |
period_end | fin de période | date | oui | — |
acquired | acquis | decimal(8,2) | oui | Par défaut : 0 |
entitlement_source | provenance de l'acquis | string(16) | oui | Valeurs : local (SIRH), payroll (Paie CEGI), historical (Historique conservé) · Par défaut : local |
annual_entitlement_override | droit annuel fixé par les RH | decimal(8,2) | non | Total annuel CT retenu pour l'objectif d'annualisation. Remplace la simulation ; vide = acquisition automatique. |
taken | pris | decimal(8,2) | oui | Par défaut : 0 |
planned | posés | decimal(8,2) | oui | Quantité déjà planifiée, pas encore prise. · Par défaut : 0 |
state | état du droit | string(24) | oui | Valeurs : not_applicable (Non applicable), not_open (Applicable, non ouvert), open (Ouvert), pending (En attente de validation), validated (Validé), refused (Refusé), expired (Expiré) · Par défaut : open |
assignment_mode | mode d'attribution | string(16) | oui | Valeurs : automatic (Automatique), manual (Manuelle) · Par défaut : manual |
assignment_reason | motif d'attribution | string | non | Raison métier conservée avec l'attribution ou le déblocage. |
assigned_at | date d'attribution | datetime | oui | Par défaut : calculé à la création |
assigned_by_id | attribué par | int | non | — |
opened_at | date d'ouverture | datetime | non | — |
opening_reason | motif d'ouverture | string | non | — |
decision_at | date de décision | datetime | non | — |
decision_by_id | décidé par | int | non | — |
decision_reason | motif de décision | string | non | — |
version | — | int | oui | Version utilisée pour empêcher l'écrasement d'une décision concurrente. · Par défaut : 1 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
kind | CounterType | n:1 | obligatoire | interdite tant que cette ligne existe |
assigned_by | User | n:1 | optionnelle | vide le champ |
decision_by | User | n:1 | optionnelle | vide le champ |
Règles en base
- Unicité sur
employee+kind+period_start+period_end— contrainteunique_counter_employee_type_period - Condition imposée
(AND: ('period_end__gte', F(period_start)))— contrainteleave_counter_period_order
rappels de congés — counters_leavereminder
Tri par défaut : -sent_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
kind | rappel | string(20) | oui | Valeurs : rest_days_expiry (JRS à poser avant la fin de la période), main_leave (Congé principal non posé) |
deadline | échéance rappelée | date | oui | — |
threshold_days | seuil (en jours) | int | oui | Nombre de jours avant l'échéance au moment de l'envoi. |
sent_at | date d'envoi | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Unicité sur
employee+kind+deadline+threshold_days— contrainteunique_leave_reminder_per_employee_kind_deadline_threshold
variations des droits à congés paie — counters_payrollleavechange
Tri par défaut : -created_at, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
entitlement_id | droit paie | int | oui | — |
previous_days | ancien montant | decimal(8,2) | oui | — |
acquired_days | nouveau montant | decimal(8,2) | oui | — |
delta_days | écart | decimal(8,2) | oui | — |
snapshot_at | date source de l'extraction | datetime | oui | — |
batch_id | lot | int | non | — |
source_checksum | empreinte du lot | string(64) | oui | — |
created_at | enregistré le | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
entitlement | PayrollLeaveEntitlement | n:1 | obligatoire | interdite tant que cette ligne existe |
batch | ImportBatch | n:1 | optionnelle | vide le champ |
droits à congés annuels paie — counters_payrollleaveentitlement
Tri par défaut : employee_id, usage_year.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
usage_year | année de prise | int | oui | — |
status | état du droit paie | string(16) | oui | Valeurs : accruing (En cours d'acquisition), final (Définitif) |
acquired_days | total acquis, ancienneté comprise | decimal(8,2) | oui | — |
source | provenance | string(16) | oui | Par défaut : CEGI |
snapshot_at | date source de l'extraction | datetime | oui | — |
batch_id | dernier lot | int | non | — |
source_checksum | empreinte du dernier lot | string(64) | oui | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
batch | ImportBatch | n:1 | optionnelle | vide le champ |
Règles en base
- Unicité sur
employee+usage_year— contrainteunique_payroll_leave_year - Condition imposée
(AND: ('acquired_days__gte', 0))— contraintepayroll_leave_nonnegative
mandats représentatifs — counters_representativemandate
Tri par défaut : employee_id, date_start, kind.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
kind | mandat | string(24) | oui | Valeurs : cse_titular (Titulaire CSE), cse_secretary (Secrétaire CSE), cse_treasurer (Trésorier CSE), cse_substitute (Suppléant CSE), union_delegate (Délégué syndical), employee_advisor (Conseiller du salarié) |
is_cssct | mission CSSCT | boolean | oui | Réservée au suppléant CSE ; son crédit mensuel total passe alors à 8 heures. · Par défaut : False |
date_start | début du mandat | date | oui | — |
date_end | fin du mandat | date | non | — |
reason | motif ou décision RH | string | non | Décision, élection ou changement de situation à l'origine du mandat. |
source_reference | référence du justificatif | string(160) | non | Référence textuelle du procès-verbal, mandat ou document conservé hors application. |
created_by_id | créé par | int | non | — |
updated_by_id | modifié par | int | non | — |
created_at | créé le | datetime | non | — |
updated_at | modifié le | datetime | non | — |
version | — | int | oui | Empêche une modification concurrente d'écraser une décision RH. · Par défaut : 1 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | interdite tant que cette ligne existe |
created_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
updated_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Condition imposée
(OR: ('date_end__isnull', True), ('date_end__gte', F(date_start)))— contrainterepresentative_mandate_period_order - Index sur
employee+date_start+date_end
associations temps-compteur — counters_timecounterassociation
Tri par défaut : event_kind, priority, pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
event_kind | événement | string(24) | oui | Valeurs : realized_time (Temps réalisé), recovery_earned (Récupération acquise), overtime_approved (Heures supplémentaires validées) |
counter_type_id | type de compteur | int | oui | — |
is_active | active | boolean | oui | Par défaut : False |
unit | unité | string(1) | oui | Valeurs : j (Jours), h (Heures) |
direction | sens | string(8) | oui | Valeurs : credit (Crédit), debit (Débit) · Par défaut : credit |
destination | — | string(24) | oui | Valeurs : none (Aucun effet), acquired (Acquis), planned (Planifiés), taken (Pris), banked (Épargné), annualization_positive (Annualisation positive), annualization_negative (Annualisation négative) |
priority | priorité | int | oui | Par défaut : 100 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
counter_type | CounterType | n:1 | obligatoire | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
event_kind+counter_type— contrainteunique_time_counter_association
Moteur de règles
groupes de conflit — rules_engine_hitgroup
Tri par défaut : code.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
code | — | string(64) | oui | Identifiant technique du groupe, ex. daily_duration. · Valeur unique |
label | libellé | string(120) | non | Nom lisible du groupe. |
policy | politique | string(20) | oui | Que faire si plusieurs règles de ce groupe se déclenchent en même temps : ne garder que la plus grave, ou toutes les afficher. · Valeurs : priority (La plus sévère seulement), collect (Toutes les alertes déclenchées) · Par défaut : priority |
règles — rules_engine_rule
Tri par défaut : alert_id, code.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
code | identifiant | string(64) | oui | Identifiant unique de cette règle, ex. apajh.AL-A01. À choisir une fois pour toutes : il ne doit plus changer une fois la règle utilisée. · Valeur unique |
alert_id | ID alerte | string(20) | non | Le numéro de l'alerte dans le document source (ex. AL-A01), pour retrouver facilement la règle correspondante. Purement informatif. |
label | libellé | string(200) | oui | Le nom de la règle tel qu'il apparaît dans le référentiel, ex. « Dépassement durée quotidienne 10h ». |
family | type de contrôle | string(64) | oui | Le contrôle appliqué (durée quotidienne, repos, heures supplémentaires...). Chaque type a ses propres paramètres à renseigner ci-dessous — voir le README de l'application. · Valeurs : absence_event_placement (absence_event_placement), absence_overlap_prohibition (absence_overlap_prohibition), annual_accrual (annual_accrual), annual_overtime_contingent (annual_overtime_contingent), annual_overtime_premium_and_cap (annual_overtime_premium_and_cap), annual_status_entitlement (annual_status_entitlement), annual_worked_days_max (annual_worked_days_max), complementary_hours_contract_quota_max (complementary_hours_contract_quota_max), consecutive_rest_days (consecutive_rest_days), daily_amplitude_max (daily_amplitude_max), daily_effective_excess_accrual (daily_effective_excess_accrual), daily_effective_max (daily_effective_max), daily_rest_minimum (daily_rest_minimum), daily_rest_reduced (daily_rest_reduced), daily_sequence_bounds (daily_sequence_bounds), event_accrual (event_accrual), event_amount_limit (event_amount_limit), event_attribute_constraint (event_attribute_constraint), event_count_limit (event_count_limit), event_deadline (event_deadline), fixed_date_deadline (fixed_date_deadline), fixed_presence_windows (fixed_presence_windows), fixed_window_placement (fixed_window_placement), holiday_worked (holiday_worked), midday_break_duration (midday_break_duration), monthly_accrual (monthly_accrual), monthly_presence_accrual (monthly_presence_accrual), night_break_minimum (night_break_minimum), night_hours_premium (night_hours_premium), night_worker_status (night_worker_status), rolling_average_weekly_max (rolling_average_weekly_max), rolling_weekday_off_minimum (rolling_weekday_off_minimum), schedule_pattern_status (schedule_pattern_status), veille_slot_max (veille_slot_max), weekly_effective_max (weekly_effective_max), weekly_overtime_tiers (weekly_overtime_tiers), weekly_rest_pattern (weekly_rest_pattern), weekly_worked_days_max (weekly_worked_days_max), work_nature_period_count_limit (work_nature_period_count_limit) |
effect | niveau | string(20) | oui | Le niveau de gravité affiché à l'utilisateur quand la règle se déclenche. · Valeurs : information (Information), alert (Alerte), strong_alert (Alerte forte), blocking (Bloquant) |
parameters | paramètres | json | non | Les valeurs de seuil de la règle (ex. le nombre d'heures maximum), au format attendu par le type de contrôle choisi ci-dessus — voir le README de l'application pour un exemple complet. · Par défaut : calculé à la création |
population | population concernée | json | non | Qui est concerné par cette règle. Laisser vide pour que la règle s'applique à tout le monde — voir le README pour les critères possibles (durée du contrat, temps partiel...). · Par défaut : calculé à la création |
derogation_acknowledgment | accusé de réception requis | boolean | oui | À cocher si la règle peut être outrepassée avec un simple accusé de réception. · Par défaut : False |
derogation_motif_required | motif requis | boolean | oui | À cocher si un motif doit être saisi pour déroger à cette règle. · Par défaut : False |
derogation_compensation_counter | compteur de compensation | string(60) | non | Le compteur à créditer en compensation d'une dérogation, si applicable. |
source_title | texte source | string(200) | non | Le texte légal ou conventionnel sur lequel s'appuie la règle, ex. « Code du travail L3121-18 ». |
source_href | lien source | string(200) | non | Un lien vers ce texte, si disponible (ex. Légifrance). |
valid_from | valide à partir de | date | non | Vide = pas de date de début. |
valid_to | valide jusqu'à | date | non | Vide = pas de date de fin. Si renseignée, la règle ne s'applique plus à partir de cette date. |
hit_group_id | groupe de conflit | int | non | À renseigner si plusieurs règles peuvent se déclencher en même temps sur le même constat (ex. dépassement à 10h et à 12h) : le groupe décide si on garde la plus grave, ou toutes. |
user_message | message utilisateur | string | non | Le message affiché à l'utilisateur quand la règle se déclenche. |
required_action | action requise | string(200) | non | Ce que l'utilisateur doit faire quand la règle se déclenche, ex. « Saisir un motif ». |
traceability_note | traçabilité | string(200) | non | Ce qui est conservé comme preuve quand la règle se déclenche, ex. « Motif + validateur + horodatage ». |
is_active | active | boolean | oui | Décochez pour désactiver la règle sans la supprimer. · Par défaut : True |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
hit_group | HitGroup | n:1 | optionnelle | interdite tant que cette ligne existe |
Absences
absences — absences_absence
Tri par défaut : -date_start, employee__staff_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
type_id | type d'absence | int | oui | — |
date_start | premier jour | date | oui | Premier jour de l'absence, inclus. |
date_end | dernier jour | date | oui | Dernier jour de l'absence, inclus. Sur une seule journée, reprenez la date de début. |
half_start | à partir de | string(16) | oui | La demi-journée où l'absence commence. « Après-midi » retire une demi-journée au décompte du premier jour. · Valeurs : morning (Matin), afternoon (Après-midi) · Par défaut : morning |
half_end | jusqu'à | string(16) | oui | La demi-journée où l'absence finit. « Matin » retire une demi-journée au décompte du dernier jour. · Valeurs : morning (Matin), afternoon (Après-midi) · Par défaut : afternoon |
time_start | heure de début | time | non | Réservé aux types saisis en heures. À laisser vide sur un type en jours. |
time_end | heure de fin | time | non | Réservé aux types saisis en heures. À laisser vide sur un type en jours. |
comment | commentaire | string | non | Libre — la précision que le type d'absence ne porte pas. |
status | état technique | string(24) | oui | « En attente » tant que la demande n'est pas tranchée. Une absence déclarée par un manager est validée d'emblée : elle ne passe par la file que si elle y est mise en attente. · Valeurs : pending (En attente), validated (Validée), refused (Refusée), cancellation_pending (Annulation demandée), cancelled (Annulée) · Par défaut : validated |
version | — | int | oui | Version de source utilisée pour garantir l'idempotence des compteurs. · Par défaut : 1 |
decision_reason | motif de la décision | string | non | Obligatoire au refus, et sur une validation qui accorde autre chose que ce qui a été demandé — c'est ce que le salarié lira. |
decided_by_id | décidé par | int | non | Le compte qui a validé ou refusé la demande. |
decided_at | décidé le | datetime | non | Le moment où la demande a été validée ou refusée. |
cancellation_reason | motif de la demande d'annulation | string | non | Ce que le salarié a écrit en demandant l'annulation d'une absence accordée. |
cancellation_requested_at | annulation demandée le | datetime | non | Le moment où le salarié a demandé l'annulation de cette absence accordée. |
filed_at | déposée le | datetime | non | Le moment où l'absence a été saisie — pour une demande, celui où le salarié l'a déposée. Vide sur les absences antérieures à ce champ. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
type | AbsenceType | n:1 | obligatoire | interdite tant que cette ligne existe |
decided_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Index sur
employee+date_start - Index sur
status+date_start
catégories d'absence — absences_absencecategory
Tri par défaut : position, label.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
label | libellé | string(80) | oui | — |
parent_id | catégorie parente | int | non | Vide = catégorie de premier niveau. Renseigné = sous-catégorie. |
position | ordre | int | oui | Ordre d'affichage à égalité de niveau. Les libellés se rangent ensuite. · Par défaut : 0 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
parent | AbsenceCategory | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
parent+label— contrainteunique_absence_category_per_parent
justificatifs d'absence — absences_absencedocument
Tri par défaut : uploaded_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
absence_id | — | int | oui | — |
file | fichier | file(100) | oui | PDF ou image (JPG, PNG), 10 Mo au plus. |
uploaded_at | déposé le | datetime | non | — |
uploaded_by_id | déposé par | int | non | Le compte qui a déposé la pièce. Vide si ce compte a été supprimé depuis. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
absence | Absence | n:1 | obligatoire | supprime aussi cette ligne |
uploaded_by | User | n:1 | optionnelle | vide le champ |
types d'absence — absences_absencetype
Tri par défaut : category__position, position, label.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
label | nom | string(120) | oui | — |
code | — | string(8) | oui | Badge affiché dans la case du planning — 2 à 4 caractères en pratique, la case est étroite. · Valeur unique |
cegi_code | code CEGI | string(32) | non | Réservé à un futur flux d'absences CEGI. Le flux d'import actuel ne porte que des personnes et des contrats : ce champ reste vide. · Valeur unique |
category_id | catégorie | int | oui | Catégorie ou sous-catégorie de classement — sert à regrouper et filtrer. |
unit | unité de saisie | string(8) | oui | En jours, ou en heures. Un type en jours se prend aussi à la demi-journée, sauf si « Demi-journée possible » est décoché. · Valeurs : day (Jour), hours (Heures) · Par défaut : day |
allows_half_day | demi-journée possible | boolean | oui | Décoché = ce motif se pose à la journée entière, jamais au matin ni à l'après-midi. Sans objet pour un type en heures. · Par défaut : True |
is_splittable | fractionnable | boolean | oui | Décoché = le droit doit être pris en une seule période continue. Contrôlé sur l'année civile, en avertissement. · Par défaut : True |
annual_cap | plafond annuel | decimal(6,2) | non | Quantité maximale sur l'année civile (du 1ᵉʳ janvier au 31 décembre), dans l'unité du type. Vide = pas de plafond. |
cap_severity | dépassement du plafond | string(8) | oui | Ce qui se passe au dépassement. Sans objet si aucun plafond n'est défini. · Valeurs : warn (Avertir), block (Refuser) · Par défaut : warn |
is_paid | rémunérée | boolean | oui | Cochée dès qu'une rémunération existe, même partielle (IJSS, complément employeur). · Par défaut : True |
annualization_effect | effet sur l'annualisation | string(8) | oui | Les absences rémunérées et non rémunérées reconstituent les heures prévues couvertes. Un congé déjà déduit du seuil annuel retire ces heures du planning sans les reconstituer. Une absence imputée sur l'annualisation ne les reconstitue pas non plus mais les laisse dues : l'écart est débité du solde. · Valeurs : none (Sans effet), paid (Rémunérée), unpaid (Non rémunérée), excluded (Déjà déduite du seuil annuel), recovery (Imputée sur l'annualisation) · Par défaut : none |
supporting_documents | justificatifs attendus | string | non | Pièces à contrôler avant validation, lorsqu'elles sont requises. |
validation_requirements | validation requise | string | non | Décision ou rôle attendu avant que l'absence soit utilisable. |
active | actif | boolean | oui | Décoché pour retirer un type des nouvelles absences sans supprimer celles qui le portent déjà. · Par défaut : True |
position | ordre | int | oui | Ordre d'affichage dans une catégorie. Les libellés se rangent ensuite. · Par défaut : 0 |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
category | AbsenceCategory | n:1 | obligatoire | interdite tant que cette ligne existe |
contract_types | ContractType | n:n | facultative | — |
populations | Population | n:n | facultative | — |
Règles en base
- Unicité sur
category+label— contrainteunique_absence_type_per_category
rappels de justificatifs manquants — absences_missingdocumentreminder
Tri par défaut : -sent_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
absence_id | — | int | oui | Valeur unique |
sent_at | date d'envoi | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
absence | Absence | 1:1 | obligatoire | supprime aussi cette ligne |
populations concernées — absences_population
Tri par défaut : label.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
label | libellé | string(80) | oui | Valeur unique |
active | actif | boolean | oui | Décoché pour retirer la population des nouveaux types sans la supprimer de ceux qui la portent déjà. · Par défaut : True |
Évènements
évènements — events_event
Tri par défaut : date_start, start_time, title.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
title | titre | string(200) | oui | — |
type_id | — | int | oui | — |
date_start | date de début | date | oui | Premier jour de l'évènement, inclus. |
date_end | date de fin | date | oui | Dernier jour de l'évènement, inclus. |
start_time | heure de début | time | non | Laissez les deux heures vides pour un évènement à la journée. |
end_time | heure de fin | time | non | Obligatoire avec l'heure de début et strictement postérieure. |
location | lieu | string(255) | non | Texte libre, par exemple « FAM Les Cigales · Salle Lavande ». |
establishment_id | établissement de rattachement | int | non | Optionnel pour les évènements transversaux ou externes. |
responsible_id | responsable | int | non | Salarié responsable de l'organisation et des alertes de conflit. |
description | — | string | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
type | EventType | n:1 | obligatoire | interdite tant que cette ligne existe |
establishment | Establishment | n:1 | optionnelle | vide le champ |
responsible | Employee | n:1 | optionnelle | vide le champ |
participants | Employee | n:n | facultative | — |
Règles en base
- Index sur
date_start+date_end
types d'évènement — events_eventtype
Tri par défaut : position, label.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
label | libellé | string(80) | oui | Valeur unique |
color | couleur | string(7) | oui | Couleur du repère visuel au format #RRGGBB. |
is_active | actif | boolean | oui | Décochez pour ne plus proposer ce type lors de la création d'un évènement. · Par défaut : True |
position | ordre | int | oui | Ordre d'affichage dans les filtres et les listes de choix. · Par défaut : 0 |
Postes
postes — postes_poste
Tri par défaut : category, pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
user_id | utilisateur | int | oui | Le manager propriétaire de ce poste — sa bibliothèque personnelle. |
category | catégorie | string(20) | oui | Moment de la journée — détermine le code affiché et sert de filtre dans la bibliothèque. · Valeurs : matin (Matin), apres_midi (Après-midi), soir (Soir), nuit (Nuit), journee (Journée) |
color | couleur | string(7) | non | Vide si le poste n'a pas de couleur : ses cases de trame prennent alors la teinte de sa catégorie, sauf couleur choisie sur la case. · Valeurs : #DCEFEC (#DCEFEC), #E0F2FE (#E0F2FE), #1E3A5F (#1E3A5F), #E4F4D4 (#E4F4D4), #FFD9B0 (#FFD9B0), #CDEDE0 (#CDEDE0), #E3D4F5 (#E3D4F5), #FBF1C7 (#FBF1C7), #FBE0E8 (#FBE0E8), #E0E4CC (#E0E4CC) |
break_start_time | début de pause | time | non | Une pause rémunérée : elle ne réduit pas le temps de travail. |
break_end_time | fin de pause | time | non | Laissez les deux heures de pause vides si le poste n'en comporte pas. Sinon, la pause doit tenir à l'intérieur d'un des créneaux, bornes exclues. Une pause non rémunérée n'existe pas : c'est l'intervalle entre deux créneaux. |
archived_at | archivé le | datetime | non | Renseigné à la place d'une suppression quand ce poste est encore référencé par au moins une case de trame — il disparaît de la bibliothèque et des sélecteurs, mais reste résolvable là où il est déjà utilisé. Voir PosteViewSet.perform_destroy. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
user | User | n:1 | obligatoire | supprime aussi cette ligne |
créneaux de poste — postes_posteslot
Tri par défaut : poste, position.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
poste_id | — | int | oui | — |
position | ordre | int | oui | Rang du créneau dans la journée, à partir de 0. |
start_time | heure de début | time | oui | — |
end_time | heure de fin | time | oui | Peut être antérieure à l'heure de début : le créneau se termine le lendemain (ex. poste de nuit). |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
poste | Poste | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Unicité sur
poste+position— contraintepostes_slot_unique_position
Trames
trames — trames_trame
Tri par défaut : name.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
user_id | utilisateur | int | oui | Le manager propriétaire de cette trame — sa bibliothèque personnelle. |
name | nom | string(200) | oui | — |
weeks_count | nombre de semaines | int | oui | Longueur du cycle avant qu'il ne se répète. · Par défaut : 1 |
parent_id | trame vivante | int | non | Renseigné uniquement sur un clone archivé — pointe vers la trame vivante dont il conserve une version passée. |
archived_at | archivée le | datetime | non | Renseigné sur un clone remplacé par une édition, ou sur une trame elle-même supprimée alors qu'elle planifiait encore quelqu'un. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
user | User | n:1 | obligatoire | supprime aussi cette ligne |
parent | Trame | n:1 | optionnelle | interdite tant que cette ligne existe |
cases de trame — trames_tramecase
Tri par défaut : week, weekday, pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
trame_id | — | int | oui | — |
week | semaine | int | oui | 1-indexé — position de cette case dans le cycle de la trame. |
weekday | jour de la semaine | int | oui | Valeurs : 0 (Lundi), 1 (Mardi), 2 (Mercredi), 3 (Jeudi), 4 (Vendredi), 5 (Samedi), 6 (Dimanche) |
kind | type | string(20) | oui | Valeurs : poste (Poste), repos (Repos), repos_hebdo (Repos hebdomadaire) |
poste_id | — | int | non | Renseigné uniquement quand le type est « Poste » et l'horaire n'est pas manuel. |
manual_start_time | heure de début manuelle | time | non | Renseigné uniquement quand le type est « Poste » et qu'aucun poste de la bibliothèque n'est référencé — un horaire saisi à la volée, non enregistré comme poste réutilisable. |
manual_end_time | heure de fin manuelle | time | non | Va avec manual_start_time — les deux, ou ni l'un ni l'autre. |
color | couleur | string(7) | non | Vide si la case n'a pas de couleur propre : elle prend alors celle de son poste, sinon la teinte de sa catégorie. · Valeurs : #DCEFEC (#DCEFEC), #E0F2FE (#E0F2FE), #1E3A5F (#1E3A5F), #E4F4D4 (#E4F4D4), #FFD9B0 (#FFD9B0), #CDEDE0 (#CDEDE0), #E3D4F5 (#E3D4F5), #FBF1C7 (#FBF1C7), #FBE0E8 (#FBE0E8), #E0E4CC (#E0E4CC) |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
trame | Trame | n:1 | obligatoire | supprime aussi cette ligne |
poste | Poste | n:1 | optionnelle | interdite tant que cette ligne existe |
Planification
astreintes — planning_oncallperiod
Tri par défaut : -date_start, employee__staff_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
date_start | date de début | date | oui | — |
date_end | date de fin | date | oui | Fin de la couverture continue. Pour une seule nuit, sélectionner le même jour. |
time_start | heure de début | time | oui | — |
time_end | heure de fin | time | oui | Sur un seul jour, une heure inférieure ou égale au début désigne le lendemain. Horaires Europe/Paris. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
establishments | Establishment | n:n | facultative | — |
planifications — planning_planningassignment
Tri par défaut : -date_start, employee__staff_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
trame_id | — | int | oui | — |
date_start | date de début | date | oui | — |
date_end | date de fin | date | non | Vide = reconduction tacite ou fin non définie. |
tacit_renewal | reconduction tacite | boolean | oui | Coché, le cycle se reconduit indéfiniment : pas de date de fin. · Par défaut : False |
start_week | semaine de départ | int | oui | Semaine du cycle de la trame à laquelle le salarié démarre. · Par défaut : 1 |
works_public_holidays | travaille les jours fériés | boolean | oui | Décoché, la trame ne planifie aucun poste les jours fériés. Un poste posé à la main dans le planning sur un férié reste. · Par défaut : False |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
trame | Trame | n:1 | obligatoire | interdite tant que cette ligne existe |
demandes de modification de planning — planning_shiftchangerequest
Tri par défaut : -date, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
date | — | date | oui | La journée dont la modification est demandée. |
reason | motif | string(32) | oui | Pourquoi le salarié demande le changement — les trois motifs d'une modulation. · Valeurs : remplacement (Remplacement), demande_personnelle (Demande personnelle), urgence (Urgence) |
is_remote | télétravail | boolean | oui | La journée demandée se fait à distance. · Par défaut : False |
is_off_site | hors établissement | boolean | oui | La journée demandée se fait ailleurs que dans un établissement. · Par défaut : False |
includes_travel_time | temps de trajet inclus | boolean | oui | Les heures demandées comprennent le trajet. · Par défaut : False |
comment | commentaire | string | non | Ce que le salarié précise à qui tranchera. |
status | état | string(16) | oui | En attente tant que personne n'a tranché. Validée, elle est devenue le planning. · Valeurs : pending (En attente), validated (Validée), refused (Refusée) · Par défaut : pending |
version | — | int | oui | La version que lit qui tranche : une décision prise sur une version dépassée est refusée. · Par défaut : 1 |
filed_at | déposée le | datetime | non | Le moment où le salarié a déposé la demande. |
decided_by_id | décidé par | int | non | Le compte qui a validé ou refusé la demande. |
decided_at | décidé le | datetime | non | Le moment où la demande a été validée ou refusée. |
decision_reason | motif de la décision | string | non | Obligatoire au refus, que le salarié lit dans « Mes demandes ». |
corrected_by_id | corrigée par | int | non | Le dernier compte qui a corrigé la demande au back-office, avant décision. Une demande corrigée ne s'accorde qu'avec un motif. |
corrected_at | corrigée le | datetime | non | Le moment de la dernière correction au back-office. |
planned_description | journée prévue | string(255) | non | La journée telle qu'elle était planifiée au dépôt, en toutes lettres. |
planned_minutes | durée prévue (minutes) | int | oui | Le temps de travail net de la journée planifiée, au dépôt. · Par défaut : 0 |
requested_minutes | durée demandée (minutes) | int | oui | Le temps de travail net de la journée demandée, pauses non rémunérées déduites. · Par défaut : 0 |
granted_description | journée accordée | string(255) | non | Les créneaux accordés quand l'accord porte une autre journée que celle demandée (ajustement avant validation) ; vide sinon. |
granted_minutes | durée accordée (minutes) | int | non | Le temps de travail net de la journée accordée après ajustement ; vide sinon. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
decided_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
corrected_by | User | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Index sur
status+date
créneaux demandés — planning_shiftchangerequestslot
Tri par défaut : start_time.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
request_id | demande | int | oui | — |
start_time | heure de début | time | oui | — |
end_time | heure de fin | time | oui | Peut être antérieure à l'heure de début : le créneau se termine le lendemain. |
poste_id | — | int | non | Le poste que la journée portait déjà sur ce créneau. Vide sur un créneau ajouté : le salarié ne choisit pas de poste. |
establishment_id | établissement | int | non | Repris de la journée actuelle. Vide = l'établissement habituel du salarié. |
break_paid | pause rémunérée | boolean | oui | Décoché, la pause est déduite du temps de travail net du créneau. · Par défaut : True |
break_start_time | début de pause | time | non | — |
break_end_time | fin de pause | time | non | Vides si le créneau n'a pas de pause. Sinon, la pause tient dans le créneau, bornes exclues. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
request | ShiftChangeRequest | n:1 | obligatoire | supprime aussi cette ligne |
poste | Poste | n:1 | optionnelle | interdite tant que cette ligne existe |
establishment | Establishment | n:1 | optionnelle | interdite tant que cette ligne existe |
modifications de planning — planning_shiftoverride
Tri par défaut : -date, employee__staff_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
employee_id | salarié | int | oui | — |
date | — | date | oui | La journée que cette modulation réécrit, à la place de la trame. |
reason | motif | string(32) | oui | Pourquoi la journée change — ce que le manager choisit dans « Motif ». · Valeurs : remplacement (Remplacement), demande_personnelle (Demande personnelle), urgence (Urgence) |
is_rest | repos ponctuel | boolean | oui | La journée devient un repos, quoi que la trame ait prévu, et compte 0 h. Elle ne porte alors aucun créneau. · Par défaut : False |
establishment_id | établissement | int | non | Vide = la journée reste sur l'établissement habituel du salarié. Renseigné seulement si la modulation la déplace. |
is_remote | télétravail | boolean | oui | La journée se fait à distance. · Par défaut : False |
is_off_site | hors établissement | boolean | oui | La journée se fait ailleurs que dans un établissement (domicile d'usager, réunion…). · Par défaut : False |
includes_travel_time | temps de trajet inclus | boolean | oui | Les heures saisies comprennent le trajet. · Par défaut : False |
comment | commentaire | string | non | Libre — la précision que les trois motifs ne portent pas. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
employee | Employee | n:1 | obligatoire | supprime aussi cette ligne |
establishment | Establishment | n:1 | optionnelle | interdite tant que cette ligne existe |
Règles en base
- Unicité sur
employee+date— contrainteunique_shift_override_per_employee_and_date
créneaux modulés — planning_shiftoverrideslot
Tri par défaut : start_time.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
override_id | modulation | int | oui | — |
start_time | heure de début | time | oui | — |
end_time | heure de fin | time | oui | Peut être antérieure à l'heure de début : le créneau se termine le lendemain (ex. créneau de nuit). |
poste_id | — | int | non | Le poste choisi dans la bibliothèque, dont le créneau reprend le code et la couleur. Vide = horaires saisis à la main. |
break_paid | pause rémunérée | boolean | oui | Décoché, la pause est déduite du temps de travail net du créneau. · Par défaut : True |
break_start_time | début de pause | time | non | — |
break_end_time | fin de pause | time | non | Laissez les deux heures de pause vides si le créneau n'en comporte pas. Sinon, la pause doit tenir entre l'heure de début et l'heure de fin du créneau, bornes exclues. Copiée du poste choisi, puis propre au créneau : modifier le poste ensuite ne la change pas. |
reason | motif | string(32) | oui | Pourquoi ce créneau existe — propre au créneau, pas à la journée. · Valeurs : remplacement (Remplacement), demande_personnelle (Demande personnelle), urgence (Urgence) |
establishment_id | établissement | int | non | Vide = ce créneau reste sur l'établissement habituel du salarié. Renseigné seulement si ce créneau précis déplace la journée. |
is_remote | télétravail | boolean | oui | Ce créneau se fait à distance. · Par défaut : False |
is_off_site | hors établissement | boolean | oui | Ce créneau se fait ailleurs que dans un établissement (domicile d'usager, réunion…). · Par défaut : False |
includes_travel_time | temps de trajet inclus | boolean | oui | Les heures saisies pour ce créneau comprennent le trajet. · Par défaut : False |
comment | commentaire | string | non | Libre — la précision que le motif de ce créneau ne porte pas. |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
override | ShiftOverride | n:1 | obligatoire | supprime aussi cette ligne |
poste | Poste | n:1 | optionnelle | interdite tant que cette ligne existe |
establishment | Establishment | n:1 | optionnelle | interdite tant que cette ligne existe |
Imports de données
tentatives d'import — data_imports_importattempt
Tri par défaut : -started_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
batch_id | lot | int | oui | — |
number | tentative | int | oui | — |
trigger | déclencheur | string(24) | oui | Valeurs : poll (Collecte planifiée), automatic_retry (Nouvelle tentative automatique), admin (Administration), command (Commande) |
actor_id | opérateur | int | non | — |
actor_repr | opérateur au moment du rejeu | string(255) | non | — |
status | statut | string(16) | oui | Valeurs : processing (En cours), succeeded (Réussi), rejected (Rejeté), retryable (À réessayer) |
error_code | code d'erreur | string(64) | non | — |
error_message | détail | string | non | — |
error_line | ligne | int | non | — |
error_column | colonne | string(64) | non | — |
started_at | début | datetime | non | — |
finished_at | fin | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
batch | ImportBatch | n:1 | obligatoire | supprime aussi cette ligne |
actor | User | n:1 | optionnelle | vide le champ |
Règles en base
- Unicité sur
batch+number— contrainteunique_import_attempt_number
lots d'import — data_imports_importbatch
Tri par défaut : -created_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | uuid(32) | auto | Clé technique, attribuée automatiquement |
checksum | empreinte SHA-256 | string(64) | oui | Valeur unique |
original_filename | nom du fichier | string(255) | oui | — |
feed | flux métier | string(16) | oui | Valeurs : people (Personnes et contrats (quotidien)), annual_leave (Congés annuels (mensuel / initialisation)) · Par défaut : people |
incoming_path | chemin reçu | string(512) | oui | — |
archived_path | chemin archivé | string(512) | non | — |
file_size | taille en octets | int | oui | — |
detected_encoding | encodage détecté | string(32) | non | — |
extra_headers | colonnes supplémentaires | json | non | Par défaut : calculé à la création |
status | statut | string(16) | oui | Valeurs : processing (En cours), succeeded (Réussi), rejected (Rejeté), retryable (À réessayer) · Par défaut : processing |
row_count | lignes | int | oui | Par défaut : 0 |
created_count | créations | int | oui | Par défaut : 0 |
updated_count | mises à jour | int | oui | Par défaut : 0 |
unchanged_count | inchangés | int | oui | Par défaut : 0 |
payload_available | fichier disponible | boolean | oui | Par défaut : True |
processing_started_at | début du traitement | datetime | non | — |
lease_expires_at | expiration du bail | datetime | non | — |
completed_at | fin du traitement | datetime | non | — |
created_at | reçu le | datetime | non | — |
updated_at | mis à jour le | datetime | non | — |
résultats des lignes importées — data_imports_importrowresult
Tri par défaut : line_number.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
attempt_id | tentative | int | oui | — |
line_number | ligne | int | oui | — |
employee_id | salarié | int | non | — |
contract_id | contrat | int | non | — |
action | — | string(16) | oui | Valeurs : created (Créé), updated (Mis à jour), unchanged (Inchangé) |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
attempt | ImportAttempt | n:1 | obligatoire | supprime aussi cette ligne |
employee | Employee | n:1 | optionnelle | vide le champ |
contract | Contract | n:1 | optionnelle | vide le champ |
Règles en base
- Unicité sur
attempt+line_number— contrainteunique_import_result_line
Notifications
notifications — notifications_notification
Tri par défaut : -created_at, -pk.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
recipient_id | destinataire | int | oui | Compte qui voit la notification dans sa cloche. |
kind | type | string(16) | oui | Valeurs : error (Erreur), warning (Avertissement), info (Information) |
title | titre | string(255) | oui | — |
message | — | string | oui | — |
read_at | date de lecture | datetime | non | — |
created_at | date de création | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
recipient | User | n:1 | obligatoire | supprime aussi cette ligne |
Règles en base
- Index sur
recipient+-created_at - Index sur
recipient+read_at
appareils de notification — notifications_pushdevice
Tri par défaut : -last_seen_at.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
user_id | utilisateur | int | oui | Compte qui reçoit les notifications sur cet appareil. |
firebase_installation_id | identifiant d'installation Firebase | string(255) | oui | Identifiant public de l'installation Firebase du navigateur. · Valeur unique |
created_at | date de création | datetime | non | — |
last_seen_at | dernière activité | datetime | non | — |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
user | User | n:1 | obligatoire | supprime aussi cette ligne |
Outillage de développement
scénarios de développement — devtools_devseedscenario
Tri par défaut : year.
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
year | année | int | oui | Valeur unique |
reference_date | date de référence initiale | date | oui | Date choisie à la création du scénario ; les reprises conservent cette référence. |
absence_ids | absences créées | json | oui | Identifiants des cas de recette, conservés même après modification du commentaire. · Par défaut : calculé à la création |
event_ids | événements créés | json | oui | Identifiants des événements de recette, indépendants de leur titre modifiable. · Par défaut : calculé à la création |
Tables Django réutilisées
Ces deux tables sont fournies par Django et ne sont pas de notre conception ; elles figurent ici parce que nos propres tables pointent dessus. Le compte (auth_user) porte l'identité et le mot de passe, le groupe (auth_group) porte le rôle — voir docs/administration/roles-et-acces.md.
utilisateurs — auth_user
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
password | mot de passe | string(128) | oui | — |
last_login | dernière connexion | datetime | non | — |
is_superuser | statut super-utilisateur | boolean | oui | Précise que l’utilisateur possède toutes les permissions sans les assigner explicitement. · Par défaut : False |
username | nom d’utilisateur | string(150) | oui | Requis. 150 caractères maximum. Uniquement des lettres, nombres et les caractères « @ », « . », « + », « - » et « _ ». · Valeur unique |
first_name | prénom | string(150) | non | — |
last_name | nom | string(150) | non | — |
email | adresse électronique | string(254) | non | — |
is_staff | statut équipe | boolean | oui | Précise si l’utilisateur peut se connecter à ce site d'administration. · Par défaut : False |
is_active | actif | boolean | oui | Précise si l’utilisateur doit être considéré comme actif. Décochez ceci plutôt que de supprimer le compte. · Par défaut : True |
date_joined | date d’inscription | datetime | oui | Par défaut : calculé à la création |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
groups | Group | n:n | facultative | — |
user_permissions | Permission | n:n | facultative | — |
groupes — auth_group
| Colonne | Libellé | Type | Obligatoire | Description |
|---|---|---|---|---|
id | — | int | auto | Clé technique, attribuée automatiquement |
name | nom | string(150) | oui | Valeur unique |
Relations
| Champ | Vers | Cardinalité | Présence | À la suppression de la cible |
|---|---|---|---|---|
permissions | Permission | n:n | facultative | — |