# Design — files hybrides (option C) : 2 overviews Zammad

**Date :** 2026-07-02 · **Statut :** TEST sur `Dev-Hybride` (cf. `ANSWER.md`)

## Pourquoi

- **Modèle pull validé** : les agents piochent dans des files partagées, pas d'assignation
  automatique. Les défauts Zammad restent la base ; on n'ajoute que les 2 files du cœur du flux.
- **Test client option C** (décision Roma, cf. `ANSWER.md`) — hybride : défauts conservés
  + « Quote — to handle » + « Triage — to sort ».

## Les 2 overviews

| | **Quote — to handle** (`quote_to_handle`) | **Triage — to sort** (`triage_to_sort`) |
|---|---|---|
| Groupe | Quote / Estimating (lookup par nom) | General / Triage (lookup par nom) |
| Owner | non assigné (`pre_condition: 'not_set'`, pattern de `all_unassigned`) | pas de filtre (tout ce qui reste à trier) |
| États | `Ticket::State.by_category(:work_on_all)` → new / open / pending reminder | idem |
| Visible pour | rôles Sales & Engineering, Supervisor, Admin | rôle Agent (tous — Noppon n'a que read sur Triage, voulu) |
| Tri | priorité DESC (`group_by: 'priority'`, `group_direction: 'DESC'`) puis FIFO (`order: created_at ASC`) | FIFO (`order: created_at ASC`) |
| Prio d'affichage | 1001 (après My Assigned) | 1002 |

Les overviews par défaut (« My Assigned Tickets », « Unassigned & Open Tickets », …)
restent **intactes**.

## Mécanisme

Seed **idempotent** `config/routing/seed_overviews.rb` (`Overview.find_or_initialize_by(link:)`,
lookups par nom avec échec explicite). Hash `view` copié de l'overview par défaut
`all_unassigned`. Application : `docker cp` + `bin/rails r` dans `zammad-zammad-railsserver-1`.

Note : Zammad n'a qu'une clé `order` par overview → le tri « priorité puis ancienneté »
est implémenté via `group_by: 'priority'` + `group_direction: 'DESC'` + `order: created_at ASC`
(champ `group_direction` vérifié présent sur le modèle en 7.1.1).

## Rollback

- Doux : `Overview.find_by(link: 'quote_to_handle').update!(active: false)`
  (idem `triage_to_sort`) — les défauts n'ayant pas été touchés, rien d'autre à faire.
- Complet : restaurer un snapshot (`infra/zammad/snapshot.sh restore <dump>`), snapshot pris
  avant le seed.
