- 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
4.5 KiB
Documentação do Projeto Photum - Sessão de Desenvolvimento
Esta documentação resume todo o trabalho realizado durante a sessão atual de desenvolvimento, focada na implementação do Backend e ajustes no Frontend para o sistema Photum.
1. Visão Geral
O objetivo principal foi fortalecer o backend em Go, implementar autenticação segura, e criar as estruturas para gerenciamento de FOT (Formandos, Organização, Turma) e Agenda de Eventos.
2. Implementações no Backend (Go + PostgreSQL)
2.1. Sistema de Autenticação e Usuários
- JWT & Refresh Tokens: Implementação de autenticação baseada em tokens JWT curta duração e Refresh Tokens seguros.
- Hierarquia de Permissões (RBAC): Definição de roles padronizadas: ROLES Backend (Strings no Banco de Dados):
admin ⮕ Mapeado para SUPERADMIN empresa ⮕ Mapeado para BUSINESS_OWNER cliente ⮕ Mapeado para EVENT_OWNER profissional ⮕ Mapeado para PHOTOGRAPHER
admin@photum.com -> SUPERADMIN empresa@photum.com -> BUSINESS_OWNER foto@photum.com -> PHOTOGRAPHER
- Fluxo de Aprovação:
- Usuários se registram com status
ativo=false. - Admin lista usuários pendentes (
/admin/users/pending). - Admin aprova e define a Role (
/admin/users/:id/approvee/admin/users/:id/role). - Bloqueio de login para usuários inativos.
- Usuários se registram com status
- Dados do Usuário: Adição de campos
Nome,TelefoneeEmpresano registro e listagens.
2.2. Tabelas Auxiliares (CRUDs)
Criadas tabelas, Services e Handlers para as entidades básicas do sistema:
cursosempresasanos_formaturastipos_eventos(incluindo tabela de preços por função)tipos_servicosfuncoes_profissionais
2.3. Módulo Cadastro FOT
Responsável por vincular Turmas a Empresas e Instituições.
- Tabela:
cadastro_fot(Campos:fot,empresa_id,curso_id,ano_formatura_id,instituicao,observacoes, etc.). - Backend:
- Endpoint
POST /api/cadastro-fot: Criação com verificação de FOT duplicado. - Endpoint
GET /api/cadastro-fot: Listagem com joins para trazer nomes de Empresa, Curso, etc.
- Endpoint
- Integração: Conectado ao
CourseManagement.tsxno frontend.
2.4. Módulo Agenda
Responsável pelo agendamento de eventos vinculados a um FOT.
- Tabela:
agendacriada com uma estrutura normalizada, mas com campos específicos de evento.- Vinculada a
cadastro_fotviafot_id. - Campos de dados do evento:
data_evento,local_evento,horario, etc. - Campos de quantitativos:
qtd_formandos,qtd_fotografos,qtd_recepcionistas, etc. - Campos de controle:
status_profissionais,foto_faltante,pre_venda, etc.
- Vinculada a
- Backend:
- Arquivos gerados via SQLC (
internal/db/generated/agenda.sql.go). - Service (
internal/agenda/service.go) e Handler (internal/agenda/handler.go) implementados. - Rotas registradas em
cmd/api/main.gosob/api/agenda.
- Arquivos gerados via SQLC (
2.5. Decisões Técnicas Backend
- Framework: Gin Gonic.
- Database: PostgreSQL com driver
pgx/v5. - Geração de Código: Utilização do
sqlcpara gerar código Go type-safe a partir de queries SQL puras. - Estrutura: Padrão
internal/domain(Service/Handler/Repository isolados).
3. Implementações no Frontend (React/Next.js)
3.1. Autenticação e Sessão
- AuthContext: Melhoria na persistência de sessão. O frontend valida o token ao carregar e mantêm o usuário logado.
- Logout: Implementada função de logout que chama o backend e limpa o estado local.
- UserApproval: Interface para aprovação de usuários pendentes, exibindo Nome, E-mail e Empresa.
3.2. Gerenciamento de FOT (CourseManagement.tsx)
- Listagem: Atualizada para consumir
/api/cadastro-fotem vez de dados mockados. - Formulário de Criação (
FotForm.tsx):- Modal para criar novo FOT.
- Dropdowns (Selects) conectados dinamicamente às APIs
/api/empresas,/api/cursos,/api/anos-formaturas. - Validação e envio dos dados para o backend.
3.3. API Service
apiService.ts: Centralização das chamadas HTTP. Adicionadas funções para buscar cursos, anos de formatura, criar FOT, etc.
4. Próximos Passos Sugeridos
- Frontend Agenda: Criar a interface para visualizar e editar a Agenda (
CalendarouList View), consumindo os endpoints/api/agendajá criados. - Validações Avançadas: Implementar regras de negócio mais complexas no backend (ex: conflito de horários).
- Relatórios: Gerar PDFs ou Excels baseados nos dados de FOT e Agenda.