From 28a5789fe0983a1d9b862656f0e3a59594c207f5 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Fri, 10 Jul 2026 14:39:07 -0400 Subject: [PATCH] =?UTF-8?q?fix(ops):=20tickets=20list=20returned=200=20?= =?UTF-8?q?=E2=80=94=20Issue=20query=20used=20fields=20ERPNext=20v16=20rej?= =?UTF-8?q?ects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An in-flight TicketsPage change added assigned_staff_email / opened_by_staff_email to ISSUE_FIELDS, but ERPNext v16 refuses those in a `fields` query. The frontend queries ERPNext directly (no bad-field stripping like the hub), so the whole Issue list 400'd → 0 tickets for everyone. Removed the two rejected fields; UserAvatar falls back to the assigned_staff name. Co-Authored-By: Claude Opus 4.8 --- apps/ops/src/pages/TicketsPage.vue | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/ops/src/pages/TicketsPage.vue b/apps/ops/src/pages/TicketsPage.vue index 01c6728..7a46c61 100644 --- a/apps/ops/src/pages/TicketsPage.vue +++ b/apps/ops/src/pages/TicketsPage.vue @@ -106,11 +106,7 @@ @@ -196,6 +192,7 @@ import DetailModal from 'src/components/shared/DetailModal.vue' import InlineField from 'src/components/shared/InlineField.vue' import FlowQuickButton from 'src/components/flow-editor/FlowQuickButton.vue' import TicketCard from 'src/components/customer/TicketCard.vue' +import UserAvatar from 'src/components/shared/UserAvatar.vue' const me = useAuthStore().user // courriel de l'agent connecté (pour « Mes tickets ») const { slaFor } = useSla() // calcul SLA (politiques par file+priorité éditées dans Paramètres) @@ -258,7 +255,10 @@ function resetAndLoad () { loadTickets() } -const ISSUE_FIELDS = ['name', 'subject', 'customer_name', 'customer', 'opening_date', 'priority', 'status', 'issue_type', 'assigned_staff', 'owner', 'creation', 'legacy_ticket_id', 'is_important', 'first_responded_on', '_user_tags'] +// ⚠️ ERPNext v16 REFUSE `assigned_staff_email` / `opened_by_staff_email` dans une requête `fields` → la liste Issue +// plantait ENTIÈREMENT (0 ticket) côté frontend (listDocs interroge ERPNext direct, sans le strip du hub). Retirés +// jusqu'à ce que ces champs custom soient interrogeables ; UserAvatar retombe sur le nom (`assigned_staff`). +const ISSUE_FIELDS = ['name', 'subject', 'customer_name', 'customer', 'opening_date', 'priority', 'status', 'issue_type', 'assigned_staff', 'opened_by_staff', 'owner', 'creation', 'legacy_ticket_id', 'is_important', 'first_responded_on', '_user_tags'] async function loadTickets () { loading.value = true const filters = buildFilters({