export const statusOptions = [ { label: 'Tous', value: 'all' }, { label: 'Non fermes', value: 'not_closed' }, { label: 'Ouverts', value: 'Open' }, { label: 'Repondus', value: 'Replied' }, { label: 'Resolus', value: 'Resolved' }, { label: 'Fermes', value: 'Closed' }, ] export const priorityOptions = [ { label: 'Urgent', value: 'Urgent' }, { label: 'Haute', value: 'High' }, { label: 'Moyenne', value: 'Medium' }, { label: 'Basse', value: 'Low' }, ] export const columns = [ { name: 'important', label: '', field: 'is_important', align: 'center', style: 'width:30px;padding:0' }, { name: 'legacy_id', label: '#', field: 'legacy_ticket_id', align: 'left', sortable: true, style: 'width:70px' }, { name: 'subject', label: 'Sujet', field: 'subject', align: 'left' }, { name: 'customer_name', label: 'Client', field: 'customer_name', align: 'left', sortable: true }, { name: 'issue_type', label: 'Type', field: 'issue_type', align: 'left' }, { name: 'opening_date', label: 'Date', field: 'opening_date', align: 'left', sortable: true }, { name: 'priority', label: 'Priorite', field: 'priority', align: 'center', sortable: true }, { name: 'status', label: 'Statut', field: 'status', align: 'center' }, ] export function buildFilters ({ statusFilter, typeFilter, priorityFilter, search, ownerFilter, me }) { const filters = {} if (statusFilter === 'not_closed') { filters.status = ['!=', 'Closed'] } else if (statusFilter !== 'all') { filters.status = statusFilter } if (typeFilter) filters.issue_type = typeFilter if (priorityFilter) filters.priority = priorityFilter if (search?.trim()) { const q = search.trim() if (/^\d+$/.test(q)) { filters.legacy_ticket_id = parseInt(q) } else { filters.subject = ['like', '%' + q + '%'] } } if (ownerFilter === 'mine' && me) { filters.owner = me // « Mes tickets » = créés/possédés par l'agent connecté (champ owner, toujours requêtable) } return filters } export function getSortField (col) { if (col === 'opening_date') return 'creation' if (col === 'legacy_id') return 'legacy_ticket_id' return col || 'creation' }