// front-end/app/composables/useInteligencia.ts import { editais } from '~/data/mock/editais' import { concorrentes } from '~/data/mock/concorrentes' export function useInteligencia() { const totalEditais = editais.length const vencidas = editais.filter(e => e.status === 'vencida') const perdidas = editais.filter(e => e.status === 'perdida') const taxaVitoria = computed(() => totalEditais > 0 ? Math.round((vencidas.length / totalEditais) * 100) : 0 ) const valorGanho = computed(() => vencidas.reduce((acc, e) => acc + e.valorEstimado, 0) ) const ticketMedio = computed(() => vencidas.length > 0 ? valorGanho.value / vencidas.length : 0 ) const porModalidade = computed(() => { const counts: Record = {} for (const e of editais) { if (!counts[e.modalidade]) counts[e.modalidade] = { total: 0, vitorias: 0 } counts[e.modalidade].total++ if (e.status === 'vencida') counts[e.modalidade].vitorias++ } return counts }) const motivoPerda = computed(() => { const motivos = [ 'GOV - PERDIDO POR PREÇO', 'GOV - PERDIDO POR DOCUMENTAÇÃO', 'GOV - PERDIDO NO ALEATÓRIO', 'GOV - DECLINADO POR REQUISITO TÉCNICO', 'GOV - DECLINADO OUTROS', 'Outro', ] return motivos.map((m, i) => ({ motivo: m, quantidade: [3, 1, 1, 1, 0, 1][i] ?? 0 })) }) const concorrentesFrequentes = computed(() => [...concorrentes].sort((a, b) => b.totalDisputas - a.totalDisputas).slice(0, 5) ) return { taxaVitoria, valorGanho, ticketMedio, porModalidade, motivoPerda, concorrentesFrequentes, vencidas, perdidas } }