Skip to content

Events

Este microservicio utiliza Amazon SNS (Simple Notification Service) para publicar eventos cuando ocurren cambios en el estado de los reportes de mermas. Estos eventos permiten a otros sistemas reaccionar a estos cambios de manera desacoplada.

La mensajería asíncrona es una parte fundamental de la arquitectura de este microservicio. Permite:

  • Desacoplamiento: Los productores y consumidores de eventos no necesitan conocerse entre sí.
  • Escalabilidad: Los sistemas pueden escalar independientemente.
  • Resiliencia: Los fallos en un sistema no afectan directamente a otros.
  • Observabilidad: Los eventos proporcionan una traza de las acciones realizadas en el sistema.

El microservicio actúa como productor de eventos, publicando mensajes en temas SNS cuando ocurren cambios significativos en los reportes de mermas.

ARN de Producción:

arn:aws:sns:us-east-1:849786826922:waste-report-created-topic

ARN de Staging:

arn:aws:sns:us-east-2:529305108461:waste-report-created-topic

Propósito: Notifica que se ha creado un nuevo reporte de merma en el sistema. Este evento se emite cuando un usuario reporta una merma de producto en un almacén.

Formato del Mensaje:

interface ReportedWasteProductMessage {
id: string;
product: {
name: string;
ean: string;
sku: string;
image?: string;
};
quantity: number;
location: string;
container?: string;
reason: string;
reportedBy: string;
reportedAt: string; // ISO 8601
warehouse: string;
country: string;
}

ARN de Producción:

arn:aws:sns:us-east-1:849786826922:waste-report-validated-topic

ARN de Staging:

arn:aws:sns:us-east-2:529305108461:waste-report-validated-topic

Propósito: Notifica que un reporte de merma ha sido validado. Este evento se emite cuando un supervisor valida un reporte de merma previamente creado.

Formato del Mensaje:

interface ValidatedWasteProductMessage {
id: string;
product: {
name: string;
ean: string;
sku: string;
image?: string;
};
quantity: number;
location: string;
container?: string;
reason: string;
reportedBy: string;
reportedAt: string; // ISO 8601
validatedBy: string;
validatedAt: string; // ISO 8601
warehouse: string;
country: string;
}

ARN de Producción:

arn:aws:sns:us-east-1:849786826922:waste-report-confirmed-topic

ARN de Staging:

arn:aws:sns:us-east-2:529305108461:waste-report-confirmed-topic

Propósito: Notifica que un reporte de merma ha sido confirmado. Este evento se emite cuando un gerente confirma un reporte de merma previamente validado.

Formato del Mensaje:

interface ConfirmedWasteProductMessage {
id: string;
product: {
name: string;
ean: string;
sku: string;
image?: string;
};
quantity: number;
location: string;
container?: string;
reason: string;
reportedBy: string;
reportedAt: string; // ISO 8601
validatedBy: string;
validatedAt: string; // ISO 8601
confirmedBy: string;
confirmedAt: string; // ISO 8601
warehouse: string;
country: string;
}

ARN de Producción:

arn:aws:sns:us-east-1:849786826922:waste-report-rejected-topic

ARN de Staging:

arn:aws:sns:us-east-2:529305108461:waste-report-rejected-topic

Propósito: Notifica que un reporte de merma ha sido rechazado. Este evento se emite cuando un supervisor o gerente rechaza un reporte de merma.

Formato del Mensaje:

interface RejectedWasteProductMessage {
id: string;
product: {
name: string;
ean: string;
sku: string;
image?: string;
};
quantity: number;
location: string;
container?: string;
reason: string;
reportedBy: string;
reportedAt: string; // ISO 8601
rejectedBy: string;
rejectedAt: string; // ISO 8601
rejectionReason: string;
warehouse: string;
country: string;
}