Met à jour le README : Principe, comptes, pages, présence/ntfy
La section Principe décrivait un rattrapage répandu sur matin+après-midi,
alors qu'il ne touche plus que les départs du soir depuis b9a75ff.
Ajoute aussi ce qui manquait : auth par compte, pages Statistiques/
Journaux/export, webhooks de présence et notifications ntfy, et
force_secure_cookies dans Configuration.
This commit is contained in:
60
README.md
60
README.md
@ -33,11 +33,17 @@ La semaine cible est **39h** (7h48 / jour). Les directives imposent des plages d
|
|||||||
Ces horaires sont réglables par utilisateur depuis la page **Réglages** de l'app (voir
|
Ces horaires sont réglables par utilisateur depuis la page **Réglages** de l'app (voir
|
||||||
[Configuration](#configuration)).
|
[Configuration](#configuration)).
|
||||||
|
|
||||||
Quand un écart apparaît, l'outil ne le reporte pas d'un coup sur la fin de la journée en
|
Le matin n'est **jamais** touché : sa durée nominale est fixe, et si elle ne rentre pas
|
||||||
cours : il **répartit le manque à parts égales sur toutes les demi-journées restantes**
|
avant la pause déjeuner, le surplus est reporté sur l'après-midi du même jour. Quand un
|
||||||
de la semaine (matin et après-midi, aujourd'hui compris), pour un rattrapage progressif
|
écart hebdomadaire apparaît, il est **réparti uniquement sur les heures de départ du
|
||||||
et confortable plutôt qu'un rush le soir même. Si le rythme normal suffit déjà à rentrer
|
soir** des demi-journées restantes (répartition égale, recalculée à chaque fois qu'un
|
||||||
dans les clous, aucune préconisation n'est affichée.
|
départ atteint sa limite) :
|
||||||
|
- un **retard** repousse les départs — d'abord dans la marge de confort `depart_vise`,
|
||||||
|
puis au-delà si besoin (jusqu'à minuit) ;
|
||||||
|
- une **avance** avance les départs, mais jamais en dessous du minimum de présence de
|
||||||
|
l'après-midi.
|
||||||
|
|
||||||
|
Si le rythme normal suffit déjà à rentrer dans les clous, aucune préconisation n'est affichée.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -58,6 +64,33 @@ supplémentaire moyenne à ajouter sur chacune.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Pages
|
||||||
|
|
||||||
|
| Page | Contenu |
|
||||||
|
|---|---|
|
||||||
|
| **Semaine courante** (`/`) | Le tableau de saisie ci-dessus, pour la semaine en cours ou une autre semaine choisie via le calendrier. |
|
||||||
|
| **Statistiques** (`/stats`) | Conformité aux plages obligatoires, ponctualité moyenne par demi-journée, distribution des horaires, graphique des soldes hebdomadaires. |
|
||||||
|
| **Journaux** (`/logs`) | Historique par utilisateur : changements de réglages, notifications ntfy envoyées, pointages de présence reçus. |
|
||||||
|
| **Réglages** (`/settings`) | Plages horaires personnelles, notifications ntfy, URLs des webhooks de présence — voir [Configuration](#configuration) et [Présence & notifications](#présence--notifications). |
|
||||||
|
| **Aide** (`/aide`) | Guide de configuration de ntfy et de l'app de présence (Automation/Tasker). |
|
||||||
|
| **Export** | Boutons **⇩ Exporter** (semaine, dans l'en-tête) et **⇩ {année}** (dans l'historique) : téléchargent un fichier `.ods`. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Comptes & connexion
|
||||||
|
|
||||||
|
Chaque personne a son propre compte, ses propres pointages, congés, réglages et jetons de
|
||||||
|
présence — tout est stocké séparément dans `data/users/<identifiant>/`.
|
||||||
|
|
||||||
|
Connexion par email + mot de passe, restreinte au domaine `allowed_email_domain` (voir
|
||||||
|
[Configuration](#configuration)). Pour un compte qui n'a pas encore de mot de passe, se
|
||||||
|
connecter avec son adresse envoie un lien (valable 24h) pour en définir un — c'est aussi
|
||||||
|
le seul moyen d'en obtenir un : il n'y a pas de "mot de passe oublié" en libre-service une
|
||||||
|
fois un mot de passe défini. La session est un cookie signé (HMAC), sans base de données
|
||||||
|
de sessions côté serveur.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Lancement
|
## Lancement
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -104,6 +137,9 @@ Seul `data/config.example.json` est versionné.
|
|||||||
refusé par sécurité (anti open-redirect). **Toujours renseigner `base_url` en production.**
|
refusé par sécurité (anti open-redirect). **Toujours renseigner `base_url` en production.**
|
||||||
- `mail_from` — adresse expéditrice des emails de connexion.
|
- `mail_from` — adresse expéditrice des emails de connexion.
|
||||||
- `smtp` — serveur relais utilisé pour l'envoi (host, port, identifiants, TLS).
|
- `smtp` — serveur relais utilisé pour l'envoi (host, port, identifiants, TLS).
|
||||||
|
- `force_secure_cookies` (optionnel, `false` par défaut) — force le flag `Secure` sur le
|
||||||
|
cookie de session même si la requête entrante n'est pas vue comme HTTPS par l'app
|
||||||
|
(utile derrière un reverse proxy qui termine le TLS).
|
||||||
|
|
||||||
Les rappels ntfy (topic, serveur, plage horaire) et les **plages horaires** (bornes de
|
Les rappels ntfy (topic, serveur, plage horaire) et les **plages horaires** (bornes de
|
||||||
présence obligatoire matin/après-midi, voir [Principe](#principe), et heure de reprise
|
présence obligatoire matin/après-midi, voir [Principe](#principe), et heure de reprise
|
||||||
@ -113,6 +149,20 @@ les avertissements de saisie, les stats de conformité et les préconisations de
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Présence & notifications
|
||||||
|
|
||||||
|
La page **Réglages** fournit, par utilisateur, deux URLs à jeton unique
|
||||||
|
(`/presence/{token}/arrivee` et `/presence/{token}/depart`) — sans autre authentification,
|
||||||
|
la sécurité vient de l'imprévisibilité du jeton. Une app comme **Automation** (alternative
|
||||||
|
libre à Tasker) les appelle depuis le téléphone en entrant/sortant d'une zone (wifi,
|
||||||
|
géofence...) pour signaler l'arrivée ou le départ.
|
||||||
|
|
||||||
|
Une fois configuré, l'app peut envoyer un rappel [ntfy](https://ntfy.sh) si quelqu'un est
|
||||||
|
détecté présent sans avoir pointé son arrivée, ou parti sans avoir pointé son départ,
|
||||||
|
uniquement pendant les jours/heures de travail. Guide complet sur la page **Aide**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user