xpeditis2.0/apps/frontend/app/[locale]
David c35f3d7bfb feat(ia): fait valider par un administrateur toute page ecrite par l'assistant
L'assistant publiait directement dans le wiki global. La politique de contenu
ecarte la faute franche — conseil FCL, cas client, hors perimetre — mais une
heuristique ne juge pas la justesse : une page fausse mais bien ecrite la
franchissait, et se retrouvait citee comme documentation Xpeditis aupres de
tous les clients.

Domaine
- `WikiContributionStatus` : pending / published / rejected. `create()` ne
  prend pas le statut en parametre — rien ne nait publie.
- `publish(reviewerId, edits?)` valide, en acceptant une correction du
  relecteur, qui repasse la meme politique de contenu.
- `reject(reviewerId, note?)` ecarte sans supprimer : la liste des refus montre
  ou l'assistant se trompe.
- `revise()` remet une page validee en attente : sans cela, la validation
  porterait sur un texte que l'assistant a remplace depuis.

Ce qui sort du depot
- `findPublished` pour la recherche et la page publique, `findForReview` pour
  l'administration. Le statut est porte par la requete, pas filtre en memoire :
  une page en attente ne peut pas sortir par le chemin des clients.
- `revision()` ne compte que le publie, donc l'index vectoriel ne se reconstruit
  que sur une decision.

Relecture
- `GET /admin/wiki-contributions`, `POST :id/publish`, `POST :id/reject`, sous
  JwtAuthGuard + RolesGuard et @Roles('admin').
- Chaque decision est journalisee (`WIKI_CONTRIBUTION_REVIEWED`) : une page
  publiee engage la marque, on doit pouvoir dire qui l'a laissee passer.
- Ecran `/admin/wiki` : file par statut, corps complet affiche, correction et
  motif de refus facultatifs.

L'assistant
- La capacite rend `pending_review` et un message d'attente, plus d'URL : le
  modele annonce une proposition, jamais une publication. La consigne le lui
  dit explicitement.

SQL de la migration verifie sur la base locale : l'upsert sur index
d'expression met bien a jour a la casse pres, la contrainte de statut refuse
une valeur inconnue.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 12:41:28 +02:00
..
about fix ui update 2026-08-13 12:26:46 +02:00
admin feat(ia): fait valider par un administrateur toute page ecrite par l'assistant 2026-09-18 12:41:28 +02:00
blog fix ui update 2026-08-13 12:26:46 +02:00
booking fix design 2026-08-13 17:43:11 +02:00
careers fix ui update 2026-08-13 12:26:46 +02:00
carrier fix design 2026-08-13 17:43:11 +02:00
compliance feat(ui): reecrire la politique de confidentialite et celle des cookies 2026-09-07 21:40:58 +02:00
contact fix ui update 2026-08-13 12:26:46 +02:00
cookies feat(ui): reecrire la politique de confidentialite et celle des cookies 2026-09-07 21:40:58 +02:00
dashboard feat(ia): borne l'assistant au LCL et au transport international, et lui fait entretenir le wiki 2026-09-17 21:14:41 +02:00
docs fix language 2026-04-21 18:04:02 +02:00
forgot-password fix design 2026-08-13 17:43:11 +02:00
login fix design 2026-08-13 17:43:11 +02:00
press fix ui update 2026-08-13 12:26:46 +02:00
pricing fix ui update 2026-08-13 12:26:46 +02:00
privacy feat(ui): reecrire la politique de confidentialite et celle des cookies 2026-09-07 21:40:58 +02:00
register fix(ui): traduire les erreurs d API au lieu de les afficher brutes 2026-09-07 21:40:55 +02:00
reset-password fix design 2026-08-13 17:43:11 +02:00
security fix ui update 2026-08-13 12:26:46 +02:00
terms fix ui update 2026-08-13 12:26:46 +02:00
verify-email fix design 2026-08-13 17:43:11 +02:00
layout.tsx fix blog 2026-05-12 21:01:52 +02:00
not-found.tsx fix blog 2026-05-12 21:01:52 +02:00
page.tsx fix pages 2026-08-25 16:33:08 +02:00