import { request } from './client.js'; export function normalizeTicketListResponse(data, fallbackPageSize = 20) { const payload = Array.isArray(data) ? { tickets: data } : (data && typeof data === 'object' ? data : {}); const tickets = Array.isArray(payload.tickets) ? payload.tickets : (Array.isArray(payload.list) ? payload.list : (Array.isArray(payload.items) ? payload.items : [])); const pageSizeValue = Number(payload.pageSize ?? payload.page_size); const pageSize = Number.isInteger(pageSizeValue) && pageSizeValue > 0 ? pageSizeValue : fallbackPageSize; const totalValue = Number(payload.total ?? payload.count); const total = Number.isFinite(totalValue) && totalValue >= 0 ? totalValue : tickets.length; const totalPagesValue = Number(payload.totalPages ?? payload.total_pages ?? payload.pages); const totalPages = Number.isInteger(totalPagesValue) && totalPagesValue > 0 ? totalPagesValue : Math.max(1, Math.ceil(total / pageSize)); return { tickets, total, totalPages }; } export function listTickets(params = {}) { const query = new URLSearchParams(); if (params.page) query.set('page', String(params.page)); if (params.pageSize) query.set('pageSize', String(params.pageSize)); if (params.status) query.set('status', params.status); const qs = query.toString(); return request('/tickets' + (qs ? '?' + qs : '')); } export function createTicket(data) { return request('/tickets', { method: 'POST', body: data }); } export function getTicket(id) { return request('/tickets/' + encodeURIComponent(id)); } export function addMessage(id, content) { return request('/tickets/' + encodeURIComponent(id) + '/messages', { method: 'POST', body: { content }, }); } export function closeTicket(id) { return request('/tickets/' + encodeURIComponent(id) + '/close', { method: 'POST' }); } export function reopenTicket(id) { return request('/tickets/' + encodeURIComponent(id) + '/reopen', { method: 'POST' }); }