feat(notificaciones): ejecutar todos for servicios jobs
Add POST /notifications/run-all: runs the four notification jobs (outstanding, payment confirmation, account status, trust confirmation) sequentially with one shared set of flags from "Flags del envío". Sequential rather than parallel — the jobs share the SES transport and account status can self-throttle via useEmailLimit. A job that throws is captured and the sweep continues, so one bad query cannot swallow the other three envíos; the aggregate response carries per-job results plus summed sent/skipped/failed and an errors count. Audited as a single notification.run-all.run entry so one staff click is one audit row. UI adds the button to the flags card, with a confirm when debug is off, and a per-job summary in "Última respuesta".
This commit is contained in:
@@ -139,6 +139,35 @@ export class NotificationsController {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run all four jobs sequentially with one set of flags. Audited as a
|
||||
* single `notification.run-all.run` entry carrying the aggregate totals
|
||||
* plus each job's outcome — the per-job endpoints are NOT re-audited, so
|
||||
* the log has exactly one row per staff click.
|
||||
*/
|
||||
@Post("run-all")
|
||||
@RequireAbility("notification:send")
|
||||
@HttpCode(200)
|
||||
async runAll(
|
||||
@Body() body: RunJobDto,
|
||||
@Query() query: RunJobDto,
|
||||
@Req() req: Request,
|
||||
) {
|
||||
const flags = { ...query, ...body };
|
||||
const result = await this.svc.runAll(flags);
|
||||
void this.audit.log(actingId(req), "notification.run-all.run", {
|
||||
debug: !!flags.debug,
|
||||
ignoreDayRestriction: !!flags.ignoreDayRestriction,
|
||||
useEmailLimit: !!flags.useEmailLimit,
|
||||
sent: result.sent,
|
||||
skipped: result.skipped,
|
||||
failed: result.failed,
|
||||
errors: result.errors,
|
||||
jobs: result.jobs.map((j) => ({ kind: j.kind, ok: j.ok })),
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------- read views */
|
||||
|
||||
@Get("log")
|
||||
|
||||
Reference in New Issue
Block a user