feat(final-docs): manual admin document-reminder blast

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt
2026-06-09 15:26:50 +02:00
parent f3d3a21156
commit 26709e2c9b
3 changed files with 115 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import {
resetOrCreatePendingConfirmation,
confirmAttendanceInTx,
} from '../services/finalist-enrollment'
import { sendManualFinalDocReminders } from '../services/final-documents'
export const finalistRouter = router({
/** List all per-category finalist slot quotas for a program. */
@@ -1660,4 +1661,24 @@ export const finalistRouter = router({
return { ok: true }
}),
/** Manually remind finalist teams to upload their Grand Final documents. */
sendDocumentReminders: adminProcedure
.input(z.object({ programId: z.string(), projectIds: z.array(z.string()).optional() }))
.mutation(async ({ ctx, input }) => {
const result = await sendManualFinalDocReminders(ctx.prisma, {
programId: input.programId,
projectIds: input.projectIds,
actorId: ctx.user.id,
})
await logAudit({
prisma: ctx.prisma,
userId: ctx.user.id,
action: 'FINALIST_DOCS_REMINDER_SENT',
entityType: 'Program',
entityId: input.programId,
detailsJson: { sent: result.sent, projectIds: input.projectIds ?? 'all-missing' },
})
return result
}),
})