From 8a77c0dd3130d933ceaaed1d8cdd233e38353615 Mon Sep 17 00:00:00 2001 From: Vitex Tecnologia Date: Mon, 1 Jun 2026 17:19:00 -0300 Subject: [PATCH] implementacao de logs de auditoria e alterar multiplos registros de competencia --- .../pages/CompetenciaFechamentos.tsx | 9 +- .../pages/DashboardPontos.tsx | 3 +- .../pages/FechamentoDetalhes.tsx | 262 +++++++++++++++--- src/services/fechamento/fechamentos.ts | 21 ++ tsconfig.app.tsbuildinfo | 2 +- 5 files changed, 253 insertions(+), 44 deletions(-) diff --git a/src/modules/intelligence-score/pages/CompetenciaFechamentos.tsx b/src/modules/intelligence-score/pages/CompetenciaFechamentos.tsx index 05a43b5..0d0e41a 100644 --- a/src/modules/intelligence-score/pages/CompetenciaFechamentos.tsx +++ b/src/modules/intelligence-score/pages/CompetenciaFechamentos.tsx @@ -413,7 +413,12 @@ export default function CompetenciaFechamentos() { Logo Nome - Pontuação Total + + Pontuação Total + Pontuação Paga Status Ações @@ -639,7 +644,7 @@ export default function CompetenciaFechamentos() { >

Buscar novos fechamentos

- Busca no Asana e cria apenas os fechamentos que ainda não existem. + Busca no Asana e cria fechamentos que ainda não existem (inclusive vazios, se o parceiro não tiver tasks no período).

diff --git a/src/modules/intelligence-score/pages/DashboardPontos.tsx b/src/modules/intelligence-score/pages/DashboardPontos.tsx index d197f9a..7c8974b 100644 --- a/src/modules/intelligence-score/pages/DashboardPontos.tsx +++ b/src/modules/intelligence-score/pages/DashboardPontos.tsx @@ -279,7 +279,8 @@ export default function DashboardPontos() { Dashboard

- Distribuição de pontos por cliente — visão rápida do que cada parceiro entregou no período. + Distribuição por cliente — total da competência no período (todas as tarefas do fechamento, alinhado à + pontuação total do mês na tela de fechamento).

+ + + + + ) : ( + + ) + ) : null} @@ -1399,6 +1541,9 @@ export default function FechamentoDetalhes() { + {exibirColunaSelecaoCompetencia ? ( + Selecionar + ) : null} Aprovada Ticket Descrição @@ -1415,25 +1560,47 @@ export default function FechamentoDetalhes() { {loading ? ( - + Carregando tarefas... ) : tarefasFiltradas.length === 0 ? ( - + Nenhuma tarefa encontrada com os filtros aplicados. ) : ( tarefasFiltradas.map((tarefa) => ( - + + {exibirColunaSelecaoCompetencia ? ( + + {tarefa.tipo === "tarefa" ? ( + + handleToggleSelecaoTarefa(tarefa.id, Boolean(checked)) + } + disabled={bloqueioEdicaoTarefa || savingAlteracaoCompetencia} + aria-label={`Selecionar tarefa ${tarefa.descricao}`} + /> + ) : null} + + ) : null}
void handleToggleAprovada(tarefa, Boolean(checked))} disabled={bloqueioEdicaoTarefa || bulkUpdatingRevisao} + className="border-emerald-600/70 data-[state=checked]:border-emerald-600 data-[state=checked]:bg-emerald-600 data-[state=checked]:text-white focus-visible:ring-emerald-500/40" />
@@ -1478,18 +1645,6 @@ export default function FechamentoDetalhes() { Editar - {podeAlterarCompetenciaTarefa && tarefa.tipo === "tarefa" ? ( - - ) : null} {tarefa.tipo === "bonus" || tarefa.tipo === "desconto" ? ( diff --git a/src/services/fechamento/fechamentos.ts b/src/services/fechamento/fechamentos.ts index ceeab2c..2d86296 100644 --- a/src/services/fechamento/fechamentos.ts +++ b/src/services/fechamento/fechamentos.ts @@ -392,6 +392,27 @@ class FechamentoFechamentosService { this.handleAxiosError(error, "Erro ao alterar competência da tarefa."); } } + + async alterarCompetenciaTarefasEmLote( + fechamentoId: string, + input: { tarefaIds: string[]; competenciaDestinoId: string; alteradoPorId: string; motivo?: string }, + ): Promise<{ alteradas: number; tarefas: FechamentoTarefaItem[] }> { + try { + const headers = await buildCommanderHeaders(); + const baseUrl = resolveCommanderBaseUrl(); + const response = await axios.post<{ + data: { alteradas: number; tarefas: FechamentoTarefaItem[] }; + }>(`${baseUrl}/fechamentos/${fechamentoId}/tarefas/alterar-competencia`, { + tarefa_ids: input.tarefaIds, + competencia_destino_id: input.competenciaDestinoId, + alterado_por_id: input.alteradoPorId, + ...(input.motivo?.trim() ? { motivo: input.motivo.trim() } : {}), + }, { headers }); + return response.data.data; + } catch (error) { + this.handleAxiosError(error, "Erro ao alterar competência das tarefas."); + } + } } export const fechamentoFechamentosService = new FechamentoFechamentosService(); diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo index 36702cc..32a9c9d 100644 --- a/tsconfig.app.tsbuildinfo +++ b/tsconfig.app.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.tsx","./src/globalfunctions.ts","./src/main.tsx","./src/vite-env.d.ts","./src/components/chatheader.tsx","./src/components/fullscreenloader.tsx","./src/components/layout.tsx","./src/components/themetoggle.tsx","./src/components/agent/agentsearch.tsx","./src/components/agent/agentview.tsx","./src/components/agent/opiniondialog.tsx","./src/components/areas/areasview.tsx","./src/components/audio/audioview.tsx","./src/components/audio/generationview.tsx","./src/components/audio/transcriptionview.tsx","./src/components/auth/authgate.tsx","./src/components/auth/noaccessscreen.tsx","./src/components/bots/botchat.tsx","./src/components/bots/botchatsidebar.tsx","./src/components/bots/botview.tsx","./src/components/chat/chatinput.tsx","./src/components/chat/chatmessage.tsx","./src/components/chat/chatsidebar.tsx","./src/components/chat/chatview.tsx","./src/components/fechamento/unidadegate.tsx","./src/components/images/imageview.tsx","./src/components/parecer-juridico/parecerjuridicodetailview.tsx","./src/components/parecer-juridico/parecerjuridicoformview.tsx","./src/components/parecer-juridico/parecerjuridicogeneratingscreen.tsx","./src/components/parecer-juridico/parecerjuridicoview.tsx","./src/components/prompts/promptgeneratingscreen.tsx","./src/components/prompts/promptsformview.tsx","./src/components/prompts/promptsview.tsx","./src/components/ui/accordion.tsx","./src/components/ui/alert-dialog.tsx","./src/components/ui/alert.tsx","./src/components/ui/animated-beam.tsx","./src/components/ui/animated-gradient-text.tsx","./src/components/ui/animated-grid-pattern.tsx","./src/components/ui/animated-shiny-text.tsx","./src/components/ui/aspect-ratio.tsx","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/border-beam.tsx","./src/components/ui/breadcrumb.tsx","./src/components/ui/button.tsx","./src/components/ui/calendar.tsx","./src/components/ui/card.tsx","./src/components/ui/carousel.tsx","./src/components/ui/chart.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/command.tsx","./src/components/ui/confetti.tsx","./src/components/ui/context-menu.tsx","./src/components/ui/dialog.tsx","./src/components/ui/drawer.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/form.tsx","./src/components/ui/hover-card.tsx","./src/components/ui/input-otp.tsx","./src/components/ui/input.tsx","./src/components/ui/interactive-hover-button.tsx","./src/components/ui/label.tsx","./src/components/ui/magic-card.tsx","./src/components/ui/menubar.tsx","./src/components/ui/navigation-menu.tsx","./src/components/ui/neon-gradient-card.tsx","./src/components/ui/pagination.tsx","./src/components/ui/popover.tsx","./src/components/ui/progress.tsx","./src/components/ui/radio-group.tsx","./src/components/ui/rainbow-button.tsx","./src/components/ui/resizable.tsx","./src/components/ui/ripple-button.tsx","./src/components/ui/ripple.tsx","./src/components/ui/scroll-area.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/shimmer-button.tsx","./src/components/ui/sidebar.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/slider.tsx","./src/components/ui/sonner.tsx","./src/components/ui/sparkles-text.tsx","./src/components/ui/switch.tsx","./src/components/ui/table.tsx","./src/components/ui/tabs.tsx","./src/components/ui/terminal.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toast.tsx","./src/components/ui/toaster.tsx","./src/components/ui/toggle-group.tsx","./src/components/ui/toggle.tsx","./src/components/ui/tooltip.tsx","./src/components/ui/typing-animation.tsx","./src/components/ui/use-toast.ts","./src/components/ui/warp-background.tsx","./src/config/models.ts","./src/contexts/authaccesscontext.tsx","./src/contexts/promptscontext.tsx","./src/hooks/use-mobile.tsx","./src/hooks/use-toast.ts","./src/lib/utils.ts","./src/modules/fechamento-hgtx/app.tsx","./src/modules/fechamento-hgtx/components/layout/appsidebar.tsx","./src/modules/fechamento-hgtx/components/layout/mainlayout.tsx","./src/modules/fechamento-hgtx/pages/bancopontos.tsx","./src/modules/fechamento-hgtx/pages/bancopontosextrato.tsx","./src/modules/fechamento-hgtx/pages/competenciafechamentos.tsx","./src/modules/fechamento-hgtx/pages/configuracoes.tsx","./src/modules/fechamento-hgtx/pages/fechamentodetalhes.tsx","./src/modules/fechamento-hgtx/pages/fechamentos.tsx","./src/modules/fechamento-hgtx/pages/meufechamento.tsx","./src/modules/fechamento-hgtx/pages/meufechamentobancopontos.tsx","./src/modules/fechamento-hgtx/pages/meuperfil.tsx","./src/modules/fechamento-hgtx/pages/notfound.tsx","./src/modules/fechamento-hgtx/pages/parceiros.tsx","./src/modules/fechamento-hgtx/pages/usuarios.tsx","./src/modules/intelligence-ia/app.tsx","./src/modules/intelligence-ia/components/navlink.tsx","./src/modules/intelligence-ia/components/dashboard/metriccard.tsx","./src/modules/intelligence-ia/components/dashboard/statusbadge.tsx","./src/modules/intelligence-ia/components/integrations/asanacard.tsx","./src/modules/intelligence-ia/components/integrations/googlecalendarcard.tsx","./src/modules/intelligence-ia/components/integrations/googlesheetscard.tsx","./src/modules/intelligence-ia/components/layout/appsidebar.tsx","./src/modules/intelligence-ia/components/layout/mainlayout.tsx","./src/modules/intelligence-ia/pages/dashboard.tsx","./src/modules/intelligence-ia/pages/financas.tsx","./src/modules/intelligence-ia/pages/index.tsx","./src/modules/intelligence-ia/pages/integrations.tsx","./src/modules/intelligence-ia/pages/meuperfil.tsx","./src/modules/intelligence-ia/pages/notfound.tsx","./src/pages/index.tsx","./src/pages/notfound.tsx","./src/pages/redirect.tsx","./src/pages/redirectservice.ts","./src/services/agent.ts","./src/services/api.ts","./src/services/areas.ts","./src/services/asana.ts","./src/services/assistenteprompts.ts","./src/services/audiogeneration.ts","./src/services/chat.ts","./src/services/imagegeneration.ts","./src/services/index.ts","./src/services/parecerapi.ts","./src/services/personalagent.ts","./src/services/promptsapi.ts","./src/services/transcription.ts","./src/services/types.ts","./src/services/fechamento/asanaworkspaceusers.ts","./src/services/fechamento/authme.ts","./src/services/fechamento/bancopontos.ts","./src/services/fechamento/commanderhttp.ts","./src/services/fechamento/competencias.ts","./src/services/fechamento/configuracoes.ts","./src/services/fechamento/fechamentobaseurl.ts","./src/services/fechamento/fechamentos.ts","./src/services/fechamento/parceirofotourl.ts","./src/services/fechamento/parceiros.ts","./src/services/fechamento/unidadecontext.ts","./src/services/fechamento/unidades.ts","./src/services/fechamento/uploads.ts","./src/services/fechamento/usuarios.ts","./src/utils/sound.ts"],"errors":true,"version":"5.8.3"} \ No newline at end of file +{"root":["./src/app.tsx","./src/globalfunctions.ts","./src/main.tsx","./src/vite-env.d.ts","./src/components/chatheader.tsx","./src/components/fullscreenloader.tsx","./src/components/layout.tsx","./src/components/themetoggle.tsx","./src/components/agent/agentsearch.tsx","./src/components/agent/agentview.tsx","./src/components/agent/opiniondialog.tsx","./src/components/areas/areasview.tsx","./src/components/audio/audioview.tsx","./src/components/audio/generationview.tsx","./src/components/audio/transcriptionview.tsx","./src/components/auth/authgate.tsx","./src/components/auth/noaccessscreen.tsx","./src/components/bots/botchat.tsx","./src/components/bots/botchatsidebar.tsx","./src/components/bots/botview.tsx","./src/components/chat/chatinput.tsx","./src/components/chat/chatmessage.tsx","./src/components/chat/chatsidebar.tsx","./src/components/chat/chatview.tsx","./src/components/chat/chatview.types.ts","./src/components/chat/chatwelcome.tsx","./src/components/chat/welcome-message.ts","./src/components/commander-csv/commandercsvview.tsx","./src/components/fechamento/unidadegate.tsx","./src/components/images/imageview.tsx","./src/components/parecer-juridico/parecerjuridicodetailview.tsx","./src/components/parecer-juridico/parecerjuridicoformview.tsx","./src/components/parecer-juridico/parecerjuridicogeneratingscreen.tsx","./src/components/parecer-juridico/parecerjuridicoview.tsx","./src/components/prompts/promptassistantbutton.tsx","./src/components/prompts/promptgeneratingscreen.tsx","./src/components/prompts/promptsformview.tsx","./src/components/prompts/promptsview.tsx","./src/components/ui/accordion.tsx","./src/components/ui/alert-dialog.tsx","./src/components/ui/alert.tsx","./src/components/ui/animated-beam.tsx","./src/components/ui/animated-gradient-text.tsx","./src/components/ui/animated-grid-pattern.tsx","./src/components/ui/animated-shiny-text.tsx","./src/components/ui/aspect-ratio.tsx","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/border-beam.tsx","./src/components/ui/breadcrumb.tsx","./src/components/ui/button.tsx","./src/components/ui/calendar.tsx","./src/components/ui/card.tsx","./src/components/ui/carousel.tsx","./src/components/ui/chart.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/command.tsx","./src/components/ui/confetti.tsx","./src/components/ui/context-menu.tsx","./src/components/ui/dia-text-reveal.tsx","./src/components/ui/dialog.tsx","./src/components/ui/drawer.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/form.tsx","./src/components/ui/hover-card.tsx","./src/components/ui/input-otp.tsx","./src/components/ui/input.tsx","./src/components/ui/interactive-hover-button.tsx","./src/components/ui/label.tsx","./src/components/ui/magic-card.tsx","./src/components/ui/menubar.tsx","./src/components/ui/navigation-menu.tsx","./src/components/ui/neon-gradient-card.tsx","./src/components/ui/pagination.tsx","./src/components/ui/popover.tsx","./src/components/ui/progress.tsx","./src/components/ui/radio-group.tsx","./src/components/ui/rainbow-button.tsx","./src/components/ui/resizable.tsx","./src/components/ui/ripple-button.tsx","./src/components/ui/ripple.tsx","./src/components/ui/scroll-area.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/shimmer-button.tsx","./src/components/ui/sidebar.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/slider.tsx","./src/components/ui/sonner.tsx","./src/components/ui/sparkles-text.tsx","./src/components/ui/switch.tsx","./src/components/ui/table.tsx","./src/components/ui/tabs.tsx","./src/components/ui/terminal.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toast.tsx","./src/components/ui/toaster.tsx","./src/components/ui/toggle-group.tsx","./src/components/ui/toggle.tsx","./src/components/ui/tooltip.tsx","./src/components/ui/typing-animation.tsx","./src/components/ui/use-toast.ts","./src/components/ui/warp-background.tsx","./src/config/models.ts","./src/contexts/authaccesscontext.tsx","./src/contexts/promptscontext.tsx","./src/hooks/use-mobile.tsx","./src/hooks/use-toast.ts","./src/lib/utils.ts","./src/modules/commander/app.tsx","./src/modules/commander/components/layout/commanderlogo.tsx","./src/modules/commander/components/layout/mainlayout.tsx","./src/modules/intelligence-ia/app.tsx","./src/modules/intelligence-ia/components/navlink.tsx","./src/modules/intelligence-ia/components/dashboard/metriccard.tsx","./src/modules/intelligence-ia/components/dashboard/statusbadge.tsx","./src/modules/intelligence-ia/components/integrations/asanacard.tsx","./src/modules/intelligence-ia/components/integrations/googlecalendarcard.tsx","./src/modules/intelligence-ia/components/integrations/googlesheetscard.tsx","./src/modules/intelligence-ia/components/layout/appsidebar.tsx","./src/modules/intelligence-ia/components/layout/mainlayout.tsx","./src/modules/intelligence-ia/pages/dashboard.tsx","./src/modules/intelligence-ia/pages/financas.tsx","./src/modules/intelligence-ia/pages/index.tsx","./src/modules/intelligence-ia/pages/integrations.tsx","./src/modules/intelligence-ia/pages/meuperfil.tsx","./src/modules/intelligence-ia/pages/notfound.tsx","./src/modules/intelligence-score/app.tsx","./src/modules/intelligence-score/components/layout/appsidebar.tsx","./src/modules/intelligence-score/components/layout/mainlayout.tsx","./src/modules/intelligence-score/pages/bancopontos.tsx","./src/modules/intelligence-score/pages/bancopontosextrato.tsx","./src/modules/intelligence-score/pages/competenciafechamentos.tsx","./src/modules/intelligence-score/pages/configuracoes.tsx","./src/modules/intelligence-score/pages/dashboardpontos.tsx","./src/modules/intelligence-score/pages/fechamentodetalhes.tsx","./src/modules/intelligence-score/pages/fechamentos.tsx","./src/modules/intelligence-score/pages/meufechamento.tsx","./src/modules/intelligence-score/pages/meufechamentobancopontos.tsx","./src/modules/intelligence-score/pages/meuperfil.tsx","./src/modules/intelligence-score/pages/notfound.tsx","./src/modules/intelligence-score/pages/parceiros.tsx","./src/modules/intelligence-score/pages/usuarios.tsx","./src/pages/notfound.tsx","./src/pages/redirect.tsx","./src/pages/redirectservice.ts","./src/services/agent.ts","./src/services/api.ts","./src/services/areas.ts","./src/services/asana.ts","./src/services/assistenteprompts.ts","./src/services/audiogeneration.ts","./src/services/chat.ts","./src/services/commandercsv.ts","./src/services/imagegeneration.ts","./src/services/index.ts","./src/services/parecerapi.ts","./src/services/personalagent.ts","./src/services/promptsapi.ts","./src/services/transcription.ts","./src/services/types.ts","./src/services/fechamento/asanaworkspaceusers.ts","./src/services/fechamento/authme.ts","./src/services/fechamento/bancopontos.ts","./src/services/fechamento/commandercapabilities.ts","./src/services/fechamento/commanderhttp.ts","./src/services/fechamento/competencias.ts","./src/services/fechamento/configuracoes.ts","./src/services/fechamento/dashboardpontosporcliente.ts","./src/services/fechamento/fechamentobaseurl.ts","./src/services/fechamento/fechamentos.ts","./src/services/fechamento/parceirofotourl.ts","./src/services/fechamento/parceiros.ts","./src/services/fechamento/unidadecontext.ts","./src/services/fechamento/unidades.ts","./src/services/fechamento/uploads.ts","./src/services/fechamento/usuarios.ts","./src/utils/sound.ts"],"errors":true,"version":"5.8.3"} \ No newline at end of file