From d5ee57acf2b68a86f5639888b5384f12e20e5720 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Fri, 22 May 2026 11:55:48 -0400 Subject: [PATCH] feat(campaigns/wizard): inspectable dropped-row list with one-click recovery MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit parseMapCsv now collects the actual rows it drops (capped at 200), each with its skip reason and the raw source-CSV columns (full_name, email, phone, address, postal). Returned alongside the existing counters as skipped_rows on the parse response. Wizard Step 2 adds an "N ligne(s) du Map CSV non importée(s)" expansion below the imbalance banner, showing: Ligne # | Raison | Nom au CSV | Email au CSV | Adresse | CP | → The action column has a "Ajouter manuellement" button on rows that have an email (duplicate, multi_skip) — clicking opens the manual- add dialog pre-filled from the dropped row, so the operator can recover the contact in two clicks. no_email rows can't be recovered that way and don't get the button. The source_row index is the Excel-relative line number (counting the header) so the operator can cross-reference the actual file. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 --- .../campaigns/pages/CampaignNewPage.vue | 85 +++++++++++++++++++ services/targo-hub/lib/campaigns.js | 36 ++++++-- 2 files changed, 115 insertions(+), 6 deletions(-) diff --git a/apps/ops/src/modules/campaigns/pages/CampaignNewPage.vue b/apps/ops/src/modules/campaigns/pages/CampaignNewPage.vue index 5c75d12..71710e0 100644 --- a/apps/ops/src/modules/campaigns/pages/CampaignNewPage.vue +++ b/apps/ops/src/modules/campaigns/pages/CampaignNewPage.vue @@ -373,6 +373,41 @@ + + +
+ Chaque ligne ci-dessous a été droppée au parsing et n'apparaît pas + dans la liste d'envoi. Le numéro de ligne (#) correspond à la position dans le fichier + Excel original (header inclus). +
+ + + + + +
+