Implementa suporte a multiplas instancias da Evolution API via .env. O servico agora verifica a origiem do evento e roteia o disparo para garantir que cada franquia use seu proprio numero comercial.
- Aumenta duração do JWT de acesso (access_token) para 3 horas via Backend (`config.go` e `handler.go`).
- Adiciona envio das flags e cookies de resposta (`access_token`) corretamente no handler de Refresh.
- Cria interceptador `apiFetch` no Frontend via `apiService.ts` para repassar 401s e resolver retentativas de requests pausados automaticamente consumindo o `/auth/refresh`.
- Modifica a recarga de contexto para consumir a nova inteligência de fila persistente no `AuthContext.tsx`.
- ajuste na barra de rolagem no modal de novo usuario
- ajuste no redirecionamento para rota de perfil em ambiente mobile
- ajuste no nome da funçao do profissional na descricao do perfil
- Backend:
- Ajustada query `GetStandardPrice` para filtrar por região e ordenar por data.
- Corrigido `SetPrice` para usar o contexto de região, evitando duplicatas.
- Script de limpeza executado para remover entradas duplicadas no banco.
- Frontend (Financeiro):
- Reset completo do formulário ao abrir "Nova Transação" (limpa busca FOT e eventos).
- Preenchimento automático da "Data Evento" ao selecionar um evento encontrado pela busca FOT.
- Correção na lógica de busca de preço para usar nome da Função (`tabelaFree`).
- sobrescrita de valores na edição e refresh da lista após salvar
- mapeia fot_id corretamente e bloqueia sobrescrita de preço na inicialização da edição
- Destaque em azul para pré-venda na grid.
- Filtros por status (Pré-venda/Finalizada) no Dashboard.
- Badges de status nos detalhes do evento.
- Ajustes no backend para expor campo `pre_venda` da FOT.
- Adiciona coluna `is_coordinator` na tabela `agenda_profissionais`
- Atualiza queries SQL e gera código com sqlc
- Implementa endpoint `PUT /api/agenda/:id/professionals/:profId/coordinator`
- Adiciona ícone de estrela no Dashboard para definir coordenadores
- Restringe acesso à aba de Logística apenas para coordenadores e admins
- Substitui importação por exportação de dados em CSV
- Adiciona ordenação alfabética e por data nas colunas da tabela
- Exibe somatório total dos registros filtrados na interface e no export
- Corrige escopo de variáveis no useEffect de filtros
- Move o campo "Qtd Formandos" para logo abaixo do endereço para melhor visualização
- Oculta a seção "Gestão de Equipe e Recursos" para usuários com perfil de Fotógrafo
Backend:
- Adiciona endpoint `PUT /api/me` para permitir atualização de dados do usuário logado.
- Implementa query `UpdateCadastroCliente` e função de serviço [UpdateClientData]para persistir alterações de clientes.
- Atualiza handlers [Me], [Login] e [ListPending] para incluir e mapear corretamente campos de cliente (CPF, Endereço, Telefone).
- Corrige mapeamento do campo `phone` na struct de resposta do usuário.
Frontend:
- Habilita o formulário de edição em [Profile.tsx] para usuários do tipo 'CLIENTE' (Event Owner).
- Adiciona função [updateUserProfile] em [apiService.ts] para consumir o novo endpoint.
- Atualiza [AuthContext] para persistir campos do cliente (CPF, Endereço, etc.) durante a restauração de sessão ([restoreSession], corrigindo o bug de perfil vazio ao recarregar a página.
- Padroniza envio de dados no Registro e Aprovação para usar `snake_case` (ex: `cpf_cnpj`, `professional_type`).
- Atualiza tipos em [types.ts] para incluir campos de endereço e documentos.
- Implementa filtros de Empresa e Instituição no Dashboard.
- Adiciona barra de estatísticas de equipe (fotógrafos, cinegrafistas, recepcionistas) na modal de Gerenciar Equipe.
- Corrige bug de atualização da interface após editar evento (mapeamento snake_case).
- Adiciona máscaras de input (CPF/CNPJ, Telefone) na página de Perfil.
- Corrige ordenação e persistência da listagem de eventos por FOT.
- Corrige crash e corrupção de dados na página de Perfil.
fix: permite reenviar notificação de logística
- Remove bloqueio do botão de notificação de logística quando já enviada.
- Altera texto do botão para "Reenviar Notificação" quando aplicável.
feat: melhorias no dashboard, perfil e logística
- Implementa filtros de Empresa e Instituição no Dashboard.
- Adiciona barra de estatísticas de equipe na modal de Gerenciar Equipe.
- Desacopla notificação de logística da aprovação do evento (agora apenas manual).
- Permite reenviar notificação de logística e remove exibição redundante de data.
- Adiciona máscaras de input (CPF/CNPJ, Telefone) no Perfil.
- Corrige atualização da interface pós-edição de evento.
- Corrige crash, ordenação e persistência na listagem de eventos e perfil.
- Corrige bug onde a região não era salva no banco durante a criação de FOT (campo faltante no service).
- Adiciona fallback para garantir região "SP" caso o header x-regiao esteja vazio.
- Altera ordenação da listagem para updated_at DESC (editados aparecem no topo).
Frontend:
- Implementado fluxo de inicialização para novos perfis (modal "Complete seu Cadastro").
- Adicionada lógica para pré-preencher nome e email do usuário no cadastro.
- Adicionada renderização condicional: abas "Dados Bancários" e "Profissional" são ocultadas para clientes (EVENT_OWNER).
- Unificada a função de salvar (criação e edição) com tratativa correta de erros e feedback (Toast).
- Adicionado fallback para exibir o email do usuário caso o do perfil esteja vazio.
Backend:
- SQL: Ajustada query `GetProfissionalByUsuarioID` para buscar email da tabela de usuários (LEFT JOIN).
- Handler: Implementado fallback para usar `UsuarioEmail` na resposta se o `Email` do perfil for nulo.
- Service: Correção no salvamento (Create/Update) para tratar `funcao_profissional_id` com UUID vazio (Nil) como NULL, evitando erro de chave estrangeira (FK).
Fixes #profile-save-error, #role-visibility
Backend:
- Adiciona campo `contacts` (JSONB) na tabela `agendas` e atualiza lógica de criação.
Frontend:
- Adiciona campos dinâmicos de contato no formulário de Novo Evento.
- Otimiza busca do Mapbox priorizando a região selecionada (SP/MG).
- Implementa "Deep Linking" no Dashboard (abrir detalhes do evento direto via URL).
- Corrige "flicker" (piscada da lista) ao carregar detalhes via link permitindo carregamento suave.
- Adiciona botão "Aprovar" e fluxo de aprovação na visualização de detalhes.
- Corrige fluxo de edição (salvar retorna para detalhes sem recarregar a página).
- Corrige navegação dos botões "Voltar" em Detalhes e Logística para retornarem corretamente à lista/painel.
- Melhora layout do cabeçalho de detalhes (remove ID vazio e unifica títulos duplicados).
- Ajusta clique no Logo para forçar reset da navegação para o Painel.
Detalhes das alterações:
[Banco de Dados]
- Ajuste nas constraints UNIQUE das tabelas de catálogo (cursos, empresas, tipos_eventos, etc.) para incluir a coluna `regiao`, permitindo dados duplicados entre regiões mas únicos por região.
- Correção crítica na constraint da tabela `precos_tipos_eventos` para evitar conflitos de UPSERT (ON CONFLICT) durante a inicialização.
- Implementação de lógica de Seed para a região 'MG':
- Clonagem automática de catálogos base de 'SP' para 'MG' (Tipos de Evento, Serviços, etc.).
- Inserção de tabela de preços específica para 'MG' via script de migração.
[Backend - Go]
- Atualização geral dos Handlers e Services para filtrar dados baseados no cabeçalho `x-regiao`.
- Ajuste no Middleware de autenticação para processar e repassar o contexto da região.
- Correção de queries SQL (geradas pelo sqlc) para suportar os novos filtros regionais.
[Frontend - React]
- Implementação do envio global do cabeçalho `x-regiao` nas requisições da API.
- Correção no componente [PriceTableEditor](cci:1://file:///c:/Projetos/photum/frontend/components/System/PriceTableEditor.tsx:26:0-217:2) para carregar e salvar preços respeitando a região selecionada (fix de "Preços zerados" em MG).
- Refatoração profunda na tela de Importação ([ImportData.tsx](cci:7://file:///c:/Projetos/photum/frontend/pages/ImportData.tsx:0:0-0:0)):
- Adição de feedback visual detalhado para registros ignorados.
- Categorização explícita de erros: "CPF Inválido", "Região Incompatível", "Linha Vazia/Separador".
- Correção na lógica de contagem para considerar linhas vazias explicitamente no relatório final, garantindo que o total bata com o Excel.
[Geral]
- Correção de diversos erros de lint e tipagem TSX.
- Padronização de logs de erro no backend para facilitar debug.
- Implementada paginação (Load More) na lista de profissionais para suportar grandes volumes de dados sem travar a UI.
- Otimização do cálculo de disponibilidade (busy check) de O(N*M) para O(N) usando Sets pré-calculados.
- Adicionado estado de processamento nos botões de ação para prevenir cliques múltiplos e requisições duplicadas.
- Refatoração dos filtros para uso de `useMemo`, evitando re-renderizações desnecessárias.
- Frontend: Refatoração do componente UserApproval para corrigir perda de foco nos inputs (extração de modais).
- Backend: Implementação da criação automática do perfil profissional (cadastro_profissionais) ao criar um novo usuário admin.
- Backend: Correção para evitar duplicidade de profissionais, utilizando o email para vincular ao perfil existente.
- API: Ajuste para retornar dados completos (nome, telefone, empresa) na listagem de usuários do admin.
Backend:
- Adiciona constraint UNIQUE para 'email' na tabela cadastro_profissionais.
- Atualiza schema.sql para converter e-mails vazios para NULL automaticamente.
- Modifica query CreateProfissional para usar ON CONFLICT (email) DO UPDATE (Upsert).
- Ajusta helper toPgText para tratar string vazia como NULL, permitindo múltiplos profissionais sem e-mail.
Frontend:
- Adiciona Modal de Detalhes do Usuário na página de Aprovação.
- Oculta seletor de função para usuários do tipo 'Cliente'.
- Backend: Implementada query `ListAgendasByCompany` e ajustada lógica do serviço de agenda para filtrar eventos pela empresa do usuário.
- Backend: Adicionada migração segura (idempotente) para incluir coluna `empresa_id` em produção.
- Frontend: Corrigido filtro [getEventsByRole] para exibir eventos importados (da empresa) para o cliente.
- Frontend: Renomeada aba de aprovação para 'Cadastros Clientes'.
- Melhora Importação: ignora linhas vazias/inválidas automaticamente.
- Filtros Server-Side: busca em todas as páginas (FOT, Nome, etc.).
- Colunas Novas: adiciona Curso, Instituição, Ano e Empresa na tabela.
- UI/UX: Corrige ordenação (vazios no fim) e adiciona scrollbar no topo.
Frontend:
- Implementa leitura e processamento de arquivos Excel (.xlsx) para Profissionais.
- Adiciona validação e truncamento automático de campos (CPF, UF, Whatsapp) para evitar erros.
- Cria lógica de mapeamento automático de Funções (ex: Fotógrafo, Cinegrafista).
- Adiciona card "Total Geral" na dashboard de Equipe (/equipe).
Backend:
- Cria endpoint e serviço de importação para cadastro em massa.
- Implementa tratamento de erros robusto e prevenção de panics (nil pointers).
- Ajusta queries de inserção e atualização (Upsert) no banco de dados.
Geral:
- Funcionalidade de importação estabilizada e validada.
- Implementa fluxo de edicao inteligente e otimizacoes
- Implementa deteccao de CPF existente no Admin (TeamPage) com redirecionamento automatico para Edicao.
- Isola formulario em ProfessionalModal para performance.
- Adiciona pre-checagem de CPF na API publica (retornando apenas dados seguros).
- Otimiza renderizacao da lista de equipe.
- Backend: Implementada lógica de importação de Agenda (Upsert) em `internal/agenda`.
- Backend: Criadas queries SQL para busca de FOT e Tipos de Evento.
- Frontend: Adicionada aba de Importação de Agenda em `ImportData.tsx`.
- Frontend: Implementado Parser de Excel para Agenda com tratamento de datas.
- UX: Adicionada Barra de Rolagem Superior Sincronizada na Tabela de Eventos.
- UX: Implementado `LoadingScreen` global unificado (Auth + DataContext).
- Perf: Adicionada Paginação no `EventTable` para resolver travamentos com grandes listas.
- Security: Proteção de rotas de importação (RequireWriteAccess).
Backend:
- Implementa rota e serviço de importação em lote (`/api/import/fot`).
- Adiciona suporte a "Upsert" para atualizar registros existentes sem duplicar.
- Corrige e migra schema do banco: ajuste na precisão de valores monetários e correções de sintaxe.
Frontend:
- Cria página de Importação de Dados com visualização de log e tratamento de erros.
- Implementa melhorias de UX nas tabelas (Importação e Gestão de FOT):
- Contadores de total de registros.
- Funcionalidade "Drag-to-Scroll" (arrastar para rolar).
- Barra de rolagem superior sincronizada na tabela de gestão.
- Corrige bug de "tela branca" ao filtrar dados vazios na gestão.
- Implementa edição de Role na tela de Aprovação com suporte a funções virtuais (Cine/Recep).
- Atualiza apiService com updateUserRole.
- Corrige visibilidade do Dashboard para RESEARCHER (DataContext).
- Backend: ListPending retorna tipo_profissional original.
- adiciona aba 'Sistema' nas configurações para gestão de tabelas auxiliares (CRUD) e tabela de preços
- vincula formulário de perfil com dados do usuário logado (API /api/profissionais)
- oculta abas 'Notificações' e 'Aparência'
- corrige layout e bugs de estado na página de configurações