uecko-control-tiempos/docs/arquitectura/vision-general.md

42 lines
2.1 KiB
Markdown

# Visión general de arquitectura
## Objetivo
Definir los límites arquitectónicos transversales del sistema, sin detallar la implementación interna de cada capa.
## Sistema y módulos
La aplicación gestiona tiempos, tareas, actividad, incidencias y procesos de Oficina Comercial y Oficina Técnica. Ambos son módulos funcionales diferenciados y cada uno es propietario de los datos que genera.
Los módulos pueden consultar información ajena cuando sea necesario, pero solo colaboran mediante servicios públicos explícitos. No se comparten repositorios, modelos ORM, mappers internos, servicios internos de escritura ni detalles de Infrastructure. Un módulo no modifica datos propiedad de otro sin permiso expreso.
## Estilo y límites
La arquitectura definida para el backend sigue DDD pragmático, Clean Architecture y arquitectura hexagonal. Se priorizan claridad y explicitud frente a abstracción prematura; esos principios no justifican crear capas, adaptadores, factories, genéricos, eventos o contenedores de DI sin una necesidad actual.
La dirección general de dependencias es:
```text
Domain
no conoce Application ni Infrastructure
Application
depende de Domain, contratos y Core
no conoce Express, Sequelize ni modelos ORM
Infrastructure
depende de Application, Domain y Core
```
Cada módulo debe mantener su propio composition root, que construya explícitamente sus dependencias. No se permite Service Locator ni DI implícita o mágica. Antes de cambiar una frontera arquitectónica se deben identificar productores, consumidores y efectos derivados.
## Límites transversales
La aplicación y los datos permanecen separados. Las actualizaciones y migraciones no pueden destruir, sobrescribir ni exigir reintroducir información histórica. Las reglas técnicas que materializan estos límites se definen en [datos y persistencia](datos-persistencia.md); los contratos de cada capa, en [backend](backend.md).
## Referencias
- [Ficha del proyecto UECKO](../Ficha%20del%20proyecto%20UECKO.md)
- [Arquitectura backend](backend.md)
- [Arquitectura de datos y persistencia](datos-persistencia.md)