Commit Graph

236 Commits

Author SHA1 Message Date
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
David
6cdbf29bf7 feat(booking-edit): reprise via le parcours existant pré-rempli
Remplace la page d'édition autonome par une reprise du parcours de réservation :
"Modifier" ré-ouvre la recherche pré-remplie (origine/destination/volume/poids/
palettes reconstruits), l'utilisateur ajuste si besoin, choisit une compagnie
(résultats) et passe au paiement — la réservation existante est mise à jour au
lieu d'en créer une nouvelle.

- Backend: PATCH /csv-bookings/:id/rate + UpdateCsvBookingRateDto + service
  updateBookingRate + domaine editFromRate (carrier/route/conteneur/transit/
  cargo/prix modifiables avant paiement).
- Front: search-advanced pré-rempli via query (+ editBookingId, démarre à
  l'étape colis) ; results en mode édition met à jour puis redirige vers /pay ;
  liens "Modifier" (liste, modale, paiement) pointent vers le parcours ;
  suppression de la page /booking/:id/edit autonome.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 14:36:19 +02:00
David
25fe78ccfc fix(booking-edit): recalcul du prix cassé par le format du nom transporteur
La recherche de tarif renvoie le transporteur en slug ("ssc-consolidation")
alors que la réservation stocke le nom d'affichage ("SSC Consolidation"), donc
le matching exact companyName === carrierName ne trouvait jamais l'offre →
"aucun tarif trouvé" et prix jamais recalculé.

Matching robuste : comparaison normalisée du transporteur (minuscules, sans
séparateurs) + conteneur + transit, avec fallbacks. Vérifié en conditions
réelles (GET booking, search-csv-offers, PATCH details renvoient 200 ; le prix
change bien quand le volume change).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:16:42 +02:00
David
bce77edd76 fix(bookings,docs): suppression docs, edition+recalcul prix, menu 3 points, responsive
- Suppression de documents: cause = deleteDocument restreint aux statuts
  PENDING/PENDING_PAYMENT + blocage du dernier document. Alignement sur
  replaceDocument (aucune restriction de statut) et autorisation de 0 document
  (validation domaine assouplie ; creation exige toujours >=1 doc cote service).
- Edition avant paiement: recalcul auto du prix. La page /booking/:id/edit
  relance la recherche de tarif (meme transporteur/conteneur/transit) pour le
  nouveau volume/poids et met a jour fret/FOB/total ; nouveaux champs de prix
  dans UpdateCsvBookingDetailsDto + editDetails.
- Liste reservations: actions regroupees dans un menu 3 points (kebab) en
  positionnement fixed (anti-clipping), desktop + mobile.
- Responsive (<=1280px): tables documents & blog admin en overflow-x-auto,
  menus documents en fixed, grilles de la page edition en sm:.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 18:56:25 +02:00
David
8877265526 feat(blog): Phase 3 GEO/IA, corbeille, duplication, drag&drop, recadrage
- Bloc GEO/IA (resume IA, FAQ, points cles, entites) + rendu public
  "En bref"/"A retenir"/FAQ + JSON-LD Article & FAQPage.
- Corbeille: soft-delete (deleted_at), filtres Tous/Publies/Brouillons/
  Planifies/Corbeille, restauration + suppression definitive.
- Duplication d'un article (nouveau brouillon, slug unique).
- Drag & drop de l'image de couverture.
- Recadrage auto de la couverture en 16:9 (sharp) via endpoint dedie
  /admin/blog/cover-images.
- Migration AddGeoAndTrashToBlogPosts (ai_summary, faq, key_takeaways,
  ai_entities, deleted_at). Ajout dependance sharp.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 13:44:35 +02:00
David
7234343e20 feat(bookings): Phase 2 edition avant paiement + filtre + ergonomie
- Edition d'une reservation avant paiement: page /booking/:id/edit
  (volume, poids, palettes, notes + gestion documents), endpoint
  PATCH /csv-bookings/:id/details (owner + PENDING_PAYMENT), methode
  domaine editDetails. Acces "Modifier" depuis la liste, la modale detail
  et la page de paiement.
- Filtre "A finaliser" (PENDING_PAYMENT + PENDING_BANK_TRANSFER) + libelles
  et couleurs de tous les statuts.
- Tableau des reservations: 6 colonnes + colonne Actions collante a droite
  (plus de scroll horizontal pour atteindre Payer/Voir).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 13:30:05 +02:00
David
19b96517d2 fix(bookings,blog): Phase 1 correctifs test utilisateur
- Telechargement docs transporteur: proxy de streaming API (fin des URLs
  presignees MinIO injoignables depuis l'exterieur)
- Documents: ajout de l'action "Supprimer" (endpoint DELETE deja existant)
- Blog: suppression reelle de l'image de couverture (null explicite bout en bout)
- Blog: le bouton Retour navigateur ferme l'editeur au lieu de quitter vers Logs
- Paiement: bouton Retour revient au contexte precedent (router.back)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 13:20:33 +02:00
David
71436cb9c4 Merge branch 'preprod' into remuneration 2026-07-01 12:54:08 +02:00
David
b2f92e260c Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Build Log Exporter (push) Successful in 35s
CD Preprod / Deploy to Preprod (push) Successful in 24s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Backend — Lint (push) Successful in 10m23s
CD Preprod / Backend — Integration Tests (push) Successful in 9m56s
CD Preprod / Build Backend (push) Successful in 6m12s
CD Preprod / Notify Success (push) Successful in 2s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 11m7s
CD Preprod / Backend — Unit Tests (push) Successful in 10m8s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m37s
CD Preprod / Build Frontend (push) Successful in 41s
2026-06-24 10:18:18 +02:00
David
65abbff7ed fix error preprod
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m21s
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 10m36s
Dev CI / Notify Failure (push) Has been skipped
2026-06-23 12:42:25 +02:00
David
96aa140207 fix remuneration 2026-06-18 00:17:44 +02:00
David
53f3be9741 Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Backend — Integration Tests (push) Successful in 9m56s
CD Preprod / Build Backend (push) Successful in 13m53s
CD Preprod / Build Log Exporter (push) Successful in 36s
CD Preprod / Build Frontend (push) Successful in 42m59s
CD Preprod / Deploy to Preprod (push) Successful in 24s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 1s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 11m4s
CD Preprod / Backend — Lint (push) Successful in 10m20s
CD Preprod / Backend — Unit Tests (push) Successful in 10m7s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m41s
2026-06-17 23:40:42 +02:00
David
8f1afb0098 Merge branch 'split_dashbaord_admin_user' into dev
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m19s
Dev CI / Frontend — Unit Tests (push) Successful in 10m39s
Dev CI / Notify Failure (push) Has been skipped
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m7s
Dev CI / Backend — Unit Tests (push) Successful in 10m9s
2026-06-17 22:50:20 +02:00
David
6b9ad95811 fix logs 2026-06-13 12:17:06 +02:00
David
5aed7d81ce fix mdp see 2026-06-13 12:01:19 +02:00
David
c6eaaf354a fix admin page 2026-06-13 11:53:27 +02:00
David
bd52819f28 fix admin page 2026-06-13 11:53:17 +02:00
David
9e8f157d70 fix security 2026-06-12 11:33:37 +02:00
David
5f3c2ebe1e Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Backend — Lint (push) Successful in 10m26s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 11m3s
CD Preprod / Backend — Unit Tests (push) Successful in 10m17s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m41s
CD Preprod / Backend — Integration Tests (push) Successful in 10m4s
CD Preprod / Build Backend (push) Successful in 16m4s
CD Preprod / Build Log Exporter (push) Successful in 37s
CD Preprod / Build Frontend (push) Successful in 40m10s
CD Preprod / Deploy to Preprod (push) Successful in 24s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 1s
2026-06-11 19:52:11 +02:00
David
3a2a14b5b7 Merge branch 'update_blog' into dev
All checks were successful
Dev CI / Backend — Unit Tests (push) Successful in 10m17s
Dev CI / Frontend — Unit Tests (push) Successful in 10m40s
Dev CI / Notify Failure (push) Has been skipped
Dev CI / Backend — Lint (push) Successful in 10m29s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m5s
2026-06-11 19:19:16 +02:00
David
1906161d37 fix blog and animation connexion 2026-06-11 19:18:56 +02:00
David
37c685d73f feat: request SIRET/SIREN admin approval from payment page 2026-06-07 18:24:23 +02:00
David
295874e11f fix: rework org admin form with full business-rule validation 2026-06-07 18:11:09 +02:00
David
aa301eb447 fix: allow org creation without SIRET/SIREN and pass all DTO fields to entity 2026-06-07 18:02:51 +02:00
David
0e6383693c fix: admin org creation - send nested address object instead of flat fields 2026-06-07 17:51:50 +02:00
David
1da5570e1c fix: unauthorized on document upload and drag-drop in booking creation
- Replace localStorage.getItem('access_token') with getAuthToken() which
  also checks sessionStorage — fixes Unauthorized error for users logged
  in without 'remember me'
- Add real drag-and-drop support to booking creation page (step 2):
  onDragOver/onDragLeave/onDrop handlers on the dropzone container,
  isDragging state with visual feedback (blue border + text change),
  click-to-browse still works via hidden input ref

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 17:42:27 +02:00
David
b344650608 fix: resolve payment access, status labels, and document upload reliability
- Add PENDING_PAYMENT and PENDING_BANK_TRANSFER to document statuses
  translations (was displaying raw i18n key instead of human label)
- Fix getStatusLabel/getStatusColor to handle all booking statuses
- Fix select dropdown in Add Document modal to use getStatusLabel()
  instead of hardcoded PENDING/ACCEPTED binary
- Add direct "Payer" button (orange) on PENDING_PAYMENT rows in both
  desktop table and mobile cards, linking to /dashboard/booking/[id]/pay
- Update detail modal to show payment CTA for PENDING_PAYMENT bookings
- Refactor file handling in document modals to use React state (addFiles,
  replaceFile) instead of reading from DOM ref — fixes upload reliability
  and shows selected filename feedback in the dropzone

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 17:26:44 +02:00
David
9950d96fd6 fix: correct 5 reported bugs across booking and document management
- SIRET/SIREN admin: controller applied siren but skipped siret — add missing updateSiret() call
- Document upload on validated booking: backend blocked PENDING_BANK_TRANSFER;
  frontend filter excluded it — both now allow all non-terminal statuses
- Accent encoding in filenames: Multer stores originalname as latin1;
  re-decode to utf8 before storing and displaying
- Drag & drop in document modals: replace bare input with styled dropzone
  supporting click and native drag-and-drop in both Add and Replace modals
- Resume existing booking: add Actions column with View button and booking
  detail modal to the bookings list page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 16:49:12 +02:00
David
87bddcfb95 fix cleanup 2026-06-07 16:31:03 +02:00
David
d3c9fe1438 fix refacto 2026-06-07 15:55:05 +02:00
David
79ea90b165 fix backend 2026-05-14 21:21:57 +02:00
David
4baffe0b7a fix celan v2 2026-05-14 21:11:54 +02:00
David
ad761372f5 first clean 2026-05-13 17:18:37 +02:00
David
902438b6ce Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Backend — Integration Tests (push) Successful in 10m5s
CD Preprod / Build Backend (push) Successful in 8m4s
CD Preprod / Build Log Exporter (push) Successful in 27s
CD Preprod / Build Frontend (push) Successful in 21m17s
CD Preprod / Deploy to Preprod (push) Successful in 24s
CD Preprod / Notify Success (push) Successful in 2s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Backend — Lint (push) Successful in 10m21s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 10m58s
CD Preprod / Backend — Unit Tests (push) Successful in 10m17s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m37s
2026-05-12 21:26:37 +02:00
David
3d65693395 fix blog 2026-05-12 21:01:52 +02:00
David
f5eaa4e083 Merge branch 'update_search_price_booking' into dev
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m25s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m2s
Dev CI / Backend — Unit Tests (push) Successful in 10m17s
Dev CI / Notify Failure (push) Has been skipped
Dev CI / Frontend — Unit Tests (push) Successful in 10m41s
2026-05-12 01:24:01 +02:00
David
9acabb6859 fix api key 2026-05-12 01:23:47 +02:00
David
71d131f4cb fix search rates 2026-05-12 01:11:04 +02:00
David
8bd2a60749 Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Deploy to Preprod (push) Successful in 23s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 3s
CD Preprod / Backend — Lint (push) Successful in 10m27s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 11m3s
CD Preprod / Backend — Unit Tests (push) Successful in 10m16s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m41s
CD Preprod / Backend — Integration Tests (push) Successful in 10m3s
CD Preprod / Build Backend (push) Successful in 55s
CD Preprod / Build Log Exporter (push) Successful in 29s
CD Preprod / Build Frontend (push) Successful in 21m31s
2026-05-05 16:34:04 +02:00
David
84790e0c68 Merge branch 'about_text_change' into dev
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m29s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m5s
Dev CI / Backend — Unit Tests (push) Successful in 10m16s
Dev CI / Frontend — Unit Tests (push) Successful in 10m41s
Dev CI / Notify Failure (push) Has been skipped
2026-05-05 16:03:48 +02:00
David
96963b05f0 fix a propos text 2026-05-05 16:03:35 +02:00
David
8ae3d600ea Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Backend — Lint (push) Successful in 10m23s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 10m59s
CD Preprod / Backend — Unit Tests (push) Successful in 10m16s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m37s
CD Preprod / Backend — Integration Tests (push) Successful in 9m57s
CD Preprod / Build Backend (push) Successful in 16m33s
CD Preprod / Build Log Exporter (push) Successful in 1m25s
CD Preprod / Build Frontend (push) Successful in 38m43s
CD Preprod / Deploy to Preprod (push) Successful in 26s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 2s
2026-04-21 19:16:29 +02:00
David
ec0173483a fix language
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m23s
Dev CI / Backend — Unit Tests (push) Successful in 10m17s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m3s
Dev CI / Frontend — Unit Tests (push) Successful in 10m33s
Dev CI / Notify Failure (push) Has been skipped
2026-04-21 18:04:02 +02:00
David
b352d1d9a9 Merge branch 'dev' into preprod
All checks were successful
CD Preprod / Backend — Lint (push) Successful in 10m24s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 10m54s
CD Preprod / Backend — Unit Tests (push) Successful in 10m12s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m33s
CD Preprod / Backend — Integration Tests (push) Successful in 10m0s
CD Preprod / Build Backend (push) Successful in 57s
CD Preprod / Build Log Exporter (push) Successful in 1m7s
CD Preprod / Build Frontend (push) Successful in 19m38s
CD Preprod / Deploy to Preprod (push) Successful in 25s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 2s
2026-04-13 11:53:43 +02:00
David
8649b8a13c Merge branch 'mobile_app' into dev
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m26s
Dev CI / Frontend — Lint & Type-check (push) Successful in 10m57s
Dev CI / Backend — Unit Tests (push) Successful in 10m12s
Dev CI / Frontend — Unit Tests (push) Successful in 10m37s
Dev CI / Notify Failure (push) Has been skipped
2026-04-09 17:55:05 +02:00
David
982c893952 fix mobile version 2026-04-09 17:54:48 +02:00
David
be1de882c3 chore: sync dev with preprod
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m23s
Dev CI / Frontend — Lint & Type-check (push) Successful in 10m55s
Dev CI / Backend — Unit Tests (push) Successful in 10m10s
Dev CI / Frontend — Unit Tests (push) Successful in 10m30s
Dev CI / Notify Failure (push) Has been skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 20:16:16 +02:00
David
40d917e160 chore(ci): remove smoke tests from preprod and prod pipelines
All checks were successful
CD Preprod / Backend — Lint (push) Successful in 10m22s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 10m55s
CD Preprod / Backend — Unit Tests (push) Successful in 10m10s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m34s
CD Preprod / Backend — Integration Tests (push) Successful in 9m57s
CD Preprod / Build Frontend (push) Successful in 47s
CD Preprod / Build Log Exporter (push) Successful in 33s
CD Preprod / Build Backend (push) Successful in 7m24s
CD Preprod / Deploy to Preprod (push) Successful in 24s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 2s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 20:13:17 +02:00