Visão geral
Vendas, pedidos de acesso e o custo de manter tudo funcionando.
Gastos e serviços
Valores originais por moeda. Cobertura incompleta aparece como incompleta.
No celular, deslize a tabela para ver as outras colunas. O nome do serviço permanece visível.
| Serviço / escopo | Valor de exemplo | Qualidade / cobertura | Coleta proposta | Detalhes |
|---|
Sem total em reais misturando USD e BRL. Conversão opcional exige cotação, data, fonte e identificação de estimativa.
Atualização contínua, com origem visível
Recomendação: começar com a visão geral e Cloudflare + Stripe + Resend. Domínios e custos compartilhados entram por cadastro; GitHub vem depois da validação da conta.
O que existe hoje
Confirmado no código em /home/goat/cognixws-site: React + TypeScript, Hono, TanStack Query, D1 compartilhado, Cloudflare Access com validação JWT no Worker. O admin abre em Acesso e possui Vendas, Preços, Cupons, Testes A/B, Pedidos de CLI e Serviços. A aba Serviços só contém links; não consulta gastos.
Fontes locais: apps/admin/src/App.tsx, src/lib/services.ts, worker/app.ts, worker/index.ts, wrangler.jsonc, docs/infrastructure.md e D-023. A infraestrutura registra Workers Paid, Resend Free e Workspace como domínio alias. Mercado Pago está aguardando o contador. Não consultei registros pessoais, segredos ou faturas das contas.
A chave Stripe do admin serve à criação de preços e cupons; não pressupor acesso ao saldo. O cron atual executa promoções a cada minuto e pode despachar coletas quando vencidas, preservando essa função.
Viabilidade por fornecedor
| Fornecedor | Integração e limite | Ritmo recomendado |
|---|---|---|
| Cloudflare | GET /accounts/{id}/billable-usage, token Billing Read. Uso e custo por produto / período; dados atualizados diariamente. É custo reportado, sujeito a reconciliação com a fatura. GraphQL separado para Workers, D1 e Durable Objects permite estimativa recente, após validar datasets e escopos. Base, franquias, logs e excedentes têm de seguir o plano real. Turnstile, Access e analytics permanecem no inventário mesmo quando incluídos. | Métricas: 5–15 min. Cobrança: diária. |
| Stripe | GET /v1/balance_transactions: amount, fee, net, moeda e tipo. Associar transações às vendas Founding via IDs; não importar todo o negócio CognixSE como custo WS. Webhook sinaliza venda, não garante taxa pronta. Fazer consulta posterior, paginação e reconciliação. Separar taxas, reembolsos, disputas e repasses; repasse não é nova despesa. | Evento + consulta após disponibilidade; fallback 15 min; reconciliação diária. |
| Resend | API GET /usage, anunciada em 01/10/2026, retorna uso e limites da conta, não fatura. Contar envios WS pelos registros locais e webhooks, e exibir uso da equipe à parte. Plano e eventual custo pago entram por contrato/fatura até existir fonte financeira validada. | 5–15 min para quotas; eventos de envio para operação. |
| GitHub | Billing usage API disponível para contas na plataforma enhanced billing; token com Plan read. O repo pertence a cfpperche, não à org cognixws: consultar o nível correto e filtrar repositoryName. Não confundir Workers Builds Cloudflare com Actions GitHub. Assinatura pessoal não é automaticamente despesa deste produto. | Diária no MVP; medir atraso do dado. |
| Namecheap | API getList retorna vencimento; getPricing com RENEW retorna preço indicativo, não valor de uma renovação já paga. Exige elegibilidade e IPv4 na lista de permissão; saída estável de Worker não deve ser presumida. MVP: valor pago e vencimento cadastrados, com comprovante. API opcional depois, sem criar proxy pago antes de medir benefício. | Cadastro / conferência diária; alertas 30, 15 e 7 dias. |
| Google Workspace | Alias cognix.ws não indica uma licença adicional. Não encontrei API pública de faturamento direto adequada ao cliente final; a Reseller API exige relação de revenda. Registrar contrato, ciclo, licenças e regra de rateio aprovada. Custo incremental do alias e parcela do custo corporativo são conceitos distintos. | Mensal / alteração de contrato. |
| Mercado Pago | Pendente no admin. Quando ativado: webhook + leitura de pagamento, taxas efetivas e líquido, filtrando encargos de responsabilidade do vendedor. Não integrar ou atribuir R$ 0 enquanto estiver pendente. | Fase posterior à ativação pelo dono. |
A dashboard inicial
Adicionar #visao-geral como entrada padrão, preservando links das abas existentes. Quatro indicadores: vendas brutas por moeda, valor após taxas e reembolsos, custos operacionais com cobertura e novos pedidos aguardando ação. Abaixo: evolução de vendas, lista de pendências e custos por fornecedor. Os atalhos levam às abas existentes.
Usar contagens agregadas do D1, sem transferir listas de pessoas só para produzir KPIs. Pedidos por status e envios de boas-vindas já vêm dos dados existentes. Visitas e conversão global aguardam uma fonte de analytics validada; a amostra consentida do A/B não representa todos os visitantes. Founding é compra única: não exibir MRR nem “lucro” sobre cobertura incompleta.
Em Serviços, manter links diretos e adicionar consumo, custo, quota, origem, atualização e escopo. Exibir “incluído no plano”, “estimado”, “reportado”, “manual”, “sem acesso” ou “pendente”, nunca substituir desconhecido por zero.
Arquitetura proposta
APIs / webhooks → conectores no Worker → snapshots no D1 → API agregada protegida → dashboard.
Reusar o Worker do admin e o cron existente. Conectores independentes, execução quando vencida, bloqueio de concorrência e backoff para 429/5xx. Uma falha não impede as demais fontes. Segredos ficam no Worker; chaves de leitura separadas quando o fornecedor permitir. Nenhum token ou chamada direta a fornecedor no navegador.
Propor tabelas cost_sources, cost_snapshots, cost_entries, cost_allocations e cost_alerts. Persistir moeda e unidade monetária exata; provider, account, resource, período/ciclo, reported_at, fetched_at, tipo de custo, qualidade e erro. Valores estimados e reportados são versões da mesma cobertura: o reportado substitui a estimativa; não somar ambos. Paginação e chave idempotente por evento / transação / linha e período; não somar cumulativos e diários.
API proposta: GET /api/overview, GET /api/costs, POST /api/costs/refresh e cadastro manual autenticado, validado e auditado. TanStack Query atualiza os snapshots a cada 60 s apenas com a página visível; isso não dispara coleta dos fornecedores. Atualizar respeita cooldown, apresenta andamento e conserva os últimos dados.
Filtros de período precisam respeitar o ciclo de cada fornecedor; dados exclusivamente mensais não podem ser apresentados como gasto semanal. Cloudflare base compartilhada: mostrar total da conta e atribuição por recurso/rateio explícito. Créditos e franquias compartilhadas exigem política antes de calcular custo WS. Crescimento linear é previsão, não cobrança; apenas após histórico suficiente, com dias restantes e base contratual separada.
Registrar decisões de persistência, coleta e rateio em docs/decisions.md antes da implementação, e atualizar README, infraestrutura, changelog e backlog conforme o contrato deste repositório. Nenhuma dependência nova é necessária para o MVP.
Condições que mudam o resultado
| Condição | Comportamento / teste de aceite |
|---|---|
| Fonte atual e com cobertura | Valor + moeda + período + origem + escopo visíveis. |
| Timeout, 429 ou 5xx com snapshot anterior | Conservar dado, marcar atraso, informar falha e oferecer retry com cooldown. |
| 403 / token ausente e sem histórico | “Sem acesso” + instrução de configuração; excluir do total e apontar cobertura incompleta. |
| Serviço pendente ou incluído em plano | Estado explícito; zero somente quando validado pela fonte ou contrato. |
| Mesma venda / cobrança entregue de novo | Idempotência: uma entrada; backfill paginado não duplica. |
| Estimativa e cobrança da mesma cobertura | Reportado substitui estimado; histórico preservado. |
| Conta compartilhada / rateio ausente | Total da conta separado; custo WS “não atribuído”. |
| Moedas diferentes, reembolso ou repasse | Totais separados; net e fee reconciliados; refund não assume devolução da taxa; payout não conta como custo. |
| Período sem granularidade suficiente | Não fabricar valor diário; informar ciclo disponível. |
| Alerta em limiar e repetição de coleta | Um alerta por fonte/ciclo/limiar; orçamento só avisa, não promete bloquear cobrança. |
Estas são condições de aceite propostas; não são testes de integrações já executados.
Entrega em três etapas
Visão geral + inventário
KPIs D1, cadastro de custos fixos, ciclos, cobertura, estados vazios e acesso aos serviços. Estimativa de esforço: 2–3 dias úteis.
Cloudflare, Stripe e Resend
Coleta, quotas, reconciliação, snapshots e alertas no admin. 3–5 dias úteis após credenciais e amostras validadas.
Rateio e histórico
GitHub, rateios aprovados, previsão, fechamento e exportação. 2–4 dias úteis; Namecheap API e Mercado Pago ficam opcionais.
Esforço preliminar de engenharia, não prazo contratado. Validar acessos antes de fechar cronograma; alertas por e-mail só numa etapa explicitamente autorizada.
O que validar antes de conectar
Amostras reais sem dados pessoais: Cloudflare Billing Read e GraphQL; Stripe balance transactions e vínculo com Founding; Resend /usage com a chave atual; GitHub billing do usuário. Confirmar plano, descontos, faturas, períodos, custos de domínio e Workspace. O inventário desta proposta cobre serviços do site/admin; assinaturas de IA dos agentes não foram identificadas como custos desse backend.
O dono define orçamento por moeda, método de rateio da base Cloudflare/Workspace, necessidade de conversão e canal de alertas. Até lá, totais de conta e custos diretos continuam separados. Custo da própria coleta entra no consumo Cloudflare; medir um dia de execução antes de prometer custo adicional zero.
Fontes primárias consultadas
Consulta em 2026-10-03. Disponibilidade documentada; não houve aceitação autenticada nas contas.
- Cloudflare — Billable Usage API, atualização diária e Billing Read
- Cloudflare — preços e dimensões de uso
- Stripe — balance transaction, taxa e líquido
- Resend — Account Usage API, 01/10/2026
- GitHub — billing por usuário e requisitos
- Namecheap — acesso e lista de IPv4 · vencimento · preço de renovação
- Google — escopo da Reseller API
- Mercado Pago — campos de taxas e líquido de pagamentos