Arquitectura
Cuando una operación deja de caber en un archivo, la primera reacción suele ser repartirla. El problema no es repartirla; el problema aparece cuando cada fragmento recibe un nombre distinto y la regla original desaparece entre ellos.
DFE propone conservar una dirección de lectura sencilla:
api/
│ traduce la petición y abre la transacción
▼
flows/
│ consulta y aplica las reglas, sin guardar
├── domain/ decide si el estado nuevo es válido
└── fx/db/ consulta datos
│
▼
api/
escribe mediante fx/db, hace commit
y después coordina las consecuencias externas
| Lugar | Naturaleza | Puede invocar |
|---|---|---|
domain/ |
Puro | Nada |
flows/ |
Consulta y reglas | Solo consultas de fx/db/ |
fx/db/ |
Primitiva | El driver |
fx/cache/, fx/events/, otros clientes |
Primitiva | El sistema externo |
api/ |
Orquestación | flows/ y el resto de fx/ |
El flow devuelve el resultado; API lo guarda. Cuando la operación requiere una transacción, API la mantiene abierta desde las consultas del flow hasta la escritura y el commit.
api/actions/ aparece cuando el handler ya no se lee de un vistazo. Ahí viven el aviso, el cobro o la publicación, después de que el flow terminó. No es una quinta capa genérica. Es el guion que ya no cabía en el handler.
El mismo flow puede llamarse desde HTTP y desde gRPC. La puerta cambia; la operación, no. Esto permite que el transporte sea una decisión de entrada sin convertirlo en una segunda versión del negocio.