A lot of changes
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Contexto del proyecto para agentes de IA
|
||||
|
||||
## Resumen rápido
|
||||
- Proyecto backend en `.NET 10`.
|
||||
- Estructura principal en capas: `Domain`, `Application`, `Infrastructure`.
|
||||
- Patrón arquitectónico: `Clean Architecture` con enfoque `CQRS`.
|
||||
|
||||
## Arquitectura
|
||||
- **Domain (`Domain`)**: entidades de negocio puras.
|
||||
- **Application (`Application`)**:
|
||||
- Casos de uso (comandos/queries y handlers).
|
||||
- Contratos (`Application.Contracts`).
|
||||
- Configuración de aplicación (`Application.Configuration`).
|
||||
- Mensajería orientada a eventos a través de `IEventBus`.
|
||||
- **Infrastructure (`Infrastructure`)**:
|
||||
- Persistencia y acceso a datos.
|
||||
- Integraciones externas (Keycloak, almacenamiento, procesamiento de imágenes).
|
||||
- Implementación de mensajería y consumidores.
|
||||
|
||||
## CQRS / Mediación
|
||||
- Se usa **DispatchR** (paquete `DispatchR.Mediator`) como variante de MediatR para orquestar comandos y consultas.
|
||||
- Los casos de uso están organizados por feature con handlers dedicados (`Commands`, `Queries`).
|
||||
|
||||
## Mensajería y workers
|
||||
- Se usa **MassTransit** para publicación/consumo de eventos.
|
||||
- Broker actual: **RabbitMQ** (`MassTransit.RabbitMQ`).
|
||||
- Hay modo de registro para workers con consumidores en `Infrastructure.Messaging.Consumers`.
|
||||
- Actualmente existen consumidores como:
|
||||
- `ResizePictureConsumer`
|
||||
- `RemoveFileConsumer`
|
||||
|
||||
## Persistencia e integraciones
|
||||
- `Entity Framework Core` + proveedor `Npgsql` (PostgreSQL).
|
||||
- Integración de identidad con `Keycloak`.
|
||||
- Almacenamiento con `AWS S3`.
|
||||
|
||||
## Notas para agentes
|
||||
- Mantener separación de responsabilidades por capa.
|
||||
- Evitar lógica de infraestructura dentro de `Application` y `Domain`.
|
||||
- Agregar nuevos casos de uso siguiendo el patrón CQRS existente (comando/query + handler).
|
||||
- Para nuevas integraciones asíncronas, reutilizar el pipeline de `MassTransit` y la abstracción `IEventBus`.
|
||||
Reference in New Issue
Block a user