Commit Graph
9 Commits
Author SHA1 Message Date
Claude 441a1758a5 Fix: la résolution DNS dynamique du nginx frontend écrasait le chemin de l'API
Avec un proxy_pass entièrement basé sur une variable, nginx ne remplace
plus le préfixe de location par le reste de l'URI comme il le fait pour
une valeur statique : toutes les requêtes /api/* étaient réécrites en
exactement /api/ (sans /auth/login, /users, etc.), d'où les 404 sur
toutes les routes. Fix : $request_uri est maintenant explicitement
ajouté au proxy_pass pour transmettre le chemin et la query string
d'origine.

Reproduit et vérifié avec un vrai nginx local + un faux backend qui
échoue le chemin reçu : le bug était bien présent avec l'ancienne
config, et absent avec la nouvelle.
2026-07-06 14:49:23 +00:00
Claude 767b7aaa3b Rendre l'application utilisable sur mobile pour les cadres
- Calendrier : sous 640px, la grille 7 colonnes devient une liste
  verticale (une ligne pleine largeur par jour), boutons AM/PM en
  cibles tactiles de 44px minimum.
- Popover de statut : positionnement recalculé pour rester dans
  l'écran (bascule au-dessus de la cellule et se recale à gauche si
  besoin) au lieu de pouvoir déborder hors viewport.
- Tableaux admin (sociétés, utilisateurs, validation) : scroll
  horizontal indépendant pour ne pas casser la mise en page sur petit
  écran.
- Nav admin et en-tête compactés sur mobile.

Testé avec Playwright en viewport mobile (375x812) : calendrier liste,
popover, connexion et vues admin.
2026-07-06 11:15:26 +00:00
Claude 0c438275b5 Éviter les collisions DNS sur le réseau partagé + ne plus crasher sur erreur DB
- Renomme les services (db/backend/frontend -> presencia-db/
  presencia-backend/presencia-frontend) : sur le réseau externe partagé
  nginx_default, un nom générique comme "db" peut entrer en collision
  avec un service du même nom dans une autre stack, et Docker résout
  alors le nom en round-robin vers le mauvais container. Confirmé en
  prod : le bootstrap réussissait puis une requête suivante échouait
  avec une erreur d'authentification alors que le mot de passe était
  correct.
- nginx résout maintenant le backend dynamiquement (resolver + variable)
  au lieu de résoudre une seule fois au démarrage, pour survivre à une
  recréation du container backend.
- Ajoute express-async-errors : une erreur dans une route async (ex. la
  requête pg qui échoue) était une rejection non gérée et faisait
  planter tout le process Node au lieu de renvoyer une 500 propre.
  Testé en local : avant le fix, une erreur d'auth pg tuait le process ;
  après le fix, il répond 500 et reste opérationnel.
2026-07-06 09:26:28 +00:00
Claude 2170489424 Fix: aligner PGPASSWORD (backend) sur POSTGRES_PASSWORD (db)
Le précédent remplacement du mot de passe Postgres n'avait touché que
la clé POSTGRES_PASSWORD du service db, laissant le backend avec
l'ancien mot de passe sous la clé PGPASSWORD — cause de l'échec
d'authentification systématique malgré la réinitialisation du volume.
2026-07-06 09:10:48 +00:00
Claude d1157517dd Logger l'erreur réelle lors de l'attente de la base de données
Le message générique masquait la cause (ex: mot de passe désynchronisé
avec un volume Postgres déjà initialisé). On affiche maintenant le
message d'erreur pg à chaque tentative et dans l'erreur finale.
2026-07-06 08:44:57 +00:00
Claude 6c0b3e17ab Définir les identifiants admin et le mot de passe Postgres
- Admin : michaelschal@ffest.fr / Michael
- Mot de passe Postgres généré aléatoirement
2026-07-06 08:24:36 +00:00
Claude 0de1b14eba Rattacher les services au réseau Docker externe nginx_default
Permet à un reverse proxy nginx déjà en place (sur le réseau
nginx_default) d'atteindre les containers de Presencia directement.
Le réseau doit déjà exister sur l'hôte avant docker compose up.
2026-07-06 08:23:18 +00:00
Claude 64b9abf1c0 Configurer directement les variables dans docker-compose.yml
Supprime le fichier .env racine : ports, mot de passe Postgres,
JWT_SECRET et identifiants admin sont désormais définis en dur dans
docker-compose.yml, à éditer avant le premier démarrage.
2026-07-04 23:13:09 +00:00
Claude a73ab28fae Ajout de l'application Presencia (gestion des présences multi-sociétés)
Application complète : API Node/Express + PostgreSQL, frontend HTML/JS
mono-page, et déploiement Docker sur ports non standards (8781/4790/6543).

- Cadres : calendrier mensuel, saisie de présence par demi-journée
  (présent/absent/congé/RTT), validation de fin de mois qui verrouille
  leurs propres saisies.
- Admin : gestion des sociétés et utilisateurs (rattachement société <->
  cadre), consultation de tous les plannings, validation d'une société
  entière une fois tous ses cadres validés, réouverture en cas de
  correction, export PDF et Excel par société/mois.
2026-07-04 20:41:27 +00:00