mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
feat(r2.4): portail public QR — signalement sans compte, suivi par jeton
- 3 routes publiques /portal (les seules @Public métier), throttlées
(@nestjs/throttler : 10 signalements/min, 60 lectures/min) : résolution
du QR, signalement (retourne un jeton de suivi opaque), suivi par
référence + jeton — pas de jeton, pas de lecture, jamais de liste
- migration r2_portail : Request.publicToken (unique)
- page /q/{réf} fidèle à l'écran 6 validé R0 (mobile d'abord) : équipement
prérempli « détecté par le QR », interrupteur personne bloquée,
suivi sans jargon Reçu → Intervention → Résolu (dérivé de l'OT lié),
rejet affiché « Sans suite : {motif} », photo annoncée (upload R3) ;
signalements gardés sur le téléphone (localStorage, 10 max)
- e2e : LA boucle produit — gardien sans compte → traitement → ✓ Résolu ;
11 tests Playwright verts, 50 tests API, 52 opérations au contrat
- générateur OpenAPI : paramètres non-« id » plus typés uuid
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ import PageNouvelAscenseur from '@/pages/nouvel-ascenseur';
|
||||
import PageNouvelOT from '@/pages/nouvel-ot';
|
||||
import PageOrdresTravail from '@/pages/ordres-travail';
|
||||
import PagePersonnes from '@/pages/personnes';
|
||||
import PagePortail from '@/pages/portail';
|
||||
import PagePreventif from '@/pages/preventif';
|
||||
import PageSites from '@/pages/sites';
|
||||
import PageTableauDeBord from '@/pages/tableau-de-bord';
|
||||
@@ -34,6 +35,8 @@ export default function App() {
|
||||
<Routes>
|
||||
<Route path="/connexion" element={<PageConnexion />} />
|
||||
<Route path="/activation" element={<PageActivation />} />
|
||||
{/* Portail public — cible du QR cabine, AUCUN compte */}
|
||||
<Route path="/q/:reference" element={<PagePortail />} />
|
||||
<Route path="/" element={dansCoquille(<PageTableauDeBord />)} />
|
||||
<Route path="/design" element={dansCoquille(<PageDesign />)} />
|
||||
<Route path="/sites" element={dansCoquille(<PageSites />)} />
|
||||
|
||||
Reference in New Issue
Block a user