Autor: Iker Acevedo¶
Fecha creacion: 2026-10-18
Estado: desarrollo
Caso de uso: SolicitarNovedadesUseCase¶
Aplicacion/CasosUso/SolicitarNovedadesUseCase.cs — ruta /novedades-inter/solicitar.
Decide qué guías consultar a ws-inter en cada corrida y las envía. Nunca espera el resultado: ws-inter responde 202
y entrega la respuesta después por el webhook (Recibir resultado).
Qué guías cuentan como "novedad"¶
ReglaSeleccionNovedad, configurable por variables de entorno. Una guía de PedidosInter (transportadora
INTERRAPIDISIMO, estado no final) está en novedad si:
- su
Estadoes uno de: Intento de entrega, Telemercadeo, Reenvio, Devolucion Regional, Reclame en oficina; o - su
Descripcion Asociadaes No logramos hacer la entrega o Tu envío presenta una novedad.
| Prioridad | Cuándo | Refresco |
|---|---|---|
| Alta | La descripción indica fallo de entrega | cada 6 h |
| Normal | El resto (sobre todo Reclame en oficina, que dice Ya puedes recoger tu envío) | cada 24 h |
Estados finales excluidos (los mismos que la lambda legacy): Pagada, Archivada, Devolución ratificada, Anulada, Indemnizacion, Devolucion Completada.
Cuándo se (re)envía una guía — PlanificadorEnvios¶
| Situación | Acción |
|---|---|
| Sin seguimiento | Enviar |
Seguimiento Cerrado (la guía volvió a novedad) |
Enviar y reactivar |
Enviada, sin respuesta, hace menos de 2 h |
Saltar (se espera el callback) |
Enviada, sin respuesta, 2 h o más, menos de 3 envíos |
Enviar (reintento) |
Enviada, sin respuesta, 2 h o más, 3 envíos ya |
Marcar Fallida y alertar |
Cambió Estado o Descripcion Asociada en Inter |
Enviar |
Fallida y venció el refresco |
Enviar |
Respondida/NoEncontrada y venció el refresco |
Enviar |
| Cualquier otra | Saltar |
Cuando una guía sale de novedad su seguimiento pasa a Cerrado y no se consulta más.
Orden de una corrida¶
GET /healthde ws-inter. Si falla: alerta de Slack,wsInterNoDisponible=truey se termina.- Lee candidatos de
PedidosIntery sus seguimientos. - Cierra los seguimientos activos que ya no están en la lista.
- Reproyección: si un seguimiento tiene motivo pero
PedidosInter.MotivoNovedadInterno coincide (la lambda legacy reescribió el pedido), lo vuelve a escribir. - Planifica y ordena: prioridad Alta primero, luego las que hace más tiempo no se consultan. Aplica
MAX_GUIAS_POR_CORRIDA. - Envía con concurrencia limitada (4). Cada envío lleva una
refúnica (GUID) para correlacionar el callback. - Cortes: la API key rechazada (401/403) corta de inmediato;
FALLAS_SEGUIDAS_PARA_CORTAR(5) fallas seguidas también.
Alertas (máximo una por tipo y corrida)¶
| Tipo | Cuándo |
|---|---|
WsInterNoDisponible |
/health falla, o todas las solicitudes de la corrida fallaron |
CredencialInvalida |
ws-inter responde 401/403 |
CorridaCortada |
5 fallas seguidas |
SinRespuesta |
Guías con 3 envíos sin callback |
ErrorNoControlado |
Excepción (p. ej. Mongo caído); además se relanza para que cuente como error de la lambda |
Límite de tiempo¶
Function.cs corta la corrida a los 150 s (o 10 s antes del timeout de la lambda). Lo pendiente se retoma en la
siguiente; interrumpida=true en el resumen.
Pruebas¶
test/ApiLambdaNovedadesInter.Tests/Aplicacion/SolicitarNovedadesUseCaseTests.cs y
Dominio/ReglasTests.cs (tabla completa del planificador).