apiRushscholl / FICHE_ENTREPRISE_DOCUMENTATION.md
Liantsoaxx08's picture
Initial deployment
a03ac57
|
Raw
History Blame Contribute Delete
9.46 kB

📋 Documentation - Fiche de Renseignement Entreprise

📌 Vue d'ensemble

Le modèle FicheRenseignementEntreprise permet de gérer toutes les informations relatives aux entreprises accueillant des alternants. Ce modèle est structuré en 7 sections principales.

🏗️ Structure du modèle

Section 1: Identification de l'Entreprise

class IdentificationEntreprise(BaseModel):
    raison_sociale: str                    # ✅ Requis
    nom_entreprise: Optional[str]          # ⭕ Optionnel
    siret: str                             # ✅ Requis (14 caractères)
    code_ape_naf: str                      # ✅ Requis
    type_employeur: str                    # ✅ Requis (voir enum TypeEmployeur)
    employeur_specifique: Optional[str]    # ⭕ Optionnel
    nombre_salaries: int                   # ✅ Requis (>= 0)
    code_idcc: Optional[str]               # ⭕ Optionnel
    convention_collective: Optional[str]   # ⭕ Optionnel

Types d'employeur disponibles:

  • SARL, SAS, SA, EURL, EI, SNC, SCOP
  • Microentreprise
  • Association
  • Employeur spécifique
  • Autre

Section 2: Adresse de l'Entreprise

class AdresseEntreprise(BaseModel):
    numero: Optional[str]       # ⭕ Numéro de rue
    voie: str                   # ✅ Type de voie (rue, avenue, etc.)
    nom_rue: Optional[str]      # ⭕ Nom de la rue
    complement: Optional[str]   # ⭕ Complément d'adresse
    code_postal: str            # ✅ Requis
    ville: str                  # ✅ Requis
    telephone: str              # ✅ Requis
    email: str                  # ✅ Requis (avec validation)

Section 3: Représentant Légal

class RepresentantLegal(BaseModel):
    nom: str                           # ✅ Requis
    titre: str                         # ✅ Requis (ex: Gérant, PDG, etc.)
    telephone_direct: Optional[str]    # ⭕ Optionnel
    email: Optional[str]               # ⭕ Optionnel (avec validation)

Section 4: Maître d'Apprentissage

class MatreApprentissage(BaseModel):
    nom: str                              # ✅ Requis
    prenom: str                           # ✅ Requis
    date_naissance: date                  # ✅ Requis (format: YYYY-MM-DD)
    numero_securite_sociale: Optional[str]# ⭕ Optionnel
    fonction: str                         # ✅ Requis
    diplome_plus_eleve: Optional[str]     # ⭕ Optionnel
    niveau_diplome: str                   # ✅ Requis (voir enum NiveauDiplome)
    annees_experience: int                # ✅ Requis (>= 0)
    telephone: str                        # ✅ Requis
    email: str                            # ✅ Requis (avec validation)
    deja_maitre_apprentissage: str        # ✅ Requis ("Oui" ou "Non")

Niveaux de diplôme disponibles:

  • Aucun diplôme
  • CAP, BEP, BAC
  • BAC+2, BAC+3, BAC+5
  • Master, Doctorat
  • Autre

Section 5: OPCO

class InformationsOPCO(BaseModel):
    nom_opco: str                  # ✅ Requis
    adresse: Optional[str]         # ⭕ Optionnel
    code_postal: Optional[str]     # ⭕ Optionnel
    ville: Optional[str]           # ⭕ Optionnel

Section 6: Informations sur le Contrat

class InformationsContrat(BaseModel):
    nature_contrat: str                  # ✅ Requis ("Contrat" ou "Avenant")
    type_contrat: Optional[str]          # ⭕ Optionnel
    type_derogation: str                 # ✅ Requis (voir enum TypeDerogation)
    date_debut: date                     # ✅ Requis (format: YYYY-MM-DD)
    date_fin: date                       # ✅ Requis (format: YYYY-MM-DD)
    nombre_mois: Optional[int]           # ⭕ Optionnel (>= 1)
    duree_hebdomadaire: str              # ✅ Requis (ex: "35h")
    poste_occupe: str                    # ✅ Requis
    lieu_execution: Optional[str]        # ⭕ Optionnel
    base_calcul_salaire: str             # ✅ Requis ("SMIC" ou "SMC")
    montant_salaire_brut: Optional[float]# ⭕ Optionnel (>= 0)
    numero_bon_commande: Optional[str]   # ⭕ Optionnel

Types de dérogation disponibles:

  • Aucune dérogation
  • Dérogation d'âge
  • Dérogation handicap
  • Autre

Section 7: Contact et Formation

class ContactTaxeApprentissage(BaseModel):
    fonction_contact: Optional[str]      # ⭕ Optionnel
    telephone_contact: Optional[str]     # ⭕ Optionnel
    email_contact: Optional[str]         # ⭕ Optionnel (avec validation)

class FormationMissions(BaseModel):
    formation_alternant: str             # ✅ Requis

📝 Exemple d'utilisation

Exemple complet en Python

from app.models.admission import FicheRenseignementEntreprise
from datetime import date

# Créer une fiche de renseignement entreprise
fiche_entreprise = FicheRenseignementEntreprise(
    identification={
        "raison_sociale": "RUSH SCHOOL SARL",
        "nom_entreprise": "Rush School",
        "siret": "12345678901234",
        "code_ape_naf": "8559A",
        "type_employeur": "SARL",
        "nombre_salaries": 50,
        "convention_collective": "Convention collective nationale de l'enseignement privé"
    },
    adresse={
        "voie": "Rue",
        "nom_rue": "de la Formation",
        "numero": "12",
        "code_postal": "75001",
        "ville": "Paris",
        "telephone": "0123456789",
        "email": "contact@rushschool.fr"
    },
    representant_legal={
        "nom": "DUPONT",
        "titre": "Gérant",
        "telephone_direct": "0123456788",
        "email": "dupont@rushschool.fr"
    },
    maitre_apprentissage={
        "nom": "MARTIN",
        "prenom": "Jean",
        "date_naissance": date(1980, 5, 15),
        "numero_securite_sociale": "1800515123456",
        "fonction": "Responsable Formation",
        "diplome_plus_eleve": "Master en Sciences de l'Éducation",
        "niveau_diplome": "Master",
        "annees_experience": 10,
        "telephone": "0123456787",
        "email": "j.martin@rushschool.fr",
        "deja_maitre_apprentissage": "Oui"
    },
    opco={
        "nom_opco": "OPCO EP",
        "adresse": "12 Rue de l'OPCO",
        "code_postal": "75002",
        "ville": "Paris"
    },
    contrat={
        "nature_contrat": "Contrat",
        "type_derogation": "Aucune dérogation",
        "date_debut": date(2024, 9, 1),
        "date_fin": date(2026, 8, 31),
        "nombre_mois": 24,
        "duree_hebdomadaire": "35h",
        "poste_occupe": "Assistant Commercial",
        "base_calcul_salaire": "SMIC",
        "montant_salaire_brut": 1800.00
    },
    formation_missions={
        "formation_alternant": "BTS MCO - Management Commercial Opérationnel"
    },
    contact_taxe={
        "fonction_contact": "Responsable RH",
        "telephone_contact": "0123456786",
        "email_contact": "rh@rushschool.fr"
    }
)

# Valider et afficher
print(fiche_entreprise.model_dump())

Exemple JSON pour l'API

{
  "identification": {
    "raison_sociale": "RUSH SCHOOL SARL",
    "nom_entreprise": "Rush School",
    "siret": "12345678901234",
    "code_ape_naf": "8559A",
    "type_employeur": "SARL",
    "nombre_salaries": 50,
    "convention_collective": "Convention collective nationale de l'enseignement privé"
  },
  "adresse": {
    "numero": "12",
    "voie": "Rue",
    "nom_rue": "de la Formation",
    "code_postal": "75001",
    "ville": "Paris",
    "telephone": "0123456789",
    "email": "contact@rushschool.fr"
  },
  "representant_legal": {
    "nom": "DUPONT",
    "titre": "Gérant",
    "telephone_direct": "0123456788",
    "email": "dupont@rushschool.fr"
  },
  "maitre_apprentissage": {
    "nom": "MARTIN",
    "prenom": "Jean",
    "date_naissance": "1980-05-15",
    "fonction": "Responsable Formation",
    "niveau_diplome": "Master",
    "annees_experience": 10,
    "telephone": "0123456787",
    "email": "j.martin@rushschool.fr",
    "deja_maitre_apprentissage": "Oui"
  },
  "opco": {
    "nom_opco": "OPCO EP",
    "adresse": "12 Rue de l'OPCO",
    "code_postal": "75002",
    "ville": "Paris"
  },
  "contrat": {
    "nature_contrat": "Contrat",
    "type_derogation": "Aucune dérogation",
    "date_debut": "2024-09-01",
    "date_fin": "2026-08-31",
    "duree_hebdomadaire": "35h",
    "poste_occupe": "Assistant Commercial",
    "base_calcul_salaire": "SMIC"
  },
  "formation_missions": {
    "formation_alternant": "BTS MCO - Management Commercial Opérationnel"
  }
}

✅ Validation automatique

Le modèle Pydantic effectue automatiquement les validations suivantes :

  1. SIRET : Doit contenir exactement 14 caractères
  2. Email : Format email valide (regex)
  3. Nombre de salariés : Doit être >= 0
  4. Années d'expérience : Doit être >= 0
  5. Montant salaire : Si fourni, doit être >= 0
  6. Nombre de mois : Si fourni, doit être >= 1
  7. Dates : Format ISO (YYYY-MM-DD)
  8. Enums : Valeurs restreintes aux options définies

🔄 Prochaines étapes recommandées

  1. Créer le repository Airtable pour gérer la sauvegarde
  2. Créer le service pour la logique métier
  3. Créer les routes API (POST, GET, PUT, DELETE)
  4. Créer le formulaire frontend en React/TypeScript
  5. Mapper les champs vers les colonnes Airtable exactes

📚 Références

  • Documentation Pydantic : https://docs.pydantic.dev/
  • Modèle InformationsPersonnelles : app/models/admission.py
  • Repository Airtable : app/repositories/airtable_repository.py