From bc2a1174d145878a5489c685666f1916616c1885 Mon Sep 17 00:00:00 2001 From: Hermann_Kitio Date: Thu, 23 Apr 2026 03:26:52 +0300 Subject: [PATCH] docs: fermeture FTD-28 (Semgrep CI), TECH_DEBT v1.18, CI verte Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/CHANGELOG.md | 13 +++++++++++++ docs/TECH_DEBT.md | 16 +++------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b20646d..f26ae67 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -29,6 +29,19 @@ Chaque entrée suit ce format : --- +## [Unreleased] — 2026-04-23 — FTD-28 — Semgrep CI + CI verte + +### Added +- Semgrep scan (`--severity=ERROR`) dans les CI frontend et backend (FTD-28). +- Variables d'env factices dans CI frontend pour les tests. + +### Fixed +- 4 erreurs ESLint corrigées : split SimulationFlowProvider (react-refresh), hook conditionnel MonProfilPreparation, ref render useTimer, setState effect AppLayout. +- Prettier format sur 7 fichiers. +- CI frontend verte pour la première fois depuis le 18 avril. + +--- + ## [Unreleased] — 2026-04-23 — FTD-27 — CI backend ### Added diff --git a/docs/TECH_DEBT.md b/docs/TECH_DEBT.md index 181d0fd..b42acc8 100644 --- a/docs/TECH_DEBT.md +++ b/docs/TECH_DEBT.md @@ -1,6 +1,6 @@ # TECH_DEBT.md — Expria Frontend -> **Document de référence — Version 1.17** +> **Document de référence — Version 1.18** > Ce document recense les décisions techniques prises par pragmatisme qui devront être revisitées, les stubs temporaires, et les fonctionnalités reportées. > À mettre à jour après chaque session de développement. > @@ -192,18 +192,6 @@ Risque : confusion pour un futur dev sur quel composant utiliser. --- -### FTD-28 — Semgrep dans CI frontend + backend -**Priorité :** 🔴 Critique -**Statut :** Ouvert -**Estimation de session :** 1h -**Description :** `SECURITY.md` §4.3 exige `semgrep scan` en CI. Absent des deux dépôts. SEC-05 (XSS rapports IA) classé critique nécessite un scan SAST. - -**À faire :** ajouter un step `semgrep scan --config=auto` dans les CI des deux dépôts. Bloquer sur sévérité ERROR uniquement. - -**Condition de résolution :** Semgrep exécuté et vert sur les deux CI. - ---- - ## 3. Fonctionnalités reportées ### FTD-07 — Sentry non intégré @@ -373,6 +361,7 @@ Frontend : | FTD-05 | Ancien scaffold frontend possiblement caduc | 2026-04-23 | Audit Claude Code complet — aucun résidu scaffold Vite, aucun fichier orphelin, règles critiques (D, E, F, G, J + ADR 003/005) respectées. Désalignements documentaires traités via FTD-25 et FTD-26. | | FTD-29 | `.github/dependabot.yml` dans les 2 dépôts | 2026-04-23 | Fichier créé dans expria-frontend et expria-backend. Ecosystem npm, weekly, limit 10 PRs. Dependabot alerts + security updates activés via UI GitHub. | | FTD-27 | CI GitHub Actions pour expria-backend | 2026-04-23 | Workflow créé : npm ci → test → audit. Node 22, trigger push/PR sur main. CI verte au premier run (21s). Observations : typecheck absent (O1), ESLint absent (O2), engines.node absent (O3) — à traiter en FTDs séparées. | +| FTD-28 | Semgrep dans CI frontend + backend | 2026-04-23 | Step `semgrep scan --config=auto --error --severity=ERROR` ajouté aux deux workflows CI. Backend vert au 1er run. Frontend vert après correction de 4 erreurs ESLint préexistantes + fix Prettier + ajout env vars CI. | | FTD-17 | Clé `['plan']` dupliquée entre features (`usePlan`, `SimulationPage`, `RapportPage`) | 2026-04-22 | Résolu au Sprint 3.5. Création de `src/entities/user/query-keys.ts` (constantes pures, aucun import runtime) exportant `PLAN_QUERY_KEY = ['plan'] as const`. `features/dashboard/hooks/usePlan.ts` l'importe et le re-exporte pour conserver la rétro-compatibilité de l'import `PLAN_QUERY_KEY`. `SimulationPage.tsx` et `RapportPage.tsx` remplacent leur `useQuery` inline par le hook `usePlan()` — dédup totale de la clé et de la config staleTime. | | FTD-18 | SimulationForm utilise encore le shadcn Button au lieu de la primitive `@/shared/ui/Button` | 2026-04-22 | Résolu au Sprint 3.5. Remplacement de l'import `@/shared/components/ui/button` par `@/shared/ui/Button` dans `SimulationForm.tsx`. Aucun variant à adapter (usage du Button sans prop `variant` → `primary` par défaut dans les deux implémentations). Les 7 autres consommateurs shadcn (`Login/RegisterPage`, `PaywallBanner`, `DesignSystemPage`, `ThemeToggle`, `dialog.tsx`) restent hors scope de cette FTD. | | FTD-19 | Token `--shadow-focus` absent de `src/index.css` | 2026-04-22 | Résolu au Sprint 3.5. Ajout de `--shadow-focus: 0 0 0 3px rgba(27, 79, 216, 0.18)` dans `@theme {}` (valeur conforme à `DESIGN_SYSTEM.md §2`) et `--shadow-focus: 0 0 0 3px rgba(91, 127, 255, 0.32)` dans `.dark {}` (recalculé sur la teinte expria dark `#5B7FFF`). Tailwind 4 génère automatiquement l'utility `shadow-focus`. Migration de 5 occurrences `ring-2 ring-expria/20` → `shadow-focus` dans `Button.tsx`, `Card.tsx`, `SimulationForm.tsx` (×3), `SpecialCharsKeyboard.tsx`. Factorisation bonus : className dupliquée des boutons secondaires de `SimulationForm` extraite en const `secondaryActionBtn`. | @@ -401,3 +390,4 @@ Frontend : | 1.15 | 2026-04-23 | Réorg sécurité : FTD-06, FTD-08, FTD-15 gelées (backlog post-MVP). FTD-27 🔴, FTD-28 🔴, FTD-29 🟡 ajoutées (sécurité). 15 FTD actives (cap respecté). | | 1.16 | 2026-04-23 | FTD-29 fermée (Dependabot config). 14 FTD actives. | | 1.17 | 2026-04-23 | FTD-27 fermée (CI backend). 13 FTD actives. | +| 1.18 | 2026-04-23 | FTD-28 fermée (Semgrep CI). CI frontend verte pour la première fois. 12 FTD actives. |