Spaces:
Sleeping
Sleeping
📋 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 :
- SIRET : Doit contenir exactement 14 caractères
- Email : Format email valide (regex)
- Nombre de salariés : Doit être >= 0
- Années d'expérience : Doit être >= 0
- Montant salaire : Si fourni, doit être >= 0
- Nombre de mois : Si fourni, doit être >= 1
- Dates : Format ISO (YYYY-MM-DD)
- Enums : Valeurs restreintes aux options définies
🔄 Prochaines étapes recommandées
- Créer le repository Airtable pour gérer la sauvegarde
- Créer le service pour la logique métier
- Créer les routes API (POST, GET, PUT, DELETE)
- Créer le formulaire frontend en React/TypeScript
- 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