Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [ ] Pas de régression - [ ] TU/TI/TF rédigée - [ ] TU/TI/TF OK - [ ] CHANGELOG modifié Reviewed-on: #14 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
569 lines
30 KiB
TypeScript
569 lines
30 KiB
TypeScript
import type { DocSection } from '~/types/documentation'
|
||
|
||
export const documentationSections: DocSection[] = [
|
||
// ============================================================
|
||
// EMPLOYEE LEVEL
|
||
// ============================================================
|
||
{
|
||
id: 'connexion',
|
||
title: 'Connexion et navigation',
|
||
requiredLevel: 'employee',
|
||
icon: 'mdi:login',
|
||
articles: [
|
||
{
|
||
id: 'login',
|
||
title: 'Se connecter',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Pour accéder à l\'application, rendez-vous sur la page de connexion et saisissez vos identifiants.' },
|
||
{ type: 'list', content: 'Saisissez votre nom d\'utilisateur\nSaisissez votre mot de passe\nCliquez sur le bouton "Connexion"' },
|
||
{ type: 'note', content: 'Si vous ne parvenez pas à vous connecter, contactez votre administrateur RH. Votre compte a peut-être été verrouillé.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'navigation',
|
||
title: 'Naviguer dans la vue jour',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'La vue jour est votre écran principal. Elle affiche les heures de travail pour une date donnée.' },
|
||
{ type: 'list', content: 'Boutons "Hier" / "Aujourd\'hui" / "Demain" pour naviguer rapidement\nSélecteur de date pour choisir une date spécifique\nFiltrage par site si vous avez accès à plusieurs sites' },
|
||
{ type: 'paragraph', content: 'Seuls les employés ayant un contrat actif à la date sélectionnée sont affichés.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'perimetre',
|
||
title: 'Périmètre d\'accès',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Votre accès dépend du rôle qui vous a été attribué par l\'administrateur.' },
|
||
{ type: 'list', content: 'Employé : accès à la saisie de ses propres heures uniquement\nChef de site : accès aux heures des employés de ses sites autorisés + validation\nAdministrateur : accès complet à toutes les fonctionnalités' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'saisie-heures',
|
||
title: 'Saisie des heures',
|
||
requiredLevel: 'employee',
|
||
icon: 'mdi:clock-time-four-outline',
|
||
articles: [
|
||
{
|
||
id: 'saisie-time',
|
||
title: 'Mode horaire (TIME)',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'En mode horaire, vous saisissez vos heures via des créneaux matin, après-midi et soir.' },
|
||
{ type: 'list', content: 'Matin : heure de début et heure de fin\nAprès-midi : heure de début et heure de fin\nSoir : heure de début et heure de fin' },
|
||
{ type: 'paragraph', content: 'Le sélecteur de temps fonctionne par tranches de 15 minutes (00, 15, 30, 45). La saisie libre est possible mais sera corrigée automatiquement.' },
|
||
{ type: 'note', content: 'Les calculs sont mis à jour automatiquement : heures de jour (06:00–21:00), heures de nuit (00:00–06:00 et 21:00–24:00) et total.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'saisie-presence',
|
||
title: 'Mode présence (PRESENCE)',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'En mode présence (contrats forfait), vous indiquez simplement si vous étiez présent le matin et/ou l\'après-midi.' },
|
||
{ type: 'list', content: 'Cochez "Présent matin" pour indiquer une demi-journée de travail le matin\nCochez "Présent après-midi" pour indiquer une demi-journée l\'après-midi\nChaque demi-journée cochée compte pour 0.5 jour de présence' },
|
||
],
|
||
},
|
||
{
|
||
id: 'comprendre-calculs',
|
||
title: 'Comprendre les calculs affichés',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les colonnes de calcul sont mises à jour automatiquement en fonction de votre saisie.' },
|
||
{ type: 'list', content: 'Jour : total des heures dans la plage 06:00–21:00\nNuit : total des heures dans les plages 00:00–06:00 et 21:00–24:00\nTotal : somme des heures de jour et de nuit' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'saisie-conducteurs',
|
||
title: 'Saisie conducteurs',
|
||
requiredLevel: 'employee',
|
||
icon: 'mdi:truck-outline',
|
||
articles: [
|
||
{
|
||
id: 'conducteur-heures',
|
||
title: 'Saisie des heures conducteur',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les conducteurs disposent d\'un écran dédié accessible via le menu "Heures Conducteurs". Ils n\'apparaissent pas sur l\'écran classique des heures.' },
|
||
{ type: 'list', content: 'Heures de jour : durée au format HH:MM\nHeures de nuit : durée au format HH:MM\nHeures atelier : durée au format HH:MM\nTotal : calculé automatiquement (jour + nuit + atelier)' },
|
||
],
|
||
},
|
||
{
|
||
id: 'conducteur-indemnites',
|
||
title: 'Indemnités conducteur',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'En plus des heures, vous pouvez cocher les indemnités correspondant à votre journée.' },
|
||
{ type: 'list', content: 'Petit déjeuner\nDéjeuner\nDîner\nNuitée' },
|
||
{ type: 'paragraph', content: 'La même logique de validation s\'applique que pour les heures classiques.' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'absences-validations',
|
||
title: 'Absences et validations',
|
||
requiredLevel: 'employee',
|
||
icon: 'mdi:information-outline',
|
||
articles: [
|
||
{
|
||
id: 'comprendre-absences',
|
||
title: 'Comprendre les absences affichées',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Quand une absence est posée sur votre journée, elle apparaît dans la colonne dédiée avec un fond coloré selon le type d\'absence.' },
|
||
{ type: 'list', content: 'Absence du matin (AM) : verrouille le créneau matin\nAbsence de l\'après-midi (PM) : verrouille les créneaux après-midi et soir\nAbsence journée complète : verrouille tous les créneaux' },
|
||
{ type: 'note', content: 'Vous ne pouvez pas modifier les créneaux horaires verrouillés par une absence. Seul un administrateur peut retirer ou modifier l\'absence.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'comprendre-validations',
|
||
title: 'Comprendre les validations',
|
||
requiredLevel: 'employee',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Vos heures passent par un processus de double validation avant d\'être définitivement enregistrées.' },
|
||
{ type: 'list', content: 'Validation chef de site : votre chef de site vérifie et valide vos heures. La ligne est alors verrouillée pour vous.\nValidation RH : l\'administrateur RH valide définitivement. La ligne est complètement verrouillée.' },
|
||
{ type: 'paragraph', content: 'Une fois validée, vous ne pouvez plus modifier la ligne. Si une correction est nécessaire, contactez votre chef de site ou l\'administrateur RH.' },
|
||
{ type: 'note', content: 'Toute vraie modification effectuée par un administrateur remet automatiquement les deux validations à zéro.' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
|
||
// ============================================================
|
||
// SITE MANAGER LEVEL
|
||
// ============================================================
|
||
{
|
||
id: 'validation-site',
|
||
title: 'Validation de site',
|
||
requiredLevel: 'site_manager',
|
||
icon: 'mdi:check-decagram-outline',
|
||
articles: [
|
||
{
|
||
id: 'role-chef-site',
|
||
title: 'Rôle du chef de site',
|
||
requiredLevel: 'site_manager',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'En tant que chef de site, vous êtes responsable de la vérification et de la validation des heures saisies par les employés de votre site.' },
|
||
{ type: 'paragraph', content: 'Le workflow de validation suit un circuit en 3 étapes : l\'employé saisit ses heures → le chef de site valide → l\'admin RH valide définitivement.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'validation-individuelle',
|
||
title: 'Validation individuelle',
|
||
requiredLevel: 'site_manager',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Pour valider une ligne d\'heures individuellement :' },
|
||
{ type: 'list', content: 'Cochez la case de validation site sur la ligne de l\'employé\nLa ligne est immédiatement verrouillée pour l\'employé\nL\'administrateur RH peut toujours corriger une ligne que vous avez validée' },
|
||
],
|
||
},
|
||
{
|
||
id: 'validation-masse',
|
||
title: 'Validation en masse',
|
||
requiredLevel: 'site_manager',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Pour gagner du temps, vous pouvez valider toutes les lignes en une seule action.' },
|
||
{ type: 'list', content: 'Cliquez sur le bouton de validation en masse\nToutes les lignes de la date affichée sont validées d\'un coup\nUtile quand toutes les saisies sont correctes' },
|
||
{ type: 'note', content: 'Quand toutes les lignes de votre site sont validées pour une date donnée, les administrateurs RH reçoivent automatiquement une notification.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'difference-validations',
|
||
title: 'Validation site vs validation RH',
|
||
requiredLevel: 'site_manager',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Il est important de comprendre la différence entre les deux niveaux de validation.' },
|
||
{ type: 'list', content: 'Validation site : verrouille la ligne pour les employés, mais l\'admin RH peut encore modifier\nValidation RH : verrouillage complet, seul l\'admin peut retirer cette validation\nLe chef de site ne voit pas et ne peut pas agir sur la validation RH' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
|
||
// ============================================================
|
||
// ADMIN LEVEL
|
||
// ============================================================
|
||
{
|
||
id: 'administration',
|
||
title: 'Administration',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:cog-outline',
|
||
articles: [
|
||
{
|
||
id: 'gestion-sites',
|
||
title: 'Gestion des sites',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les sites organisent les employés et les accès dans l\'application. Chaque site possède un nom et une couleur utilisée dans toute l\'interface.' },
|
||
{ type: 'list', content: 'Créer, modifier ou supprimer un site depuis le menu "Sites"\nL\'ordre d\'affichage est modifiable par glisser-déposer\nLa couleur du site est utilisée pour identifier visuellement les employés' },
|
||
],
|
||
},
|
||
{
|
||
id: 'gestion-types-absence',
|
||
title: 'Gestion des types d\'absence',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les types d\'absence définissent les catégories disponibles lors de la pose d\'une absence.' },
|
||
{ type: 'list', content: 'Code : identifiant court (max 10 caractères), ex: C, M, AT\nLibellé : nom affiché, ex: Congé, Maladie, Accident du travail\nCouleur : code couleur pour le calendrier et la vue jour\nOption "Compté comme travaillé" : si activé, l\'absence crédite des heures en mode TIME' },
|
||
{ type: 'note', content: 'L\'option "Compté comme travaillé" impacte le calcul des heures supplémentaires. En mode TIME, les minutes sont créditées selon le contrat. En mode PRESENCE, aucun crédit n\'est appliqué.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'gestion-utilisateurs',
|
||
title: 'Gestion des utilisateurs',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Chaque personne qui se connecte à l\'application a un compte utilisateur distinct de sa fiche employé.' },
|
||
{ type: 'list', content: 'Nom d\'utilisateur : unique, sert de login\nMot de passe : défini à la création, modifiable\nRôle : Admin (accès complet), User (chef de site), Self (employé)\nSites autorisés : pour les chefs de site, définit leur périmètre\nAssociation employé : lie le compte à une fiche employé\nVerrouillage : un compte verrouillé ne peut plus se connecter' },
|
||
{ type: 'note', content: 'Il n\'est pas possible de supprimer un utilisateur (sécurité). Pour bloquer l\'accès, utilisez le verrouillage de compte.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'taches-automatiques',
|
||
title: 'Tâches automatiques (crons)',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Deux tâches automatiques s\'exécutent quotidiennement pour gérer le report des compteurs.' },
|
||
{ type: 'list', content: 'Report congés (02h10) : déclenche le report des congés payés le 1er juin (CDI/CDD) et le 1er janvier (forfait)\nReport RTT (02h15) : déclenche le report du solde RTT le 1er juin' },
|
||
{ type: 'note', content: 'Ces tâches sont idempotentes : si elles s\'exécutent plusieurs fois, aucun doublon n\'est créé.' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'employes-contrats',
|
||
title: 'Employés et contrats',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:account-group-outline',
|
||
articles: [
|
||
{
|
||
id: 'liste-employes',
|
||
title: 'Liste et recherche d\'employés',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'La page Employés affiche tous les employés sous forme de cartes.' },
|
||
{ type: 'list', content: 'Recherche par nom\nFiltrage par site (multi-sélection)\nFiltrage par statut de contrat : "Avec contrat" (défaut), "Sans contrat", "Tous"\n"Avec contrat" = employés ayant une période de contrat active à la date du jour' },
|
||
],
|
||
},
|
||
{
|
||
id: 'creation-employe',
|
||
title: 'Créer un employé',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'La création d\'un employé se fait via le drawer d\'ajout.' },
|
||
{ type: 'list', content: 'Champs : prénom, nom, site\nNature du contrat : CDI, CDD ou INTERIM\nType de contrat / temps de travail (Forfait, 35h, 39h, etc.)\nDate de début (obligatoire)\nDate de fin (obligatoire pour CDD et INTERIM)' },
|
||
],
|
||
},
|
||
{
|
||
id: 'types-contrat',
|
||
title: 'Types de contrat',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Le type de contrat détermine le mode de suivi et les règles de calcul appliquées.' },
|
||
{ type: 'list', content: 'FORFAIT : suivi en jours (mode PRESENCE), base 218 jours/an\n35 HEURES : suivi horaire (mode TIME), 35h/semaine\n39 HEURES : suivi horaire (mode TIME), 39h/semaine\nCUSTOM : heures personnalisées (ex: 4h, 20h), 1h sup = 1h récup sans bonus\nINTERIM : travail temporaire, pas de récupération ni de congés gérés' },
|
||
{ type: 'note', content: 'Le mode de suivi (TIME ou PRESENCE) est lié au type de contrat et ne peut pas être modifié indépendamment.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'suivi-contrat',
|
||
title: 'Suivi contrat et historique',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'L\'onglet "Suivi contrat" sur la fiche employé affiche l\'historique complet des périodes de contrat.' },
|
||
{ type: 'list', content: 'Chaque ligne : nature (CDI/CDD/INTERIM), type de contrat, date début, date fin ou "En cours"\nAjouter un contrat : disponible uniquement si le contrat en cours est clôturé\nClôturer un contrat : définir la date de fin + option "Solde de tout compte"\nSuspension : ajouter une période de suspension avec dates et commentaire' },
|
||
{ type: 'note', content: 'La case "Soldé dans le solde de tout compte" remet le report des congés à 0 pour l\'exercice suivant.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'statut-conducteur',
|
||
title: 'Statut conducteur',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Le statut conducteur est un flag activé sur une période de contrat. Un employé peut changer de statut conducteur selon la période.' },
|
||
{ type: 'paragraph', content: 'Un employé conducteur apparaît uniquement sur l\'écran "Heures Conducteurs" et non sur l\'écran "Heures" classique.' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'double-validation',
|
||
title: 'Saisie et double validation',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:shield-check-outline',
|
||
articles: [
|
||
{
|
||
id: 'validation-rh',
|
||
title: 'Validation RH',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'La validation RH est le niveau de validation le plus élevé, réservé aux administrateurs.' },
|
||
{ type: 'list', content: 'Verrouille complètement la ligne (heures et absences)\nSeul un administrateur peut retirer cette validation\nPeut être appliquée individuellement ou en masse' },
|
||
],
|
||
},
|
||
{
|
||
id: 'regles-reinitialisation',
|
||
title: 'Règles de réinitialisation',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les validations sont automatiquement réinitialisées dans certaines conditions.' },
|
||
{ type: 'list', content: 'Toute vraie modification d\'une ligne remet les deux validations (site et RH) à faux\nUn enregistrement sans changement réel préserve les validations existantes\nLa date de modification est mise à jour uniquement quand un employé modifie ses propres heures' },
|
||
{ type: 'note', content: 'La date de modification est visible uniquement par les administrateurs, sous le nom de l\'employé dans la vue jour.' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'vue-semaine-hs',
|
||
title: 'Vue semaine et heures supplémentaires',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:calendar-week',
|
||
articles: [
|
||
{
|
||
id: 'vue-semaine',
|
||
title: 'Vue semaine',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'La vue semaine est réservée aux administrateurs. Elle affiche une synthèse hebdomadaire par employé avec les heures supplémentaires calculées.' },
|
||
{ type: 'list', content: 'Filtrage par site et par employé\nDétail par jour avec totaux hebdomadaires\nColonnes de calcul : base, heures sup 25%, heures sup 50%, total récupération' },
|
||
],
|
||
},
|
||
{
|
||
id: 'calcul-hs',
|
||
title: 'Calcul des heures supplémentaires',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les règles de calcul des heures supplémentaires dépendent du type de contrat.' },
|
||
{ type: 'list', content: 'Contrats ≤ 35h : +25% de 35h à 43h, +50% au-delà de 43h\nContrats ≥ 39h : +25% de 39h à 43h, +50% au-delà de 43h\nContrats CUSTOM (4h, 25h, etc.) : 1h supplémentaire = 1h de récupération, pas de bonus\nINTERIM : aucune récupération, aucun bonus' },
|
||
{ type: 'note', content: 'En cas de déficit hebdomadaire (heures travaillées < heures contrat), le déficit est déduit du cumul RTT : d\'abord des heures à 50%, puis des heures à 25%.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'vue-semaine-conducteurs',
|
||
title: 'Vue semaine conducteurs',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'La vue semaine conducteurs affiche des colonnes spécifiques.' },
|
||
{ type: 'list', content: 'Totaux jour / nuit / atelier par jour et par semaine\nPanier de nuit (PN) : affiché quand heures nuit > heures jour OU nuit ≥ 4h\nCompteurs hebdomadaires : petit déjeuner, déjeuner, dîner, nuitée\nRTT calculé sur jour + nuit + atelier (au lieu des créneaux classiques)' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'absences-calendrier',
|
||
title: 'Absences et calendrier',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:calendar-blank',
|
||
articles: [
|
||
{
|
||
id: 'poser-absence',
|
||
title: 'Poser une absence',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les absences peuvent être posées depuis la vue jour des heures ou depuis le calendrier.' },
|
||
{ type: 'list', content: 'Journée complète : efface toutes les plages horaires\nDemi-journée matin (AM) : efface le créneau matin\nDemi-journée après-midi (PM) : efface les créneaux après-midi et soir' },
|
||
{ type: 'paragraph', content: 'Les absences sont stockées par jour : une absence de plusieurs jours est automatiquement découpée en entrées quotidiennes.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'effet-absences-heures',
|
||
title: 'Effet sur les heures',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'L\'impact d\'une absence sur les heures dépend du type d\'absence et du mode de suivi.' },
|
||
{ type: 'list', content: 'Standard : efface les créneaux horaires correspondants\nSi "Compté comme travaillé" en mode TIME : crédite des minutes selon le contrat actif\nSi "Compté comme travaillé" en mode PRESENCE : aucun crédit (seules les cases cochées comptent)' },
|
||
{ type: 'note', content: 'Les absences comptées comme travaillées impactent le calcul des heures supplémentaires et du RTT.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'calendrier-mensuel',
|
||
title: 'Calendrier mensuel',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Le calendrier offre une vue d\'ensemble mensuelle des absences de tous les employés.' },
|
||
{ type: 'list', content: 'Code couleur par type d\'absence\nDemi-journée : affichage en dégradé diagonal\nJournée complète : fond plein\nJours fériés : fond bleu clair\nFiltres par site et par employé\nNavigation par mois (précédent / suivant)' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'conges-payes',
|
||
title: 'Congés payés',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:umbrella-beach-outline',
|
||
articles: [
|
||
{
|
||
id: 'regles-cdi-cdd',
|
||
title: 'Règles CDI/CDD non-forfait',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Pour les contrats CDI et CDD (hors forfait), l\'exercice de congés va du 1er juin (N-1) au 31 mai (N).' },
|
||
{ type: 'list', content: 'Acquisition annuelle : 25 jours + 5 samedis\nAcquisition mensuelle : 2,08 jours + 0,42 samedi par mois\nProratisation en cas de début/fin ou suspension en cours de mois\nContrat 4h : 10 jours annuels, 0 samedi, 0,83 jour/mois' },
|
||
],
|
||
},
|
||
{
|
||
id: 'regles-forfait',
|
||
title: 'Règles FORFAIT',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Pour les contrats forfait, l\'exercice suit l\'année civile (1er janvier au 31 décembre).' },
|
||
{ type: 'list', content: 'Calcul : jours ouvrés de l\'année − 218 + bonus weekend/férié\nBonus : 1 jour par jour travaillé un weekend ou jour férié (0.5 si demi-journée)\nPas de samedis\nPas de jours en cours d\'acquisition' },
|
||
],
|
||
},
|
||
{
|
||
id: 'maladie-longue',
|
||
title: 'Arrêt maladie long',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'En cas d\'arrêt maladie de plus d\'un mois, les règles d\'acquisition sont modifiées.' },
|
||
{ type: 'list', content: 'Premier mois de maladie : acquisition normale\nAprès le premier mois : acquisition réduite (facteur 0,80)\nDétection automatique à partir des absences MALADIE consécutives (tolérance de gap ≤ 3 jours)' },
|
||
],
|
||
},
|
||
{
|
||
id: 'report-conges',
|
||
title: 'Report annuel et rollover',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Le reliquat de congés de l\'exercice précédent est automatiquement reporté dans les acquis du nouvel exercice.' },
|
||
{ type: 'list', content: 'Report automatique le 1er juin (CDI/CDD non-forfait) ou 1er janvier (forfait)\nSi "Solde de tout compte" coché sur le contrat clôturé : report remis à 0\nJours fractionnés : saisie manuelle par la RH, ajoutés aux acquis' },
|
||
],
|
||
},
|
||
{
|
||
id: 'consommation-conges',
|
||
title: 'Règle de consommation',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Les absences s\'imputent selon un ordre précis.' },
|
||
{ type: 'list', content: 'D\'abord sur les acquis (report N-1)\nPuis sur les jours en cours d\'acquisition\nEn cours d\'acquisition peut devenir négatif temporairement (se reconstitue avec les acquisitions suivantes)' },
|
||
{ type: 'paragraph', content: 'Compteurs visibles sur l\'onglet Congé de la fiche employé : acquis, en cours d\'acquisition, pris, restant.' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'rtt',
|
||
title: 'RTT (Récupération de Temps de Travail)',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:timer-sand',
|
||
articles: [
|
||
{
|
||
id: 'rtt-principe',
|
||
title: 'Principe et exercice RTT',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Le RTT correspond aux heures supplémentaires accumulées, converties en temps de récupération. L\'exercice RTT va du 1er juin (N-1) au 31 mai (N).' },
|
||
{ type: 'paragraph', content: 'L\'onglet RTT sur la fiche employé affiche le détail hebdomadaire regroupé par mois, avec un compteur global en heures (1 jour = 7h = 420 minutes).' },
|
||
],
|
||
},
|
||
{
|
||
id: 'rtt-compteurs',
|
||
title: 'Compteurs RTT',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'list', content: 'Report N-1 : solde de l\'exercice précédent\nAcquis : cumul des heures supplémentaires de l\'exercice en cours\nDisponible : report + acquis − payé\nPayé : RTT convertis en salaire (soustraits du disponible)' },
|
||
{ type: 'note', content: 'Les contrats INTERIM et le mode PRESENCE n\'accumulent pas de RTT (affiché à 0).' },
|
||
],
|
||
},
|
||
{
|
||
id: 'rtt-paiement',
|
||
title: 'Paiement RTT',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'L\'administrateur RH peut enregistrer un paiement RTT depuis l\'onglet RTT de la fiche employé.' },
|
||
{ type: 'list', content: 'Saisie : mois, nombre de minutes, taux (25% ou 50%)\nPlusieurs paiements possibles par mois\nLes heures payées sont soustraites du solde disponible' },
|
||
],
|
||
},
|
||
{
|
||
id: 'rtt-semaines-mois',
|
||
title: 'Attribution des semaines aux mois',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Chaque semaine ISO est attribuée à un seul mois dans le tableau RTT.' },
|
||
{ type: 'list', content: 'Une semaine est attribuée au mois qui contient son samedi\nSi le samedi tombe en début de mois suivant, la semaine est dans ce mois suivant' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'frais-primes-observations',
|
||
title: 'Frais, primes et observations',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:account-cash-outline',
|
||
articles: [
|
||
{
|
||
id: 'frais',
|
||
title: 'Onglet Frais',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'L\'onglet Frais sur la fiche employé permet de saisir les frais kilométriques et les montants associés.' },
|
||
{ type: 'list', content: 'Mois : obligatoire\nKilomètres : nombre de km (optionnel)\nMontant : en euros (optionnel)\nCommentaire : optionnel\nDeux justificatifs PDF distincts : un pour les km, un pour le montant' },
|
||
{ type: 'note', content: 'Au moins un des deux champs (kilomètres ou montant) doit être supérieur à 0. Un seul enregistrement par mois par employé.' },
|
||
],
|
||
},
|
||
{
|
||
id: 'primes',
|
||
title: 'Onglet Prime',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'list', content: 'Mois : obligatoire\nMontant en euros : obligatoire\nCommentaire : optionnel\nUne seule prime par mois par employé' },
|
||
],
|
||
},
|
||
{
|
||
id: 'observations',
|
||
title: 'Onglet Observation',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'list', content: 'Mois : obligatoire\nTexte d\'observation : obligatoire\nUne seule observation par mois par employé\nNote libre pour le suivi RH' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 'exports',
|
||
title: 'Exports et impressions',
|
||
requiredLevel: 'admin',
|
||
icon: 'mdi:file-pdf-box',
|
||
articles: [
|
||
{
|
||
id: 'export-recap-conges',
|
||
title: 'Export récap. congés',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Génère un PDF A4 portrait récapitulant les congés de tous les employés actifs.' },
|
||
{ type: 'list', content: 'Accessible depuis la page Employés (bouton "Export récap. congés")\nGénère un PDF à la date du jour\nDonnées groupées par site\nColonnes : nom, contrat, CP N-1 restant, samedi restant, CP N, RTT' },
|
||
],
|
||
},
|
||
{
|
||
id: 'export-recap-salaire',
|
||
title: 'Récapitulatif salaire',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Génère un PDF A4 paysage avec le détail mensuel pour la paie.' },
|
||
{ type: 'list', content: 'Sélecteur de mois (défaut = mois courant)\nDonnées groupées par site\nColonnes : nom, base contrat, jours de présence cadre, heures de nuit, panier de nuit, heures RTT payées, congés (nombre + dates), maladie/AT (nombre + dates), primes conducteur (PDJ, repas, nuitée, samedi), observations' },
|
||
],
|
||
},
|
||
{
|
||
id: 'impression-absences',
|
||
title: 'Impression absences',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Génère un PDF A3 paysage du calendrier d\'absences avec des filtres.' },
|
||
{ type: 'list', content: 'Filtres : période (du/au), sites, nature de contrat, type de contrat\nTous les filtres sont cochés par défaut\nCalendrier coloré par type d\'absence' },
|
||
],
|
||
},
|
||
{
|
||
id: 'export-heures-annuelles',
|
||
title: 'Export heures annuelles',
|
||
requiredLevel: 'admin',
|
||
blocks: [
|
||
{ type: 'paragraph', content: 'Génère un PDF par employé avec le détail jour par jour de ses heures sur une année.' },
|
||
{ type: 'list', content: 'Accessible depuis la fiche employé (bouton imprimante)\nChoix de l\'année civile (janvier à décembre)\nColonnes adaptées au mode de suivi (TIME, PRESENCE, conducteur)\nSections séparées en cas de changement de contrat en cours d\'année' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
]
|