- 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
- 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
- Adiciona coluna de Cidade com ordenação independente na tabela de eventos
- Implementa ordenação clicável em todas as colunas (nome, tipo, data, horário, cidade, local, status)
- Remove dependência de estado para filtro de cidade
- Adiciona exibição de curso/turma no modal de detalhes do evento
- Torna campo curso/turma obrigatório no formulário de solicitação de evento
- Remove campo de imagem de capa do formulário
- Corrige importação de getActiveCoursesByInstitutionId no Dashboard
- Renomear 'Equipe & Fotógrafos' para 'Equipe' no título e navbar
- Adicionar suporte para 3 tipos de profissionais: Fotógrafo, Cinegrafista, Recepcionista
- Implementar cards estatísticos separados por função profissional
- Adicionar filtros por função (Fotógrafos, Cinegrafistas, Recepcionistas)
- Adicionar filtros por status (Disponível, Em Evento, Inativo)
- Transformar cards em tabela responsiva com colunas: Nome, Função Profissional, Disponibilidade
- Expandir interface Professional com campos completos do Excel:
* Endereço completo (rua, número, complemento, bairro, cidade, UF)
* Dados bancários (banco, agência, conta/pix, tipo cartão, titular)
* Recursos (carro disponível, possui estúdio, quantidade)
* Sistema de avaliações detalhado (6 critérios + média)
* Valores (tabela free, extra no cachê)
* Observações
- Redesenhar modal 'Adicionar Profissional' com formulário extenso organizado em seções
- Atualizar modal de detalhes com todas as novas informações
- Adicionar ícones específicos por função (Camera, Video, UserCheck)
- Remover fotos da tabela mantendo apenas informações essenciais
- Adicionada interface Course em types.ts
- Criado CourseForm para cadastro/edição de turmas
- Implementada página CourseManagement com tabelas Excel-like
- Adicionadas funções CRUD de cursos no DataContext
- Integrado dropdown de cursos no EventForm baseado na instituição
- Adicionada rota 'courses' no App.tsx
- Link 'Gestão de Cursos' inserido no menu principal após 'Equipe & Fotógrafos'
- Removido 'Configurações' do menu principal (mantido apenas no dropdown do avatar)
- Implementado comportamento de toggle para seleção de universidades
- Sistema restrito a SUPERADMIN e BUSINESS_OWNER
- Adiciona campo de número de pessoas com validação numérica
- Atualiza tipos de eventos para eventos universitários (formatura, colação, etc)
- Substitui horário único por horários de início e término obrigatórios
- Adiciona campo de curso relacionado ao evento
- Reorganiza ordem dos campos no formulário de instituição (CEP primeiro)
- Atualiza coordenadas padrão do mapa para Americana-SP
- Melhora layout do mapa: cards de coordenadas e instruções abaixo do mapa