Versão 1.1 — Atualizado em 14/03/2026
Documentação completa da arquitetura de backend do ecossistema Grupo CSV. Descreve todos os microserviços (Workers), banco de dados, armazenamento, rotas de API, fluxos de autenticação e tarefas agendadas que sustentam o Hub e seus portais.
Este documento serve como referência técnica definitiva para desenvolvedores, agentes de IA e qualquer pessoa que precise compreender o funcionamento interno do sistema.
O backend do Hub CSV é construído sobre a plataforma Cloudflare, utilizando uma arquitetura de microserviços implementada com Cloudflare Workers. Cada worker é um serviço independente, com responsabilidade única, que se comunica com os demais através do API Gateway.
┌─────────────────────────────────────────────────────────────────┐ │ CLIENTE (Navegador) │ │ │ │ hub.grupocsv.com ─── GitHub Pages (Frontend) │ │ ├── VitePress (Infra, Compass, Signal) │ │ ├── Portais HTML (Unimed, ICDS, AxiaCare, Thera, MedValor) │ │ ├── Admin (/admin/) │ │ ├── Deck (/deck/) │ │ └── Compliance (/compliance/) │ └──────────────────────────┬──────────────────────────────────────┘ │ Chamadas de API ▼ ┌─────────────────────────────────────────────────────────────────┐ │ API GATEWAY (csv-gateway) │ │ api.grupocsv.com — v1.6.0 │ │ │ │ Autenticação ─── Roteamento ─── Logging ─── CORS │ └──────┬──────┬──────┬──────┬──────┬──────┬──────┬───────────────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐ │ auth ││ data ││ ai ││ cron ││email ││webhk ││propostas │ │v3.0.0││ ││ ││v2.0 ││ ││ ││ │ └──┬───┘└──┬───┘└──────┘└──┬───┘└──────┘└──────┘└────┬─────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ ARMAZENAMENTO │ │ │ │ D1 Database (csv-hub) KV Store (csv-config) │ │ ├── users ├── Senhas de portais │ │ ├── user_tenants └── Configurações dinâmicas │ │ ├── pending_requests │ │ ├── auth_sessions R2 Storage (csv-propostas) │ │ ├── access_logs └── Propostas HTML/PDF │ │ ├── api_logs │ │ └── email_logs │ └─────────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────────┐ │ SERVICO INDEPENDENTE (fora do gateway) │ │ │ │ csv-mail v1.0.0 ─── mail-api.grupocsv.com │ │ Autenticação própria (Bearer API Key) │ │ Bindings: D1 (csv-hub), Resend │ └─────────────────────────────────────────────────────────────────┘
| Repositório | Conteúdo | Deploy |
|---|---|---|
grupocsv/hub | Frontend completo: VitePress, portais HTML, compliance, admin, deck | GitHub Pages |
grupocsv/backend | Workers Cloudflare: csv-auth, csv-gateway, csv-data, csv-email, csv-mail, csv-ai, csv-cron, csv-propostas, csv-webhook, thera-contact | Cloudflare Workers |
csv-gateway) O csv-gateway é o ponto de entrada para todas as chamadas de API, acessível em api.grupocsv.com. Recebe a requisição, valida a autenticação quando necessário, registra o log no D1 e encaminha (proxy) para o worker de destino.
| Prefixo | Worker de Destino | Acesso | Descrição |
|---|---|---|---|
/auth | csv-auth | Público | Login, verificação de token, solicitação de acesso, painel admin |
/thera/contact | thera-contact | Público | Formulário de contato do site Thera |
/webhook | csv-webhook | Público | Recebe webhooks de serviços externos |
/data | csv-data | Protegido | Consultas ao D1 e KV |
/ai | csv-ai | Protegido | Proxy para Cloudflare AI Gateway |
/cron | csv-cron | Protegido | Disparo manual de tarefas agendadas |
/email | csv-email | Protegido | Envio de e-mails transacionais via Resend |
/axiacare/propostas | csv-propostas | Protegido | Geração de propostas comerciais |
csv-mail opera fora do gateway, acessível diretamente em mail-api.grupocsv.com com autenticação própria via Bearer token (API key dedicada). Não consta na tabela acima por não utilizar o roteamento do csv-gateway. Rotas marcadas como Protegido exigem uma API Key, enviada no header X-API-Key ou como parâmetro de query ?key=. Rotas públicas são acessíveis sem autenticação. Todas as requisições são registradas na tabela api_logs do D1 com worker, método, path, status e tempo de resposta.
Cada worker é um microserviço independente com responsabilidade única. Todos rodam na edge da Cloudflare, garantindo latência mínima globalmente.
POST /login — Valida credenciais e retorna token de sessão (24h)GET /verify — Valida um token de sessão existentePOST /logout — Encerra uma sessão ativaPOST /request-access — Cria solicitação de acesso para portais de parceirosGET /admin/stats — Estatísticas do painel (usuários, solicitações, links)GET /admin/pending-requests — Lista solicitações pendentesPOST /admin/approve — Aprova solicitação e cria usuárioPOST /admin/reject — Rejeita solicitação de acessoGET /admin/users — Lista usuários aprovados com seus tenantsPOST /admin/revoke — Revoga acesso de um usuário a um tenantGET /admin/logs — Log de acessos externos (com JOIN de nome)GET /admin/passwords — Senhas dos portais de empresas (do KV)POST /admin/update-password — Atualiza senha de portal de empresaPOST /admin/revoke-public-link — Revoga link público (commit no GitHub)POST /admin/restore-public-link — Restaura link público revogadoPOST /admin/cleanup-sessions — Remove sessões expiradasPOST /deck/reset-pin — Envia PIN temporário por e-mailPOST /chat — Chat completion (compatível com OpenAI)POST /summarize — Resumo de texto (template pronto)POST /analyze — Análise de dados (template pronto)POST /draft-email — Rascunho de e-mail (template pronto)GET /models — Lista modelos disponíveisGET /usage — Estatísticas de usoHub CSV <hub@mail.grupocsv.com>. Guilherme Thome <guilherme@mail.grupocsv.com>. POST /send — Envio completo de e-mailPOST /send-template — Envio com template institucionalGET /status/:id — Consultar status via ResendGET /logs — Listar ultimos e-mails enviados (D1)GET /health — Health checkdataset-tea, feedback-proposta) possui destinos pré-configurados por segurança. propostas.axcare.com.br. thera.tech. Envia os dados por e-mail para contato@thera.tech via Resend. O Hub CSV possui três modelos de autenticação distintos, cada um adequado ao tipo de portal e público. Todos são gerenciados pelo worker csv-auth e pelo script frontend hub-auth.js.
O proprietário do sistema possui uma credencial mestra que concede acesso a todos os portais e ao painel administrativo. Ao fazer login com essa credencial em qualquer portal, o sistema reconhece automaticamente e concede acesso.
Portais: Unimed, Unihealth, ICDS.
hub.grupocsv.com/unimed/).hub-auth.js detecta ausência de token válido e exibe modal com abas "Login" e "Solicitar Acesso".Portais: AxiaCare, Thera, MedValor.
hub.grupocsv.com/axia/).hub-auth.js exibe modal com campo de senha (sem e-mail).portal_passwords do D1 (com fallback para valores padrão em memória).localStorage. Válido por 24 horas.As senhas dos portais de empresas podem ser alteradas em tempo real pelo Painel Admin, na aba "Senhas dos Portais CSV".
hub.grupocsv.com/deck/.localStorage./deck/reset-pin e força redefinição.csv-hub)Banco de dados SQL relacional (SQLite na edge). Principal fonte de verdade para dados estruturados.
csv-config) Armazenamento de chave-valor de baixa latência. Binding disponível nos workers csv-data e csv-cron para configurações dinâmicas. As senhas dos portais de empresas foram migradas para a tabela portal_passwords no D1, mas o KV permanece como recurso para futuras configurações que exijam leitura de altíssima velocidade.
csv-propostas) Armazenamento de objetos compatível com S3. Usado para guardar propostas comerciais geradas pelo worker csv-propostas. Os arquivos ficam acessíveis publicamente via propostas.axcare.com.br.
Acessível em hub.grupocsv.com/admin/, protegido por autenticação de admin. Permite gerenciar todo o sistema de autenticação e links públicos.
| Aba | Funcionalidade |
|---|---|
| Senhas dos Portais CSV | Visualizar e alterar as senhas fixas dos portais de empresas (AxiaCare, Thera, MedValor). Alterações entram em vigor imediatamente. |
| Usuários Externos | Aprovar/rejeitar solicitações de acesso. Listar usuários aprovados com seus portais vinculados. Revogar acesso. |
| Links Públicos | Listar páginas publicadas em /p/. Revogar ou restaurar links públicos (altera o registry.json via commit no GitHub). |
| Log de Acessos Externos | Histórico de logins em portais externos, ordenado do mais recente ao mais antigo. Exibe e-mail, nome, portal e data. |
O backend integra-se com serviços externos para funcionalidades específicas. Todas as chaves de acesso são armazenadas como Secrets nos Workers.
| Serviço | Uso | Workers que Utilizam |
|---|---|---|
| Resend | Envio de e-mails transacionais (notificações, relatórios, propostas, formulários de contato) | csv-auth, csv-cron, csv-email, csv-mail, csv-propostas, csv-webhook, thera-contact |
| Cloudflare AI Gateway | Proxy para modelos de IA (chat, resumo, análise) | csv-ai |
| GitHub API | Commits automáticos no repositório (revogação de links públicos) | csv-auth |
| Domínio | Uso Principal | Região |
|---|---|---|
mail.grupocsv.com | Backend do Hub CSV (notificações, relatórios, propostas) | sa-east-1 |
thera.tech | Formulário de contato do site Thera | sa-east-1 |
spectra.thera.tech | Spectra AI | sa-east-1 |
veritas.thera.tech | Veritas | sa-east-1 |
Todos os domínios são gerenciados via Cloudflare DNS. Os registros mais relevantes para a infraestrutura do Hub estão listados abaixo.
| Subdomínio | Tipo | Destino | Função |
|---|---|---|---|
hub.grupocsv.com | CNAME | grupocsv.github.io | Frontend do Hub (GitHub Pages) |
api.grupocsv.com | AAAA | 100:: | API Gateway (Worker csv-gateway) |
api.thera.tech | AAAA | 100:: | Worker thera-contact |
propostas.axcare.com.br | CNAME | public.r2.dev | R2 Bucket (propostas) |
mail-api.grupocsv.com | AAAA | 100:: | Worker csv-mail |
webhook.grupocsv.com | A | 192.0.2.1 | Worker csv-webhook |
O ecossistema utiliza 9 zonas DNS no Cloudflare: axcare.ai, axcare.app, axcare.com.br, grupocsv.com, guithome.com.br, medvalor.med.br, theramed.ai, thera.med.br e thera.tech. Todas utilizam Google Workspace para e-mail corporativo (MX records).
| Tópico | Detalhe |
|---|---|
| SPA Navigation | O VitePress intercepta cliques internos. Páginas HTML standalone precisam do atributo data-direct nos links para forçar navegação completa. |
| Convenção de Tenant | O csv-auth usa colunas tenant_id e user_email no D1 (não "portal" e "email"). Aliases são suportados (ex: axia mapeia para axiacare). |
| Notificações | E-mails de notificação de login e solicitações de acesso são enviados via Resend para contato@grupocsv.com. |
| CORS | Todos os workers incluem headers CORS permissivos (Access-Control-Allow-Origin: *) para permitir chamadas do frontend em GitHub Pages. |
| Logging | Todas as requisições que passam pelo gateway são registradas na tabela api_logs com worker, método, path, status HTTP e tempo de resposta em milissegundos. |
| Sessões | Tokens de sessão têm validade de 24 horas. A limpeza automática de sessões expiradas ocorre semanalmente (domingo 03:00 BRT). |
| Links Públicos | Páginas em /p/ são registradas no registry.json. A revogação/restauração é feita via commit automático no GitHub usando a API. |