David
a491bdb79d
merge: integrer feat/notifications
2026-09-07 21:42:36 +02:00
David
f418443d0c
merge: integrer fix/messages-erreur-api
2026-09-07 21:42:36 +02:00
David
0a64382c06
merge: integrer feat/mcp-capacites
2026-09-07 21:42:36 +02:00
David
8486f38a90
merge: integrer feat/suppression-reservation
2026-09-07 21:42:36 +02:00
David
1ec36d2a35
merge: integrer feat/assistant-ia
2026-09-07 21:42:36 +02:00
David
b235e3f382
merge: integrer feat/admin-offre-platinium
2026-09-07 21:42:36 +02:00
David
7df9fd41c1
merge: integrer feat/mise-en-prod
2026-09-07 21:42:36 +02:00
David
c4c70862c1
merge: integrer chore/outillage-et-format
2026-09-07 21:42:36 +02:00
David
d89104f49e
fix(ui): la page de detail lit csv-bookings, la table bookings n existe pas
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:56 +02:00
David
abe3bfe9ae
feat(ui): refonte du menu et de la page de notifications
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:56 +02:00
David
f67de177e8
feat(api): servir la destination et le compteur de non-lues
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:56 +02:00
David
672abea1be
fix(ui): traduire les erreurs d API au lieu de les afficher brutes
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:55 +02:00
David
33d70a16dd
feat(domain): deriver la destination d une notification de son type
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:55 +02:00
David
67362461e4
fix(api): filet attrape-tout au lieu d une erreur 500 nue
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:55 +02:00
David
53c13aab1e
docs: documenter le serveur MCP et le registre de capacites
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:54 +02:00
David
8957eeb511
feat(ui): console d assistant pour l administration
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:54 +02:00
David
177b70ea96
feat(api): registre de capacites et serveur MCP
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:54 +02:00
David
b3564a19f6
feat(ui): action de suppression dans la liste des reservations
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:53 +02:00
David
8b45d2f1a6
feat(domain): controle d acces aux capacites par role et par offre
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:53 +02:00
David
efc47aae67
feat(api): endpoint de suppression d une reservation non payee
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:53 +02:00
David
607257f538
feat(domain): une reservation non payee peut etre supprimee
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:53 +02:00
David
8e393b611a
docs: documenter l assistant et son systeme de RAG
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:52 +02:00
David
f0eb45131b
feat(ui): espace de conversation de l assistant
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:52 +02:00
David
cdea263b3a
feat(api): module assistant commerce international
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:52 +02:00
David
86564f1041
fix(subscriptions): un compte ADMIN dispose de l offre Platinium
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:51 +02:00
David
d32eecd0bf
feat(db): tables de quota et de conversations de l assistant
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:51 +02:00
David
b94ceee73f
feat(infra): adaptateur OpenAI et index de connaissances du wiki
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:51 +02:00
David
b83603461a
feat(domain): politique de quota de l assistant commerce
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:51 +02:00
David
14558d8747
feat(auth): amorcer l administrateur depuis l environnement et neutraliser les comptes de test
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:50 +02:00
David
a19a90cea0
feat(deploy): pipeline CD et composition Docker complete
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:50 +02:00
David
b22f4e0b74
docs: procedure de mise en production pas a pas
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:50 +02:00
David
44713e4ca0
feat(infra): provisionnement Hetzner, k3s et secrets SOPS
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:50 +02:00
David
9a3e1db048
docs: aligner les statuts de reservation sur l enumeration reelle
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:49 +02:00
David
a759e7b018
style(backend): reformatage Prettier de deux controleurs
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:49 +02:00
David
607995b3d0
chore(frontend): ordonner les alias @/i18n avant la regle generique
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:49 +02:00
David
6f3eae5635
chore: ajouter les definitions d agents et le hook Codex
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
2026-09-07 21:40:49 +02:00
David
acf77b11c9
fix video and landing page
2026-09-01 17:19:01 +02:00
David
ed1d5d913b
fix pages
2026-08-25 16:33:08 +02:00
David
8b294d6ed1
fix design
2026-08-13 17:43:11 +02:00
David
84c34bdc21
fix ui update
2026-08-13 12:26:46 +02:00
David
af9dae72d7
fix grille tarif
2026-08-12 13:09:48 +02:00
David
a2a06c008b
Merge branch 'video' into dev
Dev CI / Backend — Lint (push) Successful in 10m22s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m6s
Dev CI / Backend — Unit Tests (push) Successful in 10m8s
Dev CI / Frontend — Unit Tests (push) Successful in 10m37s
Dev CI / Notify Failure (push) Has been skipped
2026-07-21 22:06:11 +02:00
David
75d20dc613
fix video demo
2026-07-21 22:05:54 +02:00
David
b018d96735
Merge branch 'ri-3' into dev
Dev CI / Backend — Lint (push) Successful in 10m27s
Dev CI / Frontend — Unit Tests (push) Successful in 10m35s
Dev CI / Notify Failure (push) Has been skipped
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m12s
Dev CI / Backend — Unit Tests (push) Successful in 10m9s
2026-07-18 16:51:32 +02:00
David
0dc56ff1eb
feat(bookings): reservation quota based on org plan + PAID bookings
...
- Nouvel endpoint GET /csv-bookings/reservation-quota: limite = vrai plan de
l'org (pas l'override ADMIN PLATINIUM), used = bookings PAYES de l'annee
(PENDING_BANK_TRANSFER/PENDING/ACCEPTED), limitReached.
- ShipmentCounter: countPaidShipmentsForOrganizationInYear.
- create-check compte desormais les payes (au lieu de tous).
- Frontend useReservationQuota consomme l'endpoint (fiable meme pour un admin
dont l'overview renvoie PLATINIUM).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 17:36:15 +02:00
David
f7427825d1
feat(bookings): block new reservations on free plan limit + upgrade CTA
...
Le plan gratuit (BRONZE) est limite a maxShipmentsPerYear (5/an). Cote frontend,
rien ne le refletait: le bouton 'Nouvelle Reservation' restait actif. Ajout d'un
hook useReservationQuota (limite du plan vs reservations de l'annee) qui:
- remplace le bouton 'Nouvelle Reservation' par un bouton 'Ameliorer mon
abonnement' + banniere sur la liste des reservations quand la limite est
atteinte;
- bloque la page de recherche (nouvelle resa) avec un ecran d'upgrade, sauf en
mode edition d'une resa existante.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 17:02:56 +02:00
David
c312e7901e
fix(auth): normalize email to lowercase on register/login + rollback orphaned org
...
L'email n'etait pas normalise, or la contrainte chk_users_email exige des
minuscules. Un email avec majuscules faisait echouer l'INSERT utilisateur APRES
la creation de l'organisation (flux non transactionnel), laissant une org
orpheline -> 'An organization with this name already exists' aux tentatives
suivantes.
- register/login: email.trim().toLowerCase()
- register: rollback de l'organisation nouvellement creee si la creation de
l'utilisateur echoue (anti-orphelin)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 16:24:57 +02:00
David
64de600292
fix(booking-edit): reconstruct pallet dims with 120x80 base (not a cube)
...
La reprise reconstruisait un cube (cbrt du volume) au lieu de la base palette
standard, d'ou des longueur/largeur/hauteur incorrectes. Pour une palette on
reconstitue desormais 120x80 cm et on deduit la hauteur du volume (ex: 0.96 CBM
-> 120x80x100). Les colis restent en cube equivalent.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 16:12:28 +02:00
David
c5f823f8b7
feat(bookings): persist Options & Services (customs/insurance/DG/handling)
...
Les options du formulaire de recherche etaient collectees mais jamais stockees.
Ajout d'une colonne jsonb options sur csv_bookings (+ migration), stockee a la
creation et a l'edition (editFromRate), renvoyee dans la reponse, et re-pre-
remplie a la reprise (search-advanced <- URL <- booking.options).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 19:12:18 +02:00
David
795e635df3
fix(bookings): persist editable fields on update (toOrmUpdate)
...
toOrmUpdate ne mappait que status/notes/commission, donc les modifications de
volume/poids/palettes/prix/transporteur/route via editDetails/editFromRate
n'etaient jamais persistees (repository.update). Ajout de tous les champs
editables au mapping de mise a jour.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 14:41:16 +02:00