# Workflow

## Langue

- **UI** : francais (tout ce qui est visible utilisateur)
- **Communication avec l'utilisateur** : francais
- **Code** (noms de classes, methodes, variables, types) : anglais
- **Commentaires** (PHP, TS, Vue — docblock, inline, bloc) : **francais**. Objectif : faciliter la relecture par l'equipe FR sans polluer l'API publique du code

## Delegation Codex

Pour les taches mecaniques (generation de tests boilerplate, renommages massifs, refacto repetitif, scaffolding), **deleguer a Codex** via le plugin `codex` (skill `codex:rescue`).

- **Codex** = junior rapide et pas cher → executions mecaniques
- **Claude** = senior qui verifie et reflechit → design, review, decisions

Ratio qualite/credits optimal : Claude conserve la reflexion et la validation, Codex avale le boilerplate.

## Avant d'implementer un ticket

Les specs fonctionnelles vivent sous `docs/{rbac,sites,modules}/ticket-*-spec.md`.

Avant de coder :
1. Lire la spec correspondante en entier (elles sont longues mais exhaustives)
2. Ne pas inventer de detail non specifie — demander a l'utilisateur ou citer explicitement la section manquante
3. Si la spec contredit le code existant, poser la question avant de choisir

## Verification avant "c'est fini"

Ne jamais declarer une tache terminee sans avoir lance les verifications applicables :

| Ce qui a bouge | Commande a lancer |
|---|---|
| Fichiers PHP | `make test` + `make php-cs-fixer-allow-risky` |
| Fichiers front (Vue/TS) | `make nuxt-test` |
| Migrations | `make migration-migrate` (sur BDD fraiche ideal : `make db-reset`) |
| Sidebar / permissions | Verifier que les 3 miroirs RBAC sont alignes (cf. @.claude/rules/testing.md) |
| UI visible | Demarrer `make dev-nuxt` et verifier le golden path dans le navigateur |

Si une verification echoue ou ne peut pas etre lancee (ex : container pas demarre), le dire explicitement plutot que d'annoncer "fini".

## Time tracking Lesstime

Au demarrage de toute tache de dev sur Starseed, creer une time entry via l'API Lesstime (cf. `~/.claude/CLAUDE.md` pour la procedure complete).
- Projet : `/api/projects/6` (STARSEED)
- Tags : choisir selon le type (Backend `3`, Frontend `2`, Infra `5`, UI/UX `4`, Maintenance `6`, Gestion projet `9`, etc.)

## Fix `make cache-clear` (permissions `var/`)

Si `make cache-clear` echoue sur les permissions de `var/` :

```bash
docker exec -t -u root php-starseed-fpm chown -R www-data:www-data /var/www/html/var
docker exec -t -u www-data php-starseed-fpm php bin/console cache:clear
```

A terme : integrer ce fix dans le `makefile` lui-meme.

## Docker — references utiles

- Container PHP : `php-starseed-fpm`
- Container Nginx : `nginx-starseed` (port 8083)
- Container DB : PostgreSQL port **5437** (interne et externe)
- Config dev : `infra/dev/.env.docker` (override local : `infra/dev/.env.docker.local`)
- Config prod : `infra/prod/` (Dockerfile multi-stage, `docker-compose.prod.yml`)
- Apres modif nginx : `docker restart nginx-starseed`
