From ace52f8fc551359f62a9d8e0314cbf85adc7c53a Mon Sep 17 00:00:00 2001 From: matthieu Date: Wed, 1 Apr 2026 22:59:43 +0200 Subject: [PATCH] fix(mcp) : add mcp-sessions dir in prod Dockerfile + add time tracking rule doc Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/claude-time-tracking-rule.md | 87 +++++++++++++++++++++++++++++++ infra/prod/Dockerfile | 2 +- 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 docs/claude-time-tracking-rule.md diff --git a/docs/claude-time-tracking-rule.md b/docs/claude-time-tracking-rule.md new file mode 100644 index 0000000..6532184 --- /dev/null +++ b/docs/claude-time-tracking-rule.md @@ -0,0 +1,87 @@ +# Règle Claude : Time Tracking automatique via Lesstime + +> Ajouter ce contenu dans le CLAUDE.md de chaque projet ou dans `~/.claude/CLAUDE.md` pour l'appliquer globalement. + +--- + +## Time Tracking obligatoire + +Claude DOIT créer une time entry dans Lesstime au démarrage de chaque tâche de développement, ou sur demande explicite de l'utilisateur ("lance le chrono", "start timer", "track le temps"). + +### Déclencheurs + +1. **Début d'une tâche de dev** : feature, bugfix, refactoring, infra, review +2. **Demande explicite** : "lance le chrono", "start timer", "track le temps" +3. **Depuis un ticket Lesstime** : lier directement au taskId du ticket référencé + +### Méthode + +Créer la time entry via **curl** sur l'API REST Lesstime : + +1. **Login** : `POST http://project.malio-dev.fr/api/login_check` + - Body : `{"username":"admin","password":"admin"}` + - Réponse : 204 avec cookie `Set-Cookie: BEARER=` + +2. **Créer le timer** : `POST http://project.malio-dev.fr/api/time_entries` + - Headers : `Cookie: BEARER=`, `Content-Type: application/ld+json`, `Accept: application/ld+json` + - Body : + ```json + { + "user": "/api/users/5", + "startedAt": "", + "title": "", + "project": "/api/projects/", + "tags": ["/api/task_tags/"], + "task": "/api/tasks/" + } + ``` + +3. **Stopper le timer** : `PATCH http://project.malio-dev.fr/api/time_entries/` + - Headers : `Cookie: BEARER=`, `Content-Type: application/merge-patch+json`, `Accept: application/ld+json` + - Body : `{"stoppedAt": ""}` + +### Paramètres obligatoires + +- **user** : TOUJOURS `/api/users/5` (Matthieu) +- **startedAt** : ISO 8601 avec timezone (ex: `2026-04-01T14:30:00+02:00`) +- **title** : description courte de la tâche en cours +- **project** : selon le projet (voir mapping ci-dessous) + +### Tags (choisir selon le type de travail) + +| Tag | ID | IRI | +|-----|----|-----| +| Backend | 3 | `/api/task_tags/3` | +| Frontend | 2 | `/api/task_tags/2` | +| IA | 7 | `/api/task_tags/7` | +| Infra | 5 | `/api/task_tags/5` | +| UI/UX | 4 | `/api/task_tags/4` | +| Maintenance | 6 | `/api/task_tags/6` | +| RDV | 1 | `/api/task_tags/1` | +| Réunion | 8 | `/api/task_tags/8` | +| Formation | 10 | `/api/task_tags/10` | +| Gestion projet | 9 | `/api/task_tags/9` | + +### Mapping projets + +| Projet | ID | IRI | +|--------|----|-----| +| Lesstime | 5 | `/api/projects/5` | +| Inventory | 7 | `/api/projects/7` | +| SIRH | 12 | `/api/projects/12` | +| Infrastructure | 13 | `/api/projects/13` | +| Malio UI | 11 | `/api/projects/11` | +| ERP Liot | 6 | `/api/projects/6` | +| Ferme | 8 | `/api/projects/8` | +| ADMIN | 16 | `/api/projects/16` | +| Maintenance-LIOT | 17 | `/api/projects/17` | +| Qualiopi | 14 | `/api/projects/14` | +| Vaultwarden | 18 | `/api/projects/18` | + +### Règles + +- **Un seul timer actif à la fois** (contrainte DB) — stopper l'actif avant d'en créer un nouveau +- **Toujours stopper le timer** en fin de tâche ou sur demande +- **Informer l'utilisateur** quand un timer est lancé/stoppé (numéro, titre, projet, tags) +- **Lier au ticket Lesstime** si un ticket est référencé (champ `task`) +- **Choisir les tags intelligemment** selon le type de travail effectué diff --git a/infra/prod/Dockerfile b/infra/prod/Dockerfile index 520f584..878e97d 100644 --- a/infra/prod/Dockerfile +++ b/infra/prod/Dockerfile @@ -72,7 +72,7 @@ COPY --from=frontend-build /app/frontend/.output/public /var/www/html/frontend/. RUN echo "APP_ENV=prod" > /var/www/html/.env # Permissions -RUN mkdir -p /var/www/html/var /var/www/html/var/uploads \ +RUN mkdir -p /var/www/html/var /var/www/html/var/uploads /var/www/html/var/mcp-sessions \ && chown -R www-data:www-data /var/www/html/var WORKDIR /var/www/html