gigafibre-fsm/apps/ops/src/components/shared
louispaulb d7412fcced #27 Standardise ticket-detail rendering (status / tags / row component)
Converge every ticket-detail surface onto the canonical IssueDetail (in
DetailModal) + TicketCard, per reference_ticket_detail_disparities.

STATUS — one model:
- IssueDetail no longer double-renders status. The green button (shared
  TicketStatusControl) is relabelled "Reporter" with a schedule icon — it is
  a postpone/snooze + quick-close control, not a 2nd status setter. The single
  5-value status select (Open/Replied/On Hold/Resolved/Closed) is canonical.

TAGS — one source, via the shared TagEditor:
- New useTagCatalog composable unifies the tag catalogue: ERPNext "Dispatch Tag"
  ∪ roster technician skills (hub /roster/technicians). Roster skills like
  "sans-fil"/"épissure" now appear on ticket tags (were missing before).
- IssueDetail replaces its bespoke q-select + chip row with TagEditor; the tag
  manager (rename/recolor/delete) is delegated to the composable's CRUD.

ONE ticket-row component (TicketCard):
- LocationCard's ad-hoc per-address ticket list now renders TicketCard.
- TicketsPage mobile card mode (DataTable #item slot) renders TicketCard.
- assignee handling (assigned_staff/opened_by_staff avatars) is now consistent
  across fiche, location, and /tickets.

Verified in local preview against live backend: Reporter button + single
status select, TagEditor dropdown surfacing roster skills ("sans-fil" under
"Compétence"), TicketCard rows on fiche + LocationCard, no component errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 14:31:39 -04:00
..
conversation feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
detail-sections #27 Standardise ticket-detail rendering (status / tags / row component) 2026-07-08 14:31:39 -04:00
AddToTaskDialog.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
ConversationPanel.vue fix(ops): sécurité + robustesse dispatch/comms 2026-07-02 08:56:35 -04:00
CreateInvoiceModal.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
DataTable.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
DetailModal.vue fix(ops): device detail modal responsive on mobile 2026-07-04 22:41:15 -04:00
DynamicFilter.vue feat(ui): T5 audit — composant DynamicFilter réutilisable + intégré sur Clients 2026-07-04 19:13:37 -04:00
EmptyState.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
InlineField.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
InterveneDialog.vue feat: suivi généralisé, occupation ressources, horaire tech, revert journal 2026-07-08 12:40:22 -04:00
MessageList.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
NotificationBell.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
OccupancyStrip.vue fix(ops/mobile): bandes d'occupation ≤7 jours remplissent la largeur (fini le micro-défilement) 2026-07-04 20:58:43 -04:00
OrchestratorDialog.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
OutageAlertsPanel.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
OutboxPanel.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
PageHeader.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
PipelineBoard.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
ProjectWizard.vue ops : priorités 3 niveaux (source unique) + compétences multi + création unifiée + planif 2026-07-07 20:46:57 -04:00
QuoteWizard.vue ops : priorités 3 niveaux (source unique) + compétences multi + création unifiée + planif 2026-07-07 20:46:57 -04:00
ReaderStack.vue feat(fsm): platform build — comms UI, F→ERPNext sync/billing, roster, campaigns, network, reports 2026-06-15 06:12:12 -04:00
RecipientSelect.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
RecurrenceSelector.vue feat: dispatch planning mode, offer pool, shared presets, recurrence selector 2026-04-08 22:44:18 -04:00
ReportScaffold.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
RouteMap.vue ops: MapLibre/OSM basemap (drop Mapbox) + satellite toggle, unified Créer flow, wizard pricing, infra-first reverse client 2026-07-06 21:52:14 -04:00
ServiceStatusDialog.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
StatCard.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
TableSkeleton.vue feat(ops): dispatch auto complet + perf Boîte/rapports + fix session 2026-07-02 08:49:35 -04:00
TagEditor.vue feat(dispatch): skill PRIORITY ordering per tech (specialists first) 2026-07-02 10:50:51 -04:00
TaskNode.vue ops : types de job = source unique (config/job-types) 2026-07-07 21:27:32 -04:00
TechSelect.vue Ops cohérence: composants partagés TechSelect (autosuggest) + SkillSelect (chips) 2026-06-04 11:57:58 -04:00
TicketStatusControl.vue #27 Standardise ticket-detail rendering (status / tags / row component) 2026-07-08 14:31:39 -04:00
UnifiedCreateModal.vue ops : types de job = source unique (config/job-types) 2026-07-07 21:27:32 -04:00
WeeklyScheduleEditor.vue planif: horaires (lot) — recherche/skill/tout-aucun ; grille 2 sem. par défaut (sélecteur retiré) 2026-07-07 12:56:17 -04:00