Pular para o conteúdo principal

Inventário Técnico do Repositório

Introdução ao documento

Este documento consolida o inventário técnico do dhedalos-api-onboarding-express com base exclusiva em código, configuração versionada e workflows existentes. Evidência: codex-promts.md:82 Evidência: src/server.ts:1

Versionamento

  • Versão do documento: 2.0.0.
  • Última atualização: 2026-03-18.
  • Escopo da análise: branch local atual. Evidência: codex-promts.md:16

Referencial teórico

  • Padrão de inventário técnico do docs-hub para camada micro.
  • Padrão C4 como base de organização arquitetural. Evidência: /home/hilton/Documentos/weef/docs-hub/docs/standard/micro-repo.md:1 Evidência: /home/hilton/Documentos/weef/docs-hub/docs/standard/micro-repo.md:20

Propósito do repo

Serviço backend em Node.js/Express para processamento de WhatsApp Flows, OTP, webhook da Meta e envio de templates com integrações de matrícula/dados em WordPress e Sebrae. Evidência: package.json:4 Evidência: src/server.ts:102 Evidência: src/routes/otp.ts:9 Evidência: src/routes/webhook.ts:10 Evidência: src/features/api/wp/getCourseDetails.ts:13 Evidência: src/features/api/sebrae/getPersonCompanies.ts:12

Entrypoints

  1. Entrypoint de aplicação HTTP em src/server.ts, com app.listen(PORT). Evidência: src/server.ts:36 Evidência: src/server.ts:283

  2. Entrypoints HTTP montados no bootstrap:

  • POST / (endpoint de WhatsApp Flow criptografado).
  • /otp, /sendtemplate, /sendreminder, /webhook.
  • GET /api/liveness, GET /api/readiness, GET /api/status, GET /. Evidência: src/server.ts:102 Evidência: src/server.ts:162 Evidência: src/server.ts:168 Evidência: src/server.ts:243
  1. Entrypoint operacional de container via Dockerfile (CMD ["npm", "start"]). Evidência: Dockerfile:50

Principais pastas e responsabilidades

  • src/routes: controladores HTTP para OTP, templates e webhook. Evidência: src/server.ts:7 Evidência: src/server.ts:9

  • src/flows: regras de orquestração de tela para fluxos personal e business. Evidência: src/server.ts:14 Evidência: src/server.ts:15

  • src/features/api: clientes para integrações externas (WordPress, Sebrae, WhatsApp, ViaCEP). Evidência: src/features/api/wp/index.ts:1 Evidência: src/features/api/sebrae/config.ts:3 Evidência: src/features/api/viacep/getAdressByCep.ts:11 Evidência: src/features/api/whatsapp/sendFlowTemplate.ts:10

  • src/models, src/services, src/workers: persistência e processamento assíncrono da fila de envio de link de grupo. Evidência: src/models/groupLinkDispatchQueue.ts:60 Evidência: src/services/groupLinkDispatchQueue.ts:24 Evidência: src/workers/groupLinkDispatchWorker.ts:171

  • helm e kubernetes: manifests de deploy, probes e valores por ambiente. Evidência: helm/templates/deployment.yaml:53 Evidência: kubernetes/oke-we-002/piloto-dhedalos-ecosystem/values.yaml:1

  • .github/workflows: pipeline de build/deploy e governança de docs. Evidência: .github/workflows/ci-cd-pipeline.yml:1 Evidência: .github/workflows/docs-governance.yml:1

Integrações externas (URL, SDK, credenciais por env)

  • Meta WhatsApp Cloud API: https://graph.facebook.com/v20.0/.../messages, autenticada por WHATSAPP_API_TOKEN. Evidência: src/routes/webhook.ts:29 Evidência: src/features/api/whatsapp/sendOtpCode.ts:12 Evidência: src/features/api/whatsapp/sendFlowTemplate.ts:4

  • WordPress backend: base em WP_BASE_URL, autenticação Authorization: Svc <WP_API_TOKEN>. Evidência: src/features/api/wp/config.ts:3 Evidência: src/features/api/wp/getCourseDetails.ts:13 Evidência: src/features/api/wp/wpPatchProfile.ts:30

  • API Sebrae: base em SEBRAE_BASE_URL, usada para empresas/endereço/presença. Evidência: src/features/api/sebrae/config.ts:3 Evidência: src/features/api/sebrae/getPersonCompanies.ts:12 Evidência: src/features/api/sebrae/updatePersonAttendance.ts:16

  • ViaCEP: lookup de CEP para autopreenchimento de endereço. Evidência: src/features/api/viacep/getAdressByCep.ts:11

Jobs / cron / queues / workers

  • Worker interno de fila iniciado no bootstrap com startGroupLinkDispatchWorker(). Evidência: src/server.ts:82

  • O worker faz polling periódico (setInterval), processa batch e aplica retry com backoff linear limitado. Evidência: src/workers/groupLinkDispatchWorker.ts:13 Evidência: src/workers/groupLinkDispatchWorker.ts:157 Evidência: src/workers/groupLinkDispatchWorker.ts:136

  • Controle de ciclo de vida: parada em SIGINT e SIGTERM. Evidência: src/server.ts:28 Evidência: src/server.ts:32

Storage / caches

  • Storage principal: SQLite via Sequelize, por padrão em database.sqlite. Evidência: src/config/database.ts:5 Evidência: src/config/database.ts:8

  • Modelos persistidos no código: Otp e GroupLinkDispatchQueue. Evidência: src/models/otp.ts:18 Evidência: src/models/groupLinkDispatchQueue.ts:60

  • Cache distribuído (Redis/Memcached) não foi identificado no runtime TypeScript deste serviço. Evidência: package.json:14 Evidência: src/config/database.ts:8

Variáveis de ambiente encontradas

Declaradas em .env.example

  • PASSPHRASE, PRIVATE_KEY, SERVICE_TOKEN, WHATSAPP_API_TOKEN, WHATSAPP_PHONE_ID, DEBUG, WP_BASE_URL, WP_API_TOKEN, SEBRAE_BASE_URL, FEATURE_SEBRAE_INTEGRATION, FEATURE_SEBRAE_ADDRESS_INTEGRATION, GROUP_LINK_SEND_DELAY_MS, GROUP_LINK_MAX_ATTEMPTS, GROUP_LINK_WORKER_POLL_INTERVAL_MS, GROUP_LINK_WORKER_BATCH_SIZE, GROUP_LINK_WORKER_RETRY_BASE_DELAY_MS. Evidência: .env.example:1 Evidência: .env.example:25

Lidas no código (incluindo não declaradas no exemplo)

  • APP_SECRET, PORT, NODE_ENV, DATABASE_PATH, WEBHOOK_VERIFY_TOKEN. Evidência: src/server.ts:100 Evidência: src/server.ts:188 Evidência: src/config/database.ts:5 Evidência: src/routes/webhook.ts:89

Comandos de run/test/build

  • npm run dev: execução local com ts-node e watch.

  • npm run build: compilação TypeScript.

  • npm run start: execução de dist/server.js.

  • Build de imagem e deploy Helm via workflow CI/CD. Evidência: package.json:8 Evidência: package.json:9 Evidência: package.json:10 Evidência: .github/workflows/ci-cd-pipeline.yml:41 Evidência: .github/workflows/ci-cd-pipeline.yml:71

  • Testes automatizados: não há script test no package.json. Evidência: package.json:7

Achados x Evidências

AchadoEvidência
API HTTP centralizada em src/server.tssrc/server.ts:36
Endpoints de saúde para Kubernetessrc/server.ts:168
Fila assíncrona para envio de link de gruposrc/workers/groupLinkDispatchWorker.ts:171
Integração com WordPress via token de serviçosrc/features/api/wp/wpPatchProfile.ts:30
Integração condicional com Sebrae por feature flagsrc/flows/business.ts:16
Persistência local em SQLitesrc/config/database.ts:8
Deploy automatizado com Docker + Helm.github/workflows/ci-cd-pipeline.yml:41
Governança de documentação já configurada.github/workflows/docs-governance.yml:1

Pendências

  • Confirmar se o uso simultâneo de migration Otps e model Otp é intencional (nomes divergentes). Evidência: src/migrations/20240807154411-create-otp.mjs:5 Evidência: src/models/otp.ts:33

  • Confirmar política oficial de testes automatizados (nenhuma suíte encontrada no package.json). Evidência: package.json:7

  • Confirmar se APP_SECRET, PORT e WEBHOOK_VERIFY_TOKEN devem constar no .env.example. Evidência: src/server.ts:100 Evidência: src/routes/webhook.ts:89 Evidência: .env.example:1