← Back to Case Studies

Calculadora de tarifas enerxéticas: Desacoplamiento de lóxica de negocio de mecanismos de entrega

Contexto do Proxecto

Un provedor de enerxía verde do Reino Unido (100Green.com) necesitaba migrar dun sitio web .NET obsoleto a unha solución de hosting máis asequible. O departamento de ventas vendeulles WordPress, pero a arquitectura de WordPress non é ideal para lóxica de negocio complexa. O desafío: separar a lóxica de negocio do mecanismo de entrega (WordPress) mantendo o requisito do cliente.

Reto Técnico

O CRM do cliente proporciona datos de tarifas en bruto vía API baseados só en código postal. O sistema necesitaba calcular tarifas complexas (Tarifa Diurna, Tarifa Nocturna, Cargo Fixo, Gasto Mensual Estimado) baseadas en múltiples variables: tipo de enerxía (gas, electricidade ou ambas), smart meter (si/non), medidor de 2 tarifas (si/non), e tipo de consumo (baixo, medio, alto ou uso personalizado). O CRM non podía realizar estes cálculos—tivemos que construír unha calculadora de dominio que procesa datos en bruto usando fórmulas de negocio específicas.

Solución Arquitectónica

En vez de acoplar todo á arquitectura espagueti de WordPress, deseñamos unha solución que separa bounded contexts do mecanismo de entrega:

  • • Plugin de API de WordPress: Un módulo que crea endpoints para recibir peticións só desde o noso dominio (con mecanismos de seguridade adecuados para prevenir peticións cross-domain)
  • • Librerías PHP puras (sen framework): Estruturas vertical sliced con capa Application (casos de uso), capa Domain (políticas, interfaces, contratos), e capa Infrastructure (implementacións específicas)
  • • Aplicación React embebida en WordPress: Unha calculadora que se comunica coa nosa API personalizada, que contén todas as regras de negocio abstraídas nas nosas librerías que consultan o CRM do cliente
  • • Principio de estabilidade: Os módulos máis estables (librerías de negocio) están máis afastados dos máis volátiles (frontend React), creando unha separación clara entre presentación e lóxica de negocio

Resultados

Fricción mínima con WordPress: só unha app React embebida no DOM dunha páxina de WordPress. O resto é lóxica de negocio pura, adecuadamente separada. O sistema demostra como aplicar DDD, arquitectura hexagonal, bounded contexts e principios de arquitectura orientada a servizos incluso cando se está limitado por un mecanismo de entrega como WordPress.

Tecnoloxías

  • • WordPress (delivery mechanism)
  • • Raw PHP (framework-free)
  • • React
  • • Domain-Driven Design
  • • Hexagonal Architecture
  • • Vertical Sliced Structures
  • • Stability Rule Principle

Logros Clave

  • • Separación completa da lóxica de negocio do mecanismo de entrega de WordPress
  • • Calculadora de dominio independente da infraestrutura
  • • Arquitectura vertical sliced con límites claros
  • • Principio de estabilidade aplicado: módulos estables protexidos do frontend volátil
Discuss Your Project