C4 - Contexto e Componentes
Escopo
Sistema: dhedalos-app-backend-wordpress
Complemento visual:
- Mindmap Mermaid:
docs/architecture/mindmap.md
Baseado em:
we-dhedalos/functions.phpwe-dhedalos/functions/rest/**we-dhedalos/functions/post_types/**docker-compose.yml,Dockerfile,docker/nginx.confhelm/**,kubernetes/**,.github/workflows/ci-cd-pipeline.yml
C4 L1 - Contexto
Atores
- Participante (
subscriber) - Facilitador (
facilitator) - Supervisor (
supervisor) - Administrador (
administrator) - Servicos internos consumidores de API com token (
Authorization: Svc <token>)
Sistema em foco
- Backend WordPress com logica no tema
we-dhedalos. - Exposicao HTTP via Nginx + PHP-FPM.
- Persistencia em MariaDB + cache Redis.
Aplicacoes externas
- SimplyBook (agenda e bookings)
- 8x8/Jitsi (geracao de token/sala)
- Novu (notificacoes)
- API de agenda de colaboradores (
agendaem ACF options) - API de submissoes (
API_DELIVERABLE_SUBSCRIPTIONS_URL) - ViaCEP (enriquecimento de endereco em importadores)
Dependencias externas de runtime
- Docker / Docker Compose
- Kubernetes / Helm
- Registro Docker (pipeline CI/CD)
Prefixo de API REST
O projeto altera o prefixo REST padrao do WordPress:
- padrao:
/wp-json - projeto:
/api
Implementacao:
we-dhedalos/functions/wp/rest_path.php
Exemplo final:
/api/dhedalos/v1/search
C4 L3 - Componentes internos
1) Componente API REST de dominio
Local: we-dhedalos/functions/rest/**
Responsabilidades:
- registrar endpoints por modulo (
courses,cycles,classes,registration,enroll,live,export,logs,tests), - validar autorizacao por token/sessao/role,
- orquestrar regras de negocio e acesso a dados,
- acionar integracoes externas.
2) Componente de dominio em WordPress (CPT/Taxonomia/ACF)
Locais:
we-dhedalos/functions/post_types/**we-dhedalos/functions/taxonomies/**we-dhedalos/functions/acfs/**
Responsabilidades:
- modelar curso, ciclo, turma, matricula e presenca,
- modelar logs de auditoria e operacao,
- manter configuracoes funcionais em options (ACF).
3) Componente de autenticacao/autorizacao
Locais:
we-dhedalos/functions/rest/auth_callback.phpwe-dhedalos/functions/utils/permission.php
Responsabilidades:
- validar
Authorization: Svc <token>comAPI_SERVICE_TOKEN, - validar sessao WordPress,
- aplicar gates por role (
facilitator,supervisor,administrator).
4) Componente de integracoes externas
Locais:
we-dhedalos/functions/3rd/simplybook.phpwe-dhedalos/functions/3rd/8x8.phpwe-dhedalos/functions/wp/user.phpwe-dhedalos/functions/utils/send_*_novu.phpwe-dhedalos/functions.php(submissions cleanup)
Responsabilidades:
- agenda/booking,
- salas/token de video,
- notificacoes de negocio,
- sincronizacao de facilitador com API de agenda,
- limpeza remota de artefatos de submissao.
5) Componente de jobs e automacoes (WP-Cron)
Locais:
we-dhedalos/functions.phpwe-dhedalos/functions/utils/*_cron.phpwe-dhedalos/functions/post_types/*(limpeza de logs)
Responsabilidades:
- notificacao de inicio e ultimo dia de ciclo,
- cancelamento automatico,
- identificacao de usuarios inativos,
- limpeza periodica de logs.
6) Componente de cache
Locais:
we-dhedalos/functions/utils/cache.phpwe-dhedalos/functions/utils/invalidate_*_cache.phpwe-dhedalos/functions/wp/rest-cache.phpwp/object-cache.php(drop-in)
Responsabilidades:
- cache de consultas de dominio,
- cache/transient para integracoes e endpoints live,
- invalidacao em alteracao de curso/ciclo,
- flush global em
pre_post_update.
7) Componente de runtime e deploy
Locais:
docker-compose.yml,Dockerfile,docker/nginx.conf,docker/php/custom-php.inihelm/**,kubernetes/**,.github/workflows/ci-cd-pipeline.yml
Responsabilidades:
- empacotar runtime Nginx + PHP-FPM,
- prover banco/cache,
- executar pipeline de build e deploy por branch/ambiente.
Fluxos de referencia
Fluxo 1 - Inscricao
- Cliente chama
/api/dhedalos/v1/enroll/{slug}com token de servico. - API valida disponibilidade de ciclo/turma.
- API cria
studentscom vinculouser+class. - API atualiza metadados de matricula e contador de turma.
- API aciona notificacoes (Novu) quando habilitado.
Fluxo 2 - Mentoria individual
- Usuario logado consulta disponibilidade (
/individual/disponibilityou/individual/available-slots). - API resolve provider/cliente no SimplyBook.
- API cria booking em
/individual/booking. - Usuario consulta agendamentos em
/individual/bookings.
Fluxo 3 - Sala de aula
- Usuario logado chama
/class_room*. - API valida participacao na turma (ou permissao admin).
- Componente 8x8 gera token JWT e payload de acesso.
- API retorna token e metadados da sala.
Riscos tecnicos observaveis
- Forte acoplamento da logica de negocio ao tema.
- Alta variacao de contratos de resposta entre endpoints.
- Regras de autorizacao distribuidas entre
permission_callbacke callback de negocio. - Presenca de callbacks permissivos (
__return_true) em rotas sensiveis de dominio.
Pendencias
- Nao existe documento formal de fronteiras para eventual migracao de dominio para plugin dedicado.
- Nao existe threat model versionado no repositorio.
- Nao existe catalogo versionado de contratos/SLA das integracoes externas.