- Adiciona tabela `disponibilidade_profissionais` no schema
- Adiciona coluna `posicao` para mapa de profissionais no evento
- Implementa Service e Handler para gerenciar Disponibilidade (Set/Get)
- Implementa lógica de Escalonamento: listar disponíveis e atribuir posição
- Atualiza rotas da API e serviço do frontend
feat(frontend): implementa modal de detalhes e updates otimistas na equipe
- Adiciona componente ProfessionalDetailsModal para exibir dados completos do profissional
- Implementa update otimista em DataContext para adição/removação instantânea da equipe
- Corrige bug crítico de sintaxe e estrutura na Dashboard.tsx
- Adiciona badges de status (Pendente/Confirmado/Rejeitado) na listagem de equipe
- Corrige erro de referência de variável (professionalId) no fluxo de atribuição
- Adiciona coluna `tipo_profissional` à tabela `usuarios`
- Atualiza handlers e services do Backend Go para persistir o tipo
- Atualiza registro no Frontend para enviar o nome da função (ex: "Cinegrafista")
- Corrige uploads S3 para compatibilidade com Civo (PathStyle)
- Script para definir política pública de leitura no bucket S3
- Adiciona fallback para imagens de avatar na Navbar
- Adicionar modal de verificação de código de acesso na página inicial para cadastro
- Adicionar modal de seleção profissional/cliente após verificação do código
- Criar página AccessCodeManagement para CEO/SUPERADMIN gerar e gerenciar códigos de acesso
- Adicionar upload de foto de perfil no formulário de cadastro de profissional
- Adicionar upload de foto de perfil no modal de edição de perfil
- Remover botão 'Entrar/Cadastrar' do header nas rotas de login e cadastro
- Separar campos Conta e PIX no cadastro de profissional (apenas PIX obrigatório)
- Adicionar campo de descrição de equipamentos no cadastro de profissional
- Remover edição manual de 'Gastos Captação' (campo calculado)
- Converter página de códigos de acesso para formato de tabela estilo Excel
- Restaurar fallback de login do usuário demo quando o backend estiver indisponível
- Padronizar espaçamentos e fontes do header nas páginas administrativas
- Adicionar novo item de menu 'Códigos de Acesso' para CEO/SUPERADMIN
- Dashboard: Ajusta exibição do campo LOCAL para mostrar o nome do local.
- Dashboard: Atualiza exibição do ENDEREÇO para formato completo.
- UserApproval: Remove funcionalidade e botão de rejeitar usuários.
- Atualiza o EventForm para buscar a lista de empresas via /api/empresas para usuários BUSINESS_OWNER e SUPERADMIN.
- Adiciona campo de seleção de 'Empresa' antes do carregamento das FOTs (Turmas).
- Implementa lógica em cascata: Seleção de Empresa -> Carrega Turmas -> Filtra Cursos -> Filtra Instituições.
- Adiciona mensagem de aviso quando a empresa selecionada não possui turmas cadastradas.
- Refatora o gerenciamento de estado para utilizar o ID da empresa ao invés do nome, garantindo maior integridade.
Resolvido problemas críticos na experiência do usuário (Event Owner) ao criar eventos, garantindo consistência de dados, eliminando criações duplicadas e corrigindo o funcionamento dos filtros na dashboard.
Principais Alterações:
Correção de Duplicidade na Criação (Critical Bug):
Removida a chamada direta à API
createAgenda
dentro do componente
EventForm
. A criação agora é centralizada via callback
onSubmit
, evitando que o evento fosse submetido duas vezes (uma pelo formulário e outra pelo Dashboard/Context).
Consistência de Dados e Formatação:
Implementado reload automático (window.location.href = '/painel') após o sucesso da criação. Isso garante que a lista de eventos carregue os dados completos do backend (incluindo joins de Curso, Instituição e FOT), resolvendo o bug onde o evento aparecia incompleto na lista.
Corrigido o formato da data enviada ao backend (ISOString com sufixo Z), resolvendo o erro de parse RFC3339 no servidor Go.
Normalizada a chave de recuperação do token no localStorage (de @Photum:token para token).
Correção de Filtros (Dashboard):
Ajustado o filtro avançado de FOT para buscar pelo campo visual fot (Número do FOT) em vez do fotId (UUID interno).
Adicionado suporte a busca case-insensitive (ignora maiúsculas/minúsculas).
Arquivos Impactados:
frontend/components/EventForm.tsx
frontend/contexts/DataContext.tsx
frontend/pages/Dashboard.tsx
Implementação de Ações de Gestão de FOT e Correções na Exibição da Agenda
Implementação das capacidades completas de gerenciamento para o módulo 'Gestão de FOT' e resolve problemas críticos na exibição de dados no Dashboard da Agenda.
Mudanças:
Gestão de FOT (Course Management):
Edição: O formulário foi atualizado para aceitar initialData e permitir a edição de registros existentes.
Exclusão: Adicionada funcionalidade de exclusão com diálogo de confirmação e integração com o backend.
Filtro de Busca: Adicionada uma barra de busca para filtrar registros por número FOT, Empresa, Curso ou Instituição.
Correções de UI: O alinhamento das colunas da tabela foi corrigido para garantir que os dados correspondam aos cabeçalhos corretos.
Agenda / Dashboard:
Correção de Bug Crítico: Resolvido o erro do React ("Objects are not valid as a React child") causado pelo mapeamento incorreto de assigned_professionals. Agora o código extrai corretamente os IDs para photographerIds e mapeia os objetos completos para o novo campo assignments.
Correção de Bug: Corrigida uma falha silenciosa no
fetchEvents
causada por um erro de referência nula em local_evento.
Limpeza: Removidos os dados de mock (INITIAL_EVENTS) para garantir que o estado "Sem eventos" apareça corretamente quando não houver dados reais.
API Service:
Adicionados os métodos
updateCadastroFot
(PUT) e
deleteCadastroFot
(DELETE).
- Implementadas ações de Editar e Excluir na página de Gestão de FOT
- Adicionado filtro de busca para FOTs
- Corrigido desalinhamento de colunas na tabela de Gestão de FOT
- Atualizado FotForm para suportar a edição de registros existentes
- Corrigido erro de renderização do React no Dashboard mapeando corretamente os objetos de atribuição
- Removidos dados de mock (INITIAL_EVENTS) e corrigido erro de referência nula no DataContext
- Adicionados métodos de atualização/exclusão ao apiService
Correção da Listagem de Agenda, Filtro de Usuário e Mapeamento de Dados
Resolve problemas críticos no módulo de Agenda, garantindo que os eventos sejam exibidos corretamente para o usuário logado e que as informações na interface (como o número da turma e nome do evento) correspondam aos dados reais do banco, eliminando a exibição de IDs internos e campos vazios.
Alterações Realizadas
🔙 Backend
Banco de Dados: Adicionada coluna user_id na tabela agenda para vincular o evento ao seu criador.
Queries:
CreateAgenda
atualizado para salvar o user_id.
Nova query ListAgendasByUser criada para filtrar os eventos pelo ID do usuário.
Lógica: Atualização nos Services e Handlers para identificar o usuário via token JWT e aplicar o filtro corretamente.
🖥️ Frontend
Correção de Reatividade (
DataContext
):
Integração do
useAuth
para garantir que a lista de eventos (função
fetchEvents
) seja recarregada automaticamente assim que o login é realizado.
Mapeamento de Dados:
FOT: Ajustado para exibir o fot_numero (ex: 25189) em vez do UUID.
Nome do Evento: Criado fallback para usar o "Tipo de Evento" (ex: "Churrasco") como título caso o nome não seja informado.
Formandos: Corrigido o mapeamento de qtd_formandos para attendees.
Interface (
EventTable
&
Dashboard
):
Tabelas e telas de detalhes atualizadas para usar os campos mapeados corretamente.
Correção de erro de TypeScript no enum
EventStatus
(troca de COMPLETED para DELIVERED).
Como Testar
Filtro: Logar com um usuário cliente e confirmar que ele vê apenas os seus eventos.
Listagem: Verificar se a coluna "FOT" mostra um número simples e se colunas como "Curso" e "Instituição" estão preenchidas.
Detalhes: Abrir um evento e confirmar se "Qtd Formandos" aparece (ex: 35) e se o título do evento está correto mesmo sem observações preenchidas
- Backend: Adiciona `user_id` na tabela agenda e implementa queries de filtro por role.
- Frontend(Context): Corrige dependência do `useEffect` para garantir busca correta ao logar.
- Frontend(Context): Melhora mapeamento de dados (Número FOT, Fallback de Nome, Formandos).
- Frontend(UI): Atualiza EventTable e Dashboard para exibir número FOT e dados vinculados corretamente.
- Frontend(Fix): Resolve erros de TypeScript no enum EventStatus.
feat(backend): implementa módulo Agenda com lógica automática de status
- Cria tabela 'agenda' com FKs normalizadas e colunas específicas de evento
- Gera operações CRUD via SQLC para Agenda
- Implementa Service e Handler da Agenda
- Adiciona cálculo automático de 'status_profissionais' (OK/FALTA/ERRO) baseado na contagem de faltantes
- Registra rotas da Agenda em /api/agenda
- Atualiza documentação Swagger
- Corrige caminhos de importação e tipagem UUID no novo serviço
- Cria tabela 'agenda' com FKs normalizadas e colunas específicas de evento
- Gera operações CRUD via SQLC para Agenda
- Implementa Service e Handler da Agenda
- Adiciona cálculo automático de 'status_profissionais' (OK/FALTA/ERRO) baseado na contagem de faltantes
- Registra rotas da Agenda em /api/agenda
- Atualiza documentação Swagger
- Corrige caminhos de importação e tipagem UUID no novo serviço
implementa o fluxo completo de gerenciamento de FOT (Formandos, Organização, Turma) no sistema, substituindo a antiga visualização de cursos por uma listagem detalhada de cadastros FOT e adicionando a funcionalidade de criação de novas turmas.
Alterações Principais:
Frontend
(CourseManagement.tsx)
:
A página de gestão foi reformulada para consumir e exibir dados da rota /api/cadastro-fot.
Implementação do botão "+ Cadastro FOT" que aciona um modal de cadastro.
Adição de tratamento de erros e estados de carregamento na listagem.
Novo Componente
(FotForm.tsx)
:
Formulário completo para criação de FOT com os campos: FOT, Empresa, Curso, Ano Formatura, Instituição, Cidade, Estado, Gastos de Captação, Pré-venda e Observações.
Validação em tempo real: O sistema verifica se o número FOT digitado já existe na lista carregada e impede a duplicidade.
Integração dos dropdowns de Curso e Ano de Formatura com seus respectivos endpoints dinâmicos (/api/cursos e /api/anos-formaturas).
Serviços
(apiService.ts)
:
Adição dos métodos
getCadastroFot
e
createCadastroFot
.
Ajuste nos métodos de busca de dependências (
getAvailableCourses
,
getGraduationYears
) para mapear corretamente os campos (nome, ano_semestre) retornados pela API.
Backend
(handler.go)
:
Correção de um bug que causava a duplicação de perfis de profissionais (fotógrafos) durante o registro, garantindo a integridade dos dados de usuário.
- Refatora CourseManagement para listar dados de /api/cadastro-fot
- Cria componente FotForm para novo cadastro de turmas
- Adiciona validação de unicidade para número FOT
- Integra dropdowns com endpoints /api/cursos e /api/anos-formaturas
- Corrige duplicidade no registro de profissionais no backend
implementa correções importantes no fluxo de autenticação para garantir que usuários pendentes de aprovação não tenham acesso ao sistema, além de melhorias na interface administrativa.
Principais Alterações:
Autenticação e Segurança:
Login de Inativos: Adicionada verificação do campo ativo no login e na restauração de sessão (
AuthContext
). Usuários pendentes são impedidos de logar ou deslogados automaticamente.
Auto-login no Registro: O sistema agora impede o login automático após o cadastro se o usuário necessitar de aprovação.
Logout: Atualizado para chamar a rota /auth/logout na API, garantindo a invalidação dos cookies de sessão (HttpOnly).
Interface de Aprovação (Admin):
Dados Adicionais: Adicionada a coluna Telefone nas listagens de Empresas e Profissionais para facilitar a verificação.
Correção de Interface: Refatoração do componente
UserApproval.tsx
para corrigir um glitch visual que ocorria ao alternar entre as abas, onde as colunas ficavam desalinhadas ou duplicadas.
Como testar:
Tente fazer login com um usuário que ainda não foi aprovado (deve receber erro ou ser impedido).
Acesse a tela de "Aprovação de Cadastros" e verifique se o telefone aparece na lista.
Alterne entre as abas "Empresas" e "Profissionais" para garantir que a tabela renderiza corretamente.
- Bloqueia login e auto-login para usuários com status inativo
- Implementa logout chamando endpoint do backend para limpar cookies
- Adiciona verificação de status ativo na restauração de sessão
- Inclui coluna 'Telefone' na tabela de aprovação de cadastros
- Corrige bug de renderização nas tabelas ao trocar de abas
implementa endpoints administrativos no backend para gerenciamento de usuários, padroniza os níveis de acesso (roles) em toda a aplicação para resolver inconsistências e melhora significativamente a experiência do usuário (UX) nos formulários de cadastro com textos de ajuda e preenchimento automático de endereço.
Principais Mudanças
Backend
Endpoints Admin: Implementação de queries, serviço e handlers para as rotas GET /api/admin/users e GET /api/admin/users/:id.
Padronização de Roles: Refatoração do serviço de auth para usar constantes padronizadas (SUPERADMIN, BUSINESS_OWNER, PHOTOGRAPHER, EVENT_OWNER) ao invés de strings hardcoded, garantindo alinhamento com os tipos do Frontend.
Usuários Demo: Atualização do
EnsureDemoUsers
para migrar automaticamente os usuários de demonstração existentes para o novo formato de role ao iniciar a aplicação.
Docs: Swagger atualizado.
Frontend
Cadastro de Cliente (/cadastro):
Adicionado texto de ajuda acima do campo de seleção de Empresa orientando usuários que não encontram sua instituição.
Implementada ordenação personalizada para forçar "Não Cadastrado" a aparecer sempre no topo da lista.
Cadastro de Profissional (/cadastro-profissional):
Adicionado campo de CEP com integração à API AwesomeAPI.
Implementada lógica para preencher automaticamente Rua, Bairro, Cidade e UF ao sair do campo de CEP (blur).
Atualizado o payload para incluir o CEP na string de endereço enviada ao backend.
Como Testar
Roles do Backend: Inicie o backend e faça login com usuários demo (ex: admin@photum.com); verifique se as roles agora são SUPERADMIN, etc.
API Admin: Use o Swagger para chamar GET /api/admin/users (requer token de Admin).
Cadastro: Acesse /cadastro e verifique a ordenação da lista de empresas.
Formulário Profissional: Acesse /cadastro-profissional, digite um CEP válido (ex: 01001-000) e verifique se os campos de endereço são preenchidos automaticamente.
implementação de listagem de usuários admin, padronização de roles e melhorias nos cadastros
Backend:
- Adicionados endpoints administrativos [ListUsers](cci:1://file:///c:/Projetos/photum/backend/internal/auth/service.go:268:0-270:1) e [GetUser](cci:1://file:///c:/Projetos/photum/backend/internal/auth/handler.go:475:0-514:1).
- Padronizadas as constantes de [UserRole](cci:1://file:///c:/Projetos/photum/backend/internal/auth/service.go:202:0-216:1) (`SUPERADMIN`, `BUSINESS_OWNER`, etc.) para alinhar com o frontend.
- Atualizada a função [EnsureDemoUsers](cci:1://file:///c:/Projetos/photum/backend/internal/auth/service.go:230:0-266:1) para migrar usuários existentes para as novas roles.
- Documentação Swagger regenerada.
Frontend:
- Adicionado busca automática de CEP no formulário de Cadastro Profissional (AwesomeAPI).
- Adicionado texto de ajuda e ordenação (priorizando "Não Cadastrado") no select de Empresas.
- Add photographer finance page at /meus-pagamentos with payment history table
- Remove university management page and related routes
- Update Finance and UserApproval pages with consistent spacing and typography
- Fix Dashboard background color to match other pages (bg-gray-50)
- Standardize navbar logo sizing across all pages
- Change institution field in course form from dropdown to text input
- Add year and semester fields for university graduation dates
- Improve header spacing on all pages to pt-20 sm:pt-24 md:pt-28 lg:pt-32
- Apply font-serif styling consistently across page headers
feat(auth): implementação do fluxo de cadastro duplo (clientes e profissionais)
- backend: atualizado /auth/register para retornar userId e access_token
- backend: desabilitada criação automática de perfil parcial no registro
- backend: adicionado suporte a cookie access_token no middleware e handlers
- frontend: atualizado AuthContext para enviar role e retornar token
- frontend: implementado registro de profissional em 2 etapas (Usuário -> Perfil)
- frontend: adicionado serviço createProfessional com suporte a header de auth
- frontend: definido role correto (EVENT_OWNER) para cadastro de clientes
- backend: atualizado /auth/register para retornar userId e access_token
- backend: desabilitada criação automática de perfil parcial no registro
- backend: adicionado suporte a cookie access_token no middleware e handlers
- frontend: atualizado AuthContext para enviar role e retornar token
- frontend: implementado registro de profissional em 2 etapas (Usuário -> Perfil)
- frontend: adicionado serviço createProfessional com suporte a header de auth
- frontend: definido role correto (EVENT_OWNER) para cadastro de clientes
feat: atualização de papéis no registro e correção de integração de tipos de evento
Backend:
- Atualiza endpoint /auth/register para aceitar e exigir 'role' no corpo da requisição.
- Atualiza handler de registro para criar perfil profissional condicionalmente baseado na role.
- Regenera documentação Swagger para refletir novos parâmetros de registro.
Frontend:
- Atualiza apiService para usar o endpoint correto /api/tipos-eventos.
- Corrige EventForm para renderizar objetos de tipo de evento corretamente (usando estrutura id/nome).
- Corrige erro de sintaxe JSX no componente EventFiltersBar.
Backend:
- Atualiza endpoint /auth/register para aceitar e exigir 'role' no corpo da requisição.
- Atualiza handler de registro para criar perfil profissional condicionalmente baseado na role.
- Regenera documentação Swagger para refletir novos parâmetros de registro.
Frontend:
- Atualiza apiService para usar o endpoint correto /api/tipos-eventos.
- Corrige EventForm para renderizar objetos de tipo de evento corretamente (usando estrutura id/nome).
- Corrige erro de sintaxe JSX no componente EventFiltersBar.
- Sistema FOT (Formatura Operations Tracking):
* Tela de Gestão FOT (/cursos) com tabela Excel-style
* Modal CourseForm com 10 campos (FOT, Empresa, Instituição, etc)
* Validação de FOT (5 dígitos numéricos)
* Edição de turmas ao clicar na linha
* Integração com API backend (empresas, níveis educacionais, universidades)
- Dashboard renovado (/painel):
* Tabela com 8 colunas (FOT, Data, Curso, Instituição, Ano, Empresa, Tipo, Status)
* Filtros avançados: FOT (busca numérica), Data, Tipo de Evento
* Removidos filtros de Estado e Cidade
* Página de detalhes com tabela vertical (12 informações)
* Botão Aprovar redireciona para modal de equipe
- Sistema de Aprovação Dupla (/aprovacao):
* 2 tabelas separadas por abas (Usuários Normais e Profissionais)
* Coluna Universidade renomeada para Empresa
* Coluna Função nos profissionais
* Workflow de aprovação com atribuição de equipe
- Cadastro Profissional (/cadastro-profissional):
* Formulário específico para fotógrafos
* Dropdown de Função Profissional da API
* Tratamento de erro quando backend offline
- Modal de Criar Evento:
* Tipo de Evento como primeiro campo
* Nome do Evento (Opcional) como segundo campo
- Componentes novos:
* EventTable.tsx - Tabela de eventos com ordenação
* EventFiltersBar.tsx - Filtros avançados (3 filtros)
* CourseForm.tsx - Formulário FOT completo
* ProfessionalForm.tsx - Cadastro profissional
- API Service:
* Integração com backend Go
* Endpoints: /api/empresas, /api/funcoes, /api/niveis-educacionais, /api/universidades, /graduation-years
- Documentação:
* README.md principal atualizado
* frontend/README.md atualizado
* Documentação completa de componentes e features
feat(client): integra autenticacao real e melhora fluxo de login
- Integra AuthContext com API do Backend (/auth/login e /auth/register)
- Implementa Modo Hibrido: Demo Users usam Mock, outros usam API Real
- Habilita campo de senha e adiciona toggle de visibilidade (olho)
- Conecta formulario de Registro ao backend
- Adiciona preenchimento automatico de senha para usuarios de demonstracao
- Mapeia status 'ativo' do usuario vindo da API
- Integra AuthContext com API do Backend (/auth/login e /auth/register)
- Implementa Modo Hibrido: Demo Users usam Mock, outros usam API Real
- Habilita campo de senha e adiciona toggle de visibilidade (olho)
- Conecta formulario de Registro ao backend
- Adiciona preenchimento automatico de senha para usuarios de demonstracao
- Mapeia status 'ativo' do usuario vindo da API
feat(auth): melhora registro e login com vinculo profissional e status ativo
aprimora o fluxo de autenticação, permitindo que o processo de registro já capture dados básicos do profissional (Nome, Telefone) e vincule automaticamente a um perfil na tabela cadastro_profissionais. Também implementa a política de segurança onde novos usuários nascem Inativos por padrão.
Principais Mudanças:
Registro (/auth/register):
Novos campos obrigatórios/opcionais: nome, telefone.
Vínculo Automático: Cria registro na tabela usuarios e cadastro_profissionais numa única transação lógica.
Default Inativo: Usuários agora são criados com ativo = false (alterado na query e no schema), exigindo aprovação posterior.
Login (/auth/login):
Separação da strutura de Request (
loginRequest
vs
registerRequest
) para evitar erros de validação.
Resposta agora inclui o status ativo: boolean para que o frontend possa tratar usuários pendentes.
Database:
Ajuste na constraint default da coluna ativo em usuarios.
Impacto: O frontend agora deve tratar o caso de ativo: false no login (ex: mostrar mensagem "Aguardando aprovação") e enviar nome/telefone no registro.
- Adiciona suporte a nome e telefone no cadastro (/register)
- Implementa criacao automatica de perfil profissional vinculado ao usuario
- Define 'ativo=false' como padrao para novos cadastros (pendente aprovacao)
- Separa DTOs de Request para Login e Registro para validacao correta
- Expora campo 'ativo' no response do Login
- Tradução de rotas para português (entrar, cadastro, configuracoes, etc)
- Ajuste de responsividade na página Financeiro (mobile)
- Correção navegação Configurações para usuário CEO/Business Owner
- Modal de gerenciamento de equipe com lista de profissionais
- Exibição de fotógrafos, cinegrafistas e recepcionistas disponíveis por data
- Ajuste de layout da logo nas telas de login e cadastro
- Correção de z-index do header
- Melhoria de espaçamento e padding em cards
feat(cadastro-fot): implementa crud completo de FOT com joins e campo booleano
- Cria tabela 'cadastro_fot' com integracao (FKs) para Empresas, Cursos e Formaturas
- Implementa endpoints (GET/POST/PUT/DELETE) em '/api/cadastro-fot'
- Otimiza rota GET utilizando JOINs para retornar nomes das entidades estrangeiras
- Define campo 'pre_venda' como BOOLEAN e 'fot' como identificador unico (int)
- Adiciona tratativa robusta para tipos numericos no Postgres
- Cria tabela 'cadastro_fot' com integracao (FKs) para Empresas, Cursos e Formaturas
- Implementa endpoints (GET/POST/PUT/DELETE) em '/api/cadastro-fot'
- Otimiza rota GET utilizando JOINs para retornar nomes das entidades estrangeiras
- Define campo 'pre_venda' como BOOLEAN e 'fot' como identificador unico (int)
- Adiciona tratativa robusta para tipos numericos no Postgres
feat: Auto-Migração, Seeding de Preços e CRUD de Eventos
Backend & Database:
Auto-Migração: O servidor agora cria tabelas automaticamente ao iniciar (schema.sql embutido).
Seed de Dados: Adicionado script que popula automaticamente a tabela de preços de referência (conforme planilha).
CRUD Completo: Adicionadas rotas PUT e DELETE para Tipos de Eventos.
Melhoria na API: Rota GET /tipos-eventos agora já retorna os preços aninhados (nested).
Fix: Listas vazias retornam [] ao invés de null.
Fix: Correção crítica na conversão de valores numéricos (R$) evitando erro 500.
Infraestrutura:
Swagger: Detecção automática de ambiente para usar http (local) ou https (prod).
CORS: Configuração mais robusta para desenvolvimento local vs produção.
Novos CRUDs, Refatoração de Auth e Melhorias na API
Resumo: Este PR implementa um conjunto de novas tabelas e endpoints para suportar o cadastro de dados auxiliares (Cursos, Empresas, Anos Formatura, etc.) e refatora o fluxo de autenticação para ser mais simples e robusto. Também inclui correções críticas de tipagem no middleware e melhorias na documentação do Swagger.
Principais Alterações:
Novas Tabelas e CRUDs:
cursos, empresas, anos_formaturas, tipos_servicos, funcoes (com validação de duplicidade).
tipos_eventos com suporte a precificação dinâmica por função (precos_tipos_eventos).
Autenticação e Registro:
Registro simplificado: /auth/register agora aceita apenas {email, senha}, criando o usuário com role padrão profissional.
Correção de Bug Crítico: O middleware de autenticação agora converte corretamente o ID do usuário de UUID para string no contexto, corrigindo o erro 500 em rotas protegidas.
Implementação de rotas de refresh token e logout.
API & Documentação:
Melhoria no Swagger: Uso de structs nomeadas para limpar os exemplos (sem additionalProp1).
Segurança: Adicionada anotação BearerAuth em todas as rotas protegidas para funcionamento correto do botão "Authorize".
Respostas HTTP: Padronização de retornos, incluindo 409 Conflict para registros duplicados.
- Implementado CRUDs para: cursos, empresas, anos_formaturas, tipos_servicos, tipos_eventos
- Implementado lógica de precificação de eventos (precos_tipos_eventos)
- Refatorado a autenticação: Simplificar o payload de cadastro/login (somente e-mail/senha), função padrão 'profissional'
- Corrigido o middleware de autenticação: Resolvido a incompatibilidade de tipo UUID vs String (corrigir erro 500)
- Aprimorado o Swagger: Adicionado structs nomeados, validação de duplicatas (409 Conflict) e segurança BearerAuth
- Atualizar o esquema do banco de dados: Adicionar tabelas e restrições