Beschikbaarheid (Technisch)
Technisch ontwerp
De Beschikbaarheid module in de Apo Jansen App is gebaseerd op het Availability en het Dagdeel model. Het systeem ondersteunt zowel handmatige invoer door gebruikers als automatische generatie op basis van contractuele instellingen in het UserProfile.
Datamodel
De belangrijkste modellen zijn:
Availability
user: De gebruiker voor wie de beschikbaarheid geldt.date: De specifieke datum van de beschikbaarheid (unique per gebruiker).dagdelen: Een ManyToMany relatie met het modelDagdeel.source: De bron van de beschikbaarheid ("auto" voor contractueel, "manual" voor handmatig).
Dagdeel
code: Unieke identifier (bijv. "morning", "afternoon", "pre_evening").start_time/end_time: Tijden die het dagdeel definiƫren.allowance_pct: Het percentage toeslag dat geldt voor dit dagdeel (bijv. 120 voor 20% toeslag).PLANNING_CODES: Geeft aan welke codes ("morning", "afternoon", "pre_evening") gebruikt mogen worden voor de reguliere planning.
Implementatiedetails
De module bevat logica voor de volgende processen:
- Automatische Invulling: In
core/utils/beat/fill.pybevinden zich de functiesfill_availability_for_profileenrebuild_auto_availability_for_profile. Deze functies genereren automatischAvailabilityrecords op basis van dework_mon_ametc. velden in hetUserProfile. - Dienstverband: De automatische invulling vindt alleen plaats voor medewerkers met een vast dienstverband (
Dienstverband.VAST). - Dagdeel Toeslagen: Het
Dagdeelmodel bevat logica om te bepalen of er overlappingen zijn tussen verschillende dagdelen (cleanmethode) en berekent de toeslag-multiplier.
Autorisatie en beveiliging
De toegang wordt beheerd via de volgende Django permissies:
can_access_availability: Mag de beschikbaarheidspagina openen en bekijken.can_send_beschikbaarheid: Mag handmatig beschikbaarheid doorgeven voor zichzelf.can_view_beschikbaarheidsdashboard: Mag het overzicht van alle beschikbare medewerkers bekijken.can_edit_beschikbaarheidsdashboard: Mag wijzigingen aanbrengen in de beschikbaarheid van andere medewerkers of diensten toewijzen.
Relevante bestanden
De belangrijkste bestanden voor deze module zijn:
core/models.py: Definities vanAvailabilityenDagdeel.core/views/mijnbeschikbaarheid.py: Bevat de logica voor het tonen en aanpassen van de eigen beschikbaarheid.core/utils/beat/fill.py: Bevat de logica voor de automatische generatie van beschikbaarheid.core/forms.py: Bevat hetAvailabilityUploadForm.