- Adiciona role 'agenda_viewer' para profissionais visualizarem apenas suas agendas
- Implementa middleware de autorização baseado em roles
- Adiciona validação de permissões nos endpoints de agenda
- Melhora exibição de dados financeiros e logísticos
- Atualiza componentes frontend para melhor UX
- Adiciona documentação sobre o papel de visualização de agenda
- Backend:
- Adicionado endpoint para extrato financeiro do profissional (/meus-pagamentos).
- Atualizada query SQL para incluir nome da empresa e curso nos detalhes da transação.
- Adicionado retorno de valores (Free, Extra, Descrição) na API.
- Frontend:
- Nova página "Meus Pagamentos" com modal de detalhes da transação.
- Removido componente antigo PhotographerFinance.
- Ajustado filtro de motoristas na Logística para exibir apenas profissionais atribuídos e com carro.
- Corrigida exibição da função do profissional na Escala (mostra a função atribuída no evento, ex: Cinegrafista).
- Melhoria no botão de voltar na tela de detalhes do evento.
- Implementa envio de notificação WhatsApp ao aprovar evento ("Confirmado"), incluindo detalhes de logística (carro, motorista, passageiros) e endereço formatado.
- Adiciona coluna `funcao_id` em `agenda_profissionais` para distinguir a função específica do profissional no evento.
- Corrige bug de contagem duplicada na tabela de eventos para profissionais com múltiplas funções.
- Corrige validação ao aceitar convite para checar lotação apenas da função designada.
- Adiciona exibição da função (ex: Fotógrafo, Cinegrafista) na lista lateral do painel.
Este commit introduz o módulo financeiro completo e refatora o sistema de profissionais para suportar múltiplas funções, corrigindo a contabilização e validação de equipes.
Principais alterações:
- **Módulo Financeiro:**
- Criação da tabela `financial_transactions` e queries associadas.
- Implementação do backend (Handler/Service) para gerenciar transações.
- Nova página [Finance.tsx](cci:7://file:///c:/Projetos/photum/frontend/pages/Finance.tsx:0:0-0:0) com listagem, edição, filtros avançados e agrupamento por FOT.
- Correção na busca de FOTs e formatação de datas.
- **Gestão de Equipe e Profissionais:**
- Refatoração para suportar múltiplas funções por profissional (Backend & Frontend).
- Atualização do [Dashboard](cci:1://file:///c:/Projetos/photum/frontend/pages/Dashboard.tsx:31:0-1663:2) e [EventTable](cci:1://file:///c:/Projetos/photum/frontend/components/EventTable.tsx:28:0-659:2) para contabilizar corretamente profissionais (Fotografo, Cinegrafista, Recepcionista) verificando a lista de funções.
- Implementação de validação de cota no aceite de convites (bloqueia se a equipe da função específica já estiver completa).
- Ajuste visual nos indicadores de "Equipe Completa" e contadores de faltantes na listagem de eventos.
- **Geral:**
- Atualização da documentação Swagger.
- Ajustes de tipagem e migrações de banco de dados.
- Adicionar restrições de exclusão de FOT quando há eventos associados
- Implementar tooltips para motivos de recusa de eventos por fotógrafos
- Filtrar eventos recusados das listas de fotógrafos
- Adicionar sistema de filtros avançados no modal de gerenciar equipe
- Implementar campos completos de gestão de equipe (fotógrafos, recepcionistas, cinegrafistas, estúdios, pontos de foto, pontos decorados, pontos LED)
- Adicionar colunas de gestão na tabela principal com cálculos automáticos de profissionais faltantes
- Implementar controle de visibilidade da seção de gestão apenas para empresas
- Adicionar status visual "Profissionais OK" com indicadores de completude
- Implementar sistema de cálculo em tempo real de equipe necessária vs confirmada
- Adicionar validações condicionais baseadas no tipo de usuário
Backend:
- Corrigido mapeamento de email na listagem e busca por ID de profissionais. Agora o sistema utiliza o email do usuário vinculado (`usuario_email`) como fallback caso o email do perfil profissional esteja vazio.
Frontend:
- EventScheduler: Implementado filtro estrito para exibir apenas profissionais que foram explicitamente adicionados à equipe do evento ("Gerenciar Equipe"), prevenindo escalações indevidas.
- EventScheduler: Adicionada validação para ocultar cargos administrativos sem função operacional definida.
- ProfessionalDetailsModal: Corrigida a lógica de exibição do avatar para suportar a propriedade `avatar_url` (padrão atual do backend), resolvendo o problema de imagens quebradas ou ícones genéricos.
Implementa validação de horários para evitar conflitos no aceite de eventos, correções na sincronização de dados da agenda e melhorias na interface de gestão de equipe.
Backend:
- handler.go: Correção no retorno do endpoint [UpdateAssignmentStatus](cci:1://file:///c:/Projetos/photum/backend/internal/agenda/handler.go:279:0-313:1) para enviar JSON válido e evitar erros no frontend.
- service.go: Implementação da lógica de validação de conflitos antes de aceitar um evento.
- agenda.sql: Nova query `CheckProfessionalBusyDate` para verificação de sobreposição de horários.
Frontend:
- Dashboard.tsx: Adição de tooltip e texto para exibir o "Motivo da Rejeição" na gestão de equipe (Desktop/Mobile).
- EventScheduler.tsx: Filtro para excluir profissionais com status 'REJEITADO' e correção na label de 'Pendente'.
- EventDetails.tsx: Refatoração para usar estado global ([useData](cci:1://file:///c:/Projetos/photum/frontend/contexts/DataContext.tsx:1156:0-1160:2)), garantindo atualização imediata de datas e locais.
- DataContext.tsx: Mapeamento do campo `local_evento` e melhoria no tratamento de erro otimista.
- Ajustes gerais em ProfessionalDetailsModal, Login e correções de tipos.
Implementa validação de horários para evitar conflitos no aceite de eventos, correções na sincronização de dados da agenda e melhorias na interface de gestão de equipe.
Backend:
- handler.go: Correção no retorno do endpoint [UpdateAssignmentStatus](cci:1://file:///c:/Projetos/photum/backend/internal/agenda/handler.go:279:0-313:1) para enviar JSON válido e evitar erros no frontend.
- service.go: Implementação da lógica de validação de conflitos antes de aceitar um evento.
- agenda.sql: Nova query `CheckProfessionalBusyDate` para verificação de sobreposição de horários.
Frontend:
- Dashboard.tsx: Adição de tooltip e texto para exibir o "Motivo da Rejeição" na gestão de equipe (Desktop/Mobile).
- EventScheduler.tsx: Filtro para excluir profissionais com status 'REJEITADO' e correção na label de 'Pendente'.
- EventDetails.tsx: Refatoração para usar estado global ([useData](cci:1://file:///c:/Projetos/photum/frontend/contexts/DataContext.tsx:1156:0-1160:2)), garantindo atualização imediata de datas e locais.
- DataContext.tsx: Mapeamento do campo `local_evento` e melhoria no tratamento de erro otimista.
- Ajustes gerais em ProfessionalDetailsModal, Login e correções de tipos.
feat(ops): implementa modulo operacional completo (escala, logistica, equipe)
- Backend: Migrations para tabelas 'escalas' e 'logistica' (transporte)
- Backend: Handlers e Services completos para gestão de escalas e logística
- Backend: Suporte a auth vinculado a perfil profissional
- Frontend: Nova página de Detalhes Operacionais (/agenda/:id)
- Frontend: Componente EventScheduler com verificação robusta de conflitos
- Frontend: Componente EventLogistics para gestão de motoristas e caronas
- Frontend: Modal de Detalhes de Profissional unificado (Admin + Self-view)
- Frontend: Dashboard com modal de gestão de equipe e filtros avançados
- Fix: Correção crítica de timezone (UTC) em horários de agendamento
- Fix: Tratamento de URLs no campo de local do evento
- Fix: Filtros de profissional com carro na logística
núcleo operacional da plataforma, permitindo o fluxo completo de agendamento e logística de eventos.
## Principais Implementações
### 1. Escala e Agendamento ([EventScheduler](cci:1://file:///c:/Projetos/photum/frontend/components/EventScheduler.tsx:21:0-276:2))
- Interface para alocação de profissionais em horários específicos.
- **Sistema Anti-Conflito**: Bloqueia alocação de profissionais já ocupados em outros eventos no mesmo dia/horário.
- Visualização de status (Confirmado/Pendente/Recusado).
### 2. Logística ([EventLogistics](cci:1://file:///c:/Projetos/photum/frontend/components/EventLogistics.tsx:22:0-209:2))
- Gestão de transporte e caronas.
- Filtro inteligente: Apenas profissionais com `carro_disponivel` aparecem como opções de Motorista.
### 3. Gestão de Equipe e Detalhes
- Modal unificado de detalhes do profissional, acessível via Painel e Escala.
- **Self-View**: Profissionais podem visualizar seus próprios dados completos (incluindo financeiros e performance).
- Gestores visualizam dados de todos.
### 4. Melhorias Técnicas e Fixes
- **Timezone**: Correção definitiva para armazenamento de horários (conversão Local -> UTC correta).
- **UX**:
- Links de mapa detectados automaticamente no campo 'Local'.
- Dropdowns com informações de função (e.g. "João - Fotógrafo").
- Feedback visual de status de conflito.
- Backend: Migrations para tabelas 'escalas' e 'logistica' (transporte)
- Backend: Handlers e Services completos para gestão de escalas e logística
- Backend: Suporte a auth vinculado a perfil profissional
- Frontend: Nova página de Detalhes Operacionais (/agenda/:id)
- Frontend: Componente EventScheduler com verificação robusta de conflitos
- Frontend: Componente EventLogistics para gestão de motoristas e caronas
- Frontend: Modal de Detalhes de Profissional unificado (Admin + Self-view)
- Frontend: Dashboard com modal de gestão de equipe e filtros avançados
- Fix: Correção crítica de timezone (UTC) em horários de agendamento
- Fix: Tratamento de URLs no campo de local do evento
- Fix: Filtros de profissional com carro na logística
feat(team): fluxo completo de cadastro de equipe com senha, correções de vínculo e avatar
- Frontend: Adiciona campos de senha e visibilidade na tela de Equipe.
- Frontend: Implementa criação de usuário prévia ao cadastro do profissional.
- Backend (Auth): Remove criação duplicada de perfil e ativa usuários automaticamente.
- Backend (Auth): Inclui dados do profissional (avatar) na resposta do endpoint /me.
- Backend (Profissionais): Corrige chave de contexto ('role') para permitir vínculo correto de usuário.
- Backend (Profissionais): Sincroniza exclusão para remover conta de usuário ao deletar profissional.
- Docs: Atualização dos arquivos Swagger.
- Frontend: Adiciona campos de senha e visibilidade na tela de Equipe.
- Frontend: Implementa criação de usuário prévia ao cadastro do profissional.
- Backend (Auth): Remove criação duplicada de perfil e ativa usuários automaticamente.
- Backend (Auth): Inclui dados do profissional (avatar) na resposta do endpoint /me.
- Backend (Profissionais): Corrige chave de contexto ('role') para permitir vínculo correto de usuário.
- Backend (Profissionais): Sincroniza exclusão para remover conta de usuário ao deletar profissional.
- Docs: Atualização dos arquivos Swagger.
feat: aprimora responsividade mobile, form de eventos e persistência de dados
- Frontend:
- Implementa visualização em cards mobile para lista de Eventos (/painel), Gestão de Cursos (/cursos) e modal de Equipe.
- Corrige rolagem e layout do modal de detalhes do profissional em telas pequenas.
- Unifica seleção de turma (Curso/Inst/Ano) no formulário de eventos para simplificar UX.
- Adiciona botão "Voltar" no formulário de eventos.
- Adiciona integração de busca de CEP e validação de "Qtd Estúdios".
- Ajusta inputs de avaliação (estrelas) e exibição de disponibilidade de horário.
- Atualiza interfaces (types.ts) para incluir campos novos (cep, email no profissional).
- Backend:
- Adiciona persistência do campo "email" na tabela de profissionais.
- Corrige bug de persistência nula no campo "media" (avaliação).
- Atualiza queries SQL e gera novos modelos (sqlc) para refletir mudanças no schema.
- Atualiza documentação Swagger.
- Frontend:
- Implementa visualização em cards mobile para lista de Eventos (/painel), Gestão de Cursos (/cursos) e modal de Equipe.
- Corrige rolagem e layout do modal de detalhes do profissional em telas pequenas.
- Unifica seleção de turma (Curso/Inst/Ano) no formulário de eventos para simplificar UX.
- Adiciona botão "Voltar" no formulário de eventos.
- Adiciona integração de busca de CEP e validação de "Qtd Estúdios".
- Ajusta inputs de avaliação (estrelas) e exibição de disponibilidade de horário.
- Atualiza interfaces (types.ts) para incluir campos novos (cep, email no profissional).
- Backend:
- Adiciona persistência do campo "email" na tabela de profissionais.
- Corrige bug de persistência nula no campo "media" (avaliação).
- Atualiza queries SQL e gera novos modelos (sqlc) para refletir mudanças no schema.
- Atualiza documentação Swagger.
feat(profissionais): melhorar a visualização de detalhes e persistência dos profissionais - Adiciona a coluna `email` ao banco de dados para corrigir a persistência do e-mail de contato. - Atualiza o `Team.tsx` para exibir todos os campos do profissional no modal de detalhes (Dados Financeiros, Detalhamento de Avaliações). - Corrige o cálculo e a persistência de `media` (ajuste para valor nulo). - Implementa integração com CEP para preenchimento automático de endereço. - Adiciona validações para valores negativos e corrige problemas de layout.
- Adiciona a coluna `email` ao banco de dados para corrigir a persistência do e-mail de contato.
- Atualiza o `Team.tsx` para exibir todos os campos do profissional no modal de detalhes (Dados Financeiros, Detalhamento de Avaliações).
- Corrige o cálculo e a persistência de `media` (ajuste para valor nulo).
- Implementa integração com CEP para preenchimento automático de endereço.
- Adiciona validações para valores negativos e corrige problemas de layout.
- 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 tipo profissional ao schema e corrige avatar
- 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
----------------------------------------------------------------------------------------------------------------------------------------
implementacao/upload-avatar-e-tipo-profissional
implementa o fluxo completo de upload de avatar para profissionais, corrige a exibição de imagens do S3 (Civo) e adiciona a persistência do "Tipo de Profissional" na tabela de usuários para melhor identificação, mantendo a role do sistema inalterada.
Alterações Principais:
🖼️ Frontend
AuthContext: Atualizado para enviar tipo_profissional durante o registro.
ProfessionalForm: Agora captura o nome da função selecionada (ex: "Fotógrafo") e envia para o registro.
Navbar: Adicionados handlers onError para as imagens de avatar, garantindo fallback elegante para iniciais caso a imagem falhe.
Upload: Implementado upload direto para S3 via URL pré-assinada (Presigned URL).
⚙️ Backend
Banco de Dados:
Adicionada coluna tipo_profissional na tabela usuarios.
Atualizadas queries SQLC para leitura/escrita deste novo campo.
Auth Service:
Handler atualizado para aceitar tipo_profissional no payload.
Service atualizado para persistir o dado no banco.
S3 Storage:
Ajustado para usar PathStyle (compatibilidade com Civo).
Removida ACL public-read (causava erro 403) e substituída por script de política de bucket.
🛠️ Ferramentas
Criado script
cmd/tools/set_bucket_public.go
para configurar programaticamente a política de acesso público do bucket.
✅ Checklist de Verificação
Upload de avatar funcionando.
Imagem carrega corretamente no cabeçalho (após correção da política do bucket).
Tipo do profissional é salvo corretamente no banco (SELECT email, tipo_profissional FROM usuarios;).
Cadastro segue funcionando normalmente para outros perfis.
- 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