Files
IdeA/.ideai/tickets/214/carnet.md

37 lines
2.5 KiB
Markdown

---
issueRef: "#214"
version: 7
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1786809011367
---
## Triage 2026-08-15
- Symptôme: sur l'interface web PC, l'accès aux fichiers échoue avec `missing Origin header`.
- Diagnostic convergent UX/Architect: rejet backend `403` sur validation `Origin` appliquée aux routes `/api/*`, y compris des `GET` fichiers browser-safe.
- Branche locale créée par Git: `fix/214-web-origin-header-file-access` depuis `develop`.
- Direction de fix: conserver le contrôle strict `Origin` pour `POST`/`OPTIONS`/WS, mais accepter les `GET` lecture/fichiers sans header `Origin` et ajouter des tests de non-régression.
- UX: si un message utilisateur reste nécessaire, ne pas exposer le texte technique brut `missing Origin header`.
## Implémentation DevBackend
- Fichier modifié: `crates/web-server/src/lib.rs`.
- Politique livrée: `GET /api/project-files`, `/api/project-files/download-file`, `/api/project-files/download-directory` acceptés sans `Origin`; validation stricte maintenue si `Origin` est présent.
- Non-régression attendue: `POST /api/pair` sans `Origin` toujours refusé, WebSocket sans `Origin` toujours refusé.
- Tests DevBackend:
- `cargo fmt --package web-server` => OK
- `cargo test -p web-server origin_header` => OK (3 tests)
- `cargo test -p web-server authorized_project_file_gets_allow_missing_origin_header` => OK
- `cargo test -p web-server` => KO (`Too many open files`)
- `cargo test -p web-server -- --test-threads=1` => échecs PTY/WebSocket non reliés au correctif Origin selon DevBackend
## Verdict QA
- QA a ajouté un test négatif complémentaire pour verrouiller qu'une route fichier non-GET sans `Origin` reste refusée.
- Commande validante principale: `cargo test -p web-server origin_header -- --nocapture` => VERT (4/4)
- Rejeu ciblé: `cargo test -p web-server non_get_project_file_route_still_requires_origin_header -- --nocapture` => VERT
- Conclusion: `GET /api/project-files*` sans `Origin` accepté; `POST /api/pair`, WebSocket et route fichier non-GET sans `Origin` refusés.
## Git
- Commit fix: `b3fe1d5` — `fix(web): accepte GET /api/project-files* sans Origin (allow_missing ciblé) — #214`
- Commit bookkeeping partagé: `76f2202` — `chore(idea): bookkeeping #214 QA verte + clôtures index #212/#213`
- Merge local: `a369993` — `merge(web): accès fichiers sans Origin header — #214 (QA verte)`
- Branche finale active: `develop`
- Aucun push effectué.