Un portail métier qui rend du temps aux équipes
Le portail heures accompagne salariés, administrateurs et secrétariat avec des sauvegardes automatiques, des rapports homogènes et des workflows documentaires contrôlables.
Idée centrale
L'intelligence artificielle ne remplace pas les équipes : elle leur rend du temps.
Le projet Portail heures l’entreprise illustre une approche concrète et pragmatique de l'IA appliquée aux outils internes. L'objectif n'est pas de retirer l'humain du processus, mais d'automatiser les tâches répétitives, de fiabiliser les documents, de réduire les ressaisies et de permettre aux équipes de se concentrer sur leur métier.
Dans ce cas d'usage, l'outil accompagne les salariés, les administrateurs et le secrétariat dans la gestion quotidienne :
- saisie des heures par chantier ;
- génération automatique de PDF ;
- envoi de rapports par e-mail ;
- demandes et validation de congés ;
- transmission mensuelle de documents ;
- gestion des comptes et archivage ;
- suivi administratif centralisé.
L'IA intervient ici comme accélérateur de conception, d'amélioration et d'automatisation : elle aide à transformer un besoin terrain en interface métier structurée, maintenable et utilisable au quotidien.
Le problème de départ
Dans beaucoup d'organisations, les équipes perdent du temps sur des tâches administratives nécessaires mais peu valorisantes :
- recopier des heures dans plusieurs supports ;
- générer manuellement des rapports ;
- vérifier que les documents sont lisibles ;
- relancer les salariés ou les responsables ;
- envoyer des pièces jointes une par une ;
- gérer les oublis de mot de passe ;
- suivre les demandes de congés dans des échanges dispersés ;
- conserver des historiques sans alourdir les dossiers.
Ces tâches ne demandent pas toujours une expertise forte, mais elles consomment de l'attention. Elles créent aussi des risques : oubli, doublon, mauvais fichier, erreur de période, PDF illisible, mauvaise adresse e-mail, compte utilisateur encore actif alors qu'il devrait être archivé.
Le portail répond à ce besoin : garder l'humain dans la décision, mais automatiser tout ce qui peut l'être autour de lui.
Ce que le portail automatise
1. La saisie des heures
Chaque salarié peut saisir ses heures par chantier, semaine et année. L'interface limite la période disponible autour de la semaine courante, afin d'éviter les erreurs de saisie trop anciennes ou trop anticipées.
Les informations renseignées sont synchronisées automatiquement. L'utilisateur n'a pas besoin de penser à sauvegarder en permanence : l'application le fait pour lui.
Résultat : moins d'oublis, moins de ressaisie, moins de fichiers dispersés.
2. La génération des rapports PDF
Lorsqu'un salarié transmet ses heures, le portail génère automatiquement un PDF clair et structuré.
Le rapport contient notamment :
- l'identité du salarié ;
- la semaine concernée ;
- les bornes de dates ;
- les chantiers ;
- les codes chantier ;
- l'indication IGD si elle est cochée ;
- les tâches réalisées ;
- le détail journalier des heures ;
- les totaux ;
- une page par chantier pour améliorer la lisibilité.
Si un rapport a déjà été envoyé pour la même semaine, l'application ne le renvoie pas silencieusement. Elle demande confirmation et indique clairement qu'il s'agit d'un rapport rectificatif.
Résultat : l'administratif est plus fiable, sans retirer la validation humaine.
3. Les e-mails structurés
Les e-mails envoyés par l'application reprennent une charte graphique cohérente avec l'identité de l'entreprise.
L'application génère des e-mails HTML pour :
- les rapports d'heures ;
- les réinitialisations de mot de passe ;
- les confirmations de changement d'adresse e-mail ;
- les demandes de congés ;
- les décisions de congés ;
- l'envoi mensuel de documents via la fonctionnalité Report.
Résultat : les échanges sont plus professionnels, plus lisibles, et les informations importantes ne sont pas perdues dans des messages informels.
4. Les demandes de congés
Le salarié peut faire une demande de congés directement depuis son espace.
L'application calcule automatiquement le nombre de jours :
- les jours fériés ne sont pas comptés ;
- les dimanches sont exclus ;
- les samedis sont comptabilisés pour les congés payés ;
- un motif optionnel peut être ajouté.
L'administrateur peut ensuite accepter ou refuser la demande. Un PDF est généré avec le statut, la date, l'heure et une signature numérique.
Résultat : le salarié garde un parcours simple, et la direction conserve une trace propre de la décision.
5. La fonctionnalité Report
La section Report est réservée aux administrateurs.
Elle permet de choisir :
- un salarié ;
- un mois ;
- une année ;
- plusieurs fichiers à joindre.
L'administrateur peut ajouter des fichiers en plusieurs fois, depuis différents répertoires, supprimer un fichier sélectionné avant l'envoi, puis transmettre l'ensemble par e-mail au salarié.
L'e-mail contient :
- le mois concerné ;
- la liste des fichiers joints ;
- une signature numérique de l'administrateur ;
- une mise en forme HTML cohérente avec la charte graphique.
Les fichiers ne sont pas conservés après l'envoi. Seul un journal garde les métadonnées utiles : date, heure, salarié, administrateur et noms des fichiers transmis.
Résultat : les envois mensuels sont rapides, tracés, mais sans stockage inutile des pièces jointes.
6. La gestion des utilisateurs
L'administrateur peut :
- créer un utilisateur ;
- modifier ses informations ;
- changer son e-mail sans changer son mot de passe ;
- laisser le mot de passe inchangé si le champ est vide ;
- consulter la dernière connexion ;
- archiver un utilisateur ;
- restaurer un utilisateur archivé ;
- supprimer définitivement un utilisateur archivé.
Un utilisateur archivé ne peut plus se connecter. Même une session déjà ouverte est refusée côté serveur.
Résultat : l'administration des accès est plus sûre, plus claire et mieux adaptée au cycle de vie réel des équipes.
Ce que l'IA apporte dans ce type de projet
L'IA ne signe pas les décisions, ne valide pas les congés et ne remplace pas la connaissance métier.
Elle aide plutôt à :
- formaliser les besoins à partir de retours terrain ;
- transformer une demande fonctionnelle en écran utilisable ;
- générer plus vite les routes API nécessaires ;
- repérer les incohérences d'interface ;
- améliorer la lisibilité des PDF ;
- adapter les e-mails à une charte graphique ;
- renforcer les contrôles de sécurité ;
- produire une documentation claire ;
- faire évoluer le projet par itérations courtes.
L'humain reste responsable :
- du choix des règles ;
- de la validation finale ;
- des décisions administratives ;
- de la relation avec les salariés ;
- de la qualité métier du processus.
L'IA accélère l'exécution. Elle ne remplace pas la responsabilité.
Architecture du projet
Le projet a été simplifié autour d'un seul service à lancer.
Backend
Le serveur principal est server.js.
Il assure :
- l'authentification ;
- la gestion des comptes ;
- les droits administrateur ;
- la sauvegarde des heures ;
- la génération des PDF ;
- l'envoi des e-mails ;
- la gestion des congés ;
- la fonctionnalité Report ;
- le service des fichiers frontend compilés.
Technologies principales :
- Node.js ;
- Express ;
- SQLite via
node:sqlite; - JWT pour les sessions ;
- bcryptjs pour les mots de passe ;
- nodemailer pour les e-mails ;
- pdfkit pour les PDF.
Frontend
L'interface est dans lumina-frontend/src/App.jsx.
Elle utilise :
- React ;
- Vite ;
- Axios ;
- Framer Motion ;
- Lucide React ;
- une charte graphique adaptée à l’entreprise.
Le frontend est compilé dans lumina-frontend/dist, puis servi directement par server.js.
Base de données
La base SQLite contient notamment :
users: comptes, rôles, e-mail, dernière connexion, archivage ;timesheets: brouillons et heures hebdomadaires ;report_submissions: suivi des rapports envoyés ;leave_requests: demandes de congés ;leave_drafts: brouillons de congés ;report_document_logs: journal des envois Report.
Cette structure reste volontairement compacte : elle suffit pour un outil interne, sans imposer une infrastructure lourde.
API principale
Authentification et compte
| Méthode | Route | Rôle | Utilité |
|---|---|---|---|
POST | /api/login | Tous | Connexion utilisateur ou administrateur |
GET | /api/me | Connecté | Récupération de la session courante |
POST | /api/logout | Connecté | Déconnexion |
POST | /api/change-password | Connecté | Changement de mot de passe |
POST | /api/forgot-password | Public | Demande de réinitialisation par identifiant ou e-mail |
POST | /api/reset-password | Public avec token | Réinitialisation du mot de passe |
POST | /api/account/email-change | Connecté | Demande de changement d'adresse e-mail |
GET | /api/confirm-email | Public avec token | Confirmation de la nouvelle adresse |
PUT | /api/account/preferences | Connecté | Préférences utilisateur |
Heures et rapports
| Méthode | Route | Rôle | Utilité |
|---|---|---|---|
GET | /api/load-data | Utilisateur | Chargement des heures d'une semaine |
POST | /api/save-data | Utilisateur | Synchronisation automatique des heures |
POST | /api/submit-timesheet | Utilisateur | Génération PDF et envoi du rapport |
Les comptes administrateurs sont volontairement exclus de ces routes utilisateur.
Congés
| Méthode | Route | Rôle | Utilité |
|---|---|---|---|
GET | /api/leave-draft | Utilisateur | Chargement du brouillon de demande |
POST | /api/leave-draft | Utilisateur | Synchronisation du brouillon |
DELETE | /api/leave-draft | Utilisateur | Suppression du brouillon |
GET | /api/leave-requests/mine | Utilisateur | Liste de ses demandes |
POST | /api/leave-requests | Utilisateur | Envoi d'une demande |
GET | /api/leave-requests | Administrateur | Liste des demandes |
PUT | /api/leave-requests/:id/decision | Administrateur | Validation ou refus |
DELETE | /api/leave-requests/:id | Administrateur | Suppression d'une demande |
GET | /api/leave-requests/:id/pdf | Utilisateur ou administrateur autorisé | Téléchargement du PDF |
Report
| Méthode | Route | Rôle | Utilité |
|---|---|---|---|
POST | /api/reports/send | Administrateur | Envoi mensuel de fichiers au salarié |
GET | /api/report-logs | Administrateur | Journal des envois |
DELETE | /api/report-logs | Administrateur | Vidage du journal |
Payload simplifié pour l'envoi Report :
{
"userId": 12,
"month": 9,
"year": 2026,
"files": [
{
"name": "fiche-paie-septembre.pdf",
"type": "application/pdf",
"data": "base64-sans-prefixe"
}
]
}
Les fichiers sont envoyés en pièce jointe, mais ne sont pas stockés après l'envoi.
Administration
| Méthode | Route | Rôle | Utilité |
|---|---|---|---|
GET | /api/admin-dashboard | Administrateur | Tableau de bord |
GET | /api/users | Administrateur | Liste des utilisateurs actifs |
GET | /api/users/archived | Administrateur | Liste des utilisateurs archivés |
POST | /api/users | Administrateur | Création d'un utilisateur |
PUT | /api/users/:id | Administrateur | Modification d'un utilisateur |
PUT | /api/users/:id/archive | Administrateur | Archivage d'un utilisateur |
PUT | /api/users/:id/restore | Administrateur | Restauration d'un utilisateur archivé |
DELETE | /api/users/:id | Administrateur | Suppression définitive d'un utilisateur archivé |
Avantages pour les équipes
Pour les salariés
- moins de formulaires manuels ;
- moins d'e-mails à rédiger ;
- saisie simple et guidée ;
- brouillons synchronisés ;
- confirmation claire des envois ;
- accès à ses demandes et documents.
Pour les administrateurs
- vision consolidée des rapports ;
- suivi des congés ;
- gestion centralisée des comptes ;
- archivage sécurisé ;
- envoi mensuel de documents depuis une interface unique ;
- moins de manipulations répétitives.
Pour l'organisation
- documents plus homogènes ;
- meilleure traçabilité ;
- réduction des erreurs ;
- gain de temps administratif ;
- outil adapté aux règles internes ;
- maîtrise des accès ;
- meilleure continuité en cas d'absence ou de changement d'équipe.
Exemple de gain de temps
Avant l'outil, une équipe pouvait devoir :
- récupérer les heures ;
- vérifier la semaine ;
- remettre en forme les données ;
- générer un document ;
- rédiger un e-mail ;
- joindre le bon fichier ;
- archiver l'échange ;
- gérer les corrections.
Avec le portail, une grande partie de ces étapes devient automatique ou semi-automatique.
Le temps gagné ne supprime pas le rôle administratif : il le recentre sur les contrôles utiles, les décisions et les échanges humains.
Positionnement pour un site sur l'IA
Ce projet peut être présenté comme un cas concret d'IA utile, sobre et opérationnelle.
Message recommandé :
L'IA ne remplace pas les équipes. Elle transforme les tâches répétitives en processus fiables, pour que chacun puisse se concentrer sur ce qui demande vraiment du jugement humain.
Ce cas illustre une IA au service :
- de la clarté ;
- de la productivité ;
- de la qualité documentaire ;
- de la sécurité ;
- de l'expérience utilisateur ;
- de l'amélioration continue.
Ce que ce cas concret démontre
- Un outil métier peut rester simple à déployer.
- Une interface interne peut être soignée et agréable.
- L'automatisation peut respecter les rôles humains.
- Les PDF et e-mails peuvent devenir homogènes sans travail manuel.
- Les administrateurs gardent la décision.
- Les salariés gagnent en autonomie.
- L'IA peut accélérer la construction et l'amélioration d'un outil sans prendre la place des équipes.
Phrase de conclusion
Le Portail heures l’entreprise montre une vision réaliste de l'IA : une technologie qui aide les équipes à aller plus vite, à faire moins d'erreurs et à mieux structurer leur travail, sans effacer la place de l'humain dans les décisions.