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
-
Entrypoint de aplicação HTTP em
src/server.ts, comapp.listen(PORT). Evidência: src/server.ts:36 Evidência: src/server.ts:283 -
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
- 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 fluxospersonalebusiness. 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 -
helmekubernetes: 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 porWHATSAPP_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çãoAuthorization: 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
SIGINTeSIGTERM. 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:
OtpeGroupLinkDispatchQueue. 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 comts-nodee watch. -
npm run build: compilação TypeScript. -
npm run start: execução dedist/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
testnopackage.json. Evidência: package.json:7
Achados x Evidências
| Achado | Evidência |
|---|---|
API HTTP centralizada em src/server.ts | src/server.ts:36 |
| Endpoints de saúde para Kubernetes | src/server.ts:168 |
| Fila assíncrona para envio de link de grupo | src/workers/groupLinkDispatchWorker.ts:171 |
| Integração com WordPress via token de serviço | src/features/api/wp/wpPatchProfile.ts:30 |
| Integração condicional com Sebrae por feature flag | src/flows/business.ts:16 |
| Persistência local em SQLite | src/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
Otpse modelOtpé 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,PORTeWEBHOOK_VERIFY_TOKENdevem constar no.env.example. Evidência: src/server.ts:100 Evidência: src/routes/webhook.ts:89 Evidência: .env.example:1