Skip to content

feat(emergencies): umbral de disputas configurable por emergencia#254

Open
nopestack wants to merge 1 commit into
GlobalEmergency:mainfrom
nopestack:feature/169-dispute-threshold
Open

feat(emergencies): umbral de disputas configurable por emergencia#254
nopestack wants to merge 1 commit into
GlobalEmergency:mainfrom
nopestack:feature/169-dispute-threshold

Conversation

@nopestack

Copy link
Copy Markdown
Contributor

Closes #169

Resumen

Permite fijar un umbral de reportes de validez de recursos por emergencia, sobrescribiendo el global (RESOURCE_DISPUTE_THRESHOLD) cuando esté definido.

  • Migración 0042_emergency_dispute_threshold.sql: columna nullable resource_dispute_threshold integer en emergencies.
  • Dominio (Emergency): getter resourceDisputeThreshold, método setResourceDisputeThreshold(threshold: number | null), propagado en snapshot.
  • Puerto EmergencyDisputeThresholdReader en el contexto resources + adaptador DrizzleEmergencyDisputeThresholdReader en shared/ (mismo patrón cross-context que DrizzleEmergencyStatusReader).
  • Caso de uso SetEmergencyDisputeThreshold con tests en español.
  • ReportResourceValidity: antes de comparar freshDistinct, consulta el lector por emergencia; si devuelve null, cae al umbral global.
  • Permiso emergency:configure añadido al catálogo de permisos y concedido a platform_operator y emergency_coordinator.
  • Endpoint PUT /emergencies/:emergencyId/resource-dispute-threshold (204 No Content) protegido con PermissionGuard + @RequirePermission('emergency:configure').
  • packages/api-client/src/schema.ts regenerado con pnpm gen:api.

Plan de pruebas

  • Todos los tests existentes siguen en verde (1315 pasando)
  • Test unitario SetEmergencyDisputeThreshold: set positivo, limpiar a null, emergencia no encontrada
  • Test unitario ReportResourceValidity: umbral por emergencia dispara a los 2 reportes; null cae al global de 3
  • Build TypeScript (nest build) pasa sin errores
  • ESLint y Prettier limpios

…obalEmergency#169)

Permite que coordinadores y operadores fijen un umbral de reportes de
validez por emergencia (PUT /emergencies/:id/resource-dispute-threshold),
sobreescribiendo el umbral global RESOURCE_DISPUTE_THRESHOLD cuando está
definido. Si el campo es null, se cae de nuevo al global.

- Migración 0042: columna resource_dispute_threshold (nullable integer)
- Emergency.setResourceDisputeThreshold() + getter en el dominio
- Nuevo puerto EmergencyDisputeThresholdReader + adaptador Drizzle (cross-context, patrón aceptado)
- Caso de uso SetEmergencyDisputeThreshold con tests
- ReportResourceValidity lee el umbral por emergencia antes de comparar
- Permiso emergency:configure añadido al catálogo; concedido a platform_operator y emergency_coordinator
- Endpoint PUT :emergencyId/resource-dispute-threshold con guard PermissionGuard
- schema.ts regenerado con el nuevo endpoint
@vercel

vercel Bot commented Jun 30, 2026

Copy link
Copy Markdown

@nopestack is attempting to deploy a commit to the GlobalEmergency Team on Vercel.

A member of the Team first needs to authorize it.

@nopestack nopestack marked this pull request as ready for review June 30, 2026 13:19
@nopestack nopestack requested a review from vgpastor as a code owner June 30, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Disputa: umbral configurable por emergencia

1 participant