feat(admin): Schwelle fuer den Stillstand einstellbar
Eigener Abschnitt mit der Schwelle von 14 Tagen bis zu einem Jahr, dem Zeitpunkt der letzten Pruefung und der Zahl der Empfaenger. Steht die auf null, sagt der Abschnitt das und verweist auf "Mein Konto". Eine Aenderung der Schwelle setzt lastStaleCheckAt zurueck, damit sie beim naechsten Tick greift und nicht erst in 24 Stunden. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
export default async function AdminPage() {
|
||||
const admin = await requireAdminPage();
|
||||
|
||||
const [settings, users, eligible] = await Promise.all([
|
||||
const [settings, users, eligible, staleListeners] = await Promise.all([
|
||||
getAppSettings(),
|
||||
prisma.user.findMany({
|
||||
select: userSafeSelect,
|
||||
@@ -36,6 +36,9 @@ export default async function AdminPage() {
|
||||
],
|
||||
},
|
||||
}),
|
||||
prisma.notificationTarget.count({
|
||||
where: { isActive: true, events: { has: "PROJECT_STALE" } },
|
||||
}),
|
||||
]);
|
||||
|
||||
const data: AdminData = {
|
||||
@@ -54,6 +57,11 @@ export default async function AdminPage() {
|
||||
lastReport: (settings.lastAutoSyncReport as AutoSyncReport | null) ?? null,
|
||||
eligible,
|
||||
},
|
||||
stale: {
|
||||
afterDays: settings.staleAfterDays,
|
||||
lastCheckAt: settings.lastStaleCheckAt,
|
||||
listeners: staleListeners,
|
||||
},
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@@ -37,6 +37,7 @@ export async function PATCH(request: Request) {
|
||||
autoSyncIntervalMinutes,
|
||||
autoSyncActiveOnly,
|
||||
autoSyncBatchSize,
|
||||
staleAfterDays,
|
||||
} = parsed.data;
|
||||
|
||||
// Der Wechsel in den Einzelbetrieb wuerde weitere Konten aussperren –
|
||||
@@ -57,6 +58,11 @@ export async function PATCH(request: Request) {
|
||||
...(autoSyncIntervalMinutes !== undefined ? { autoSyncIntervalMinutes } : {}),
|
||||
...(autoSyncActiveOnly !== undefined ? { autoSyncActiveOnly } : {}),
|
||||
...(autoSyncBatchSize !== undefined ? { autoSyncBatchSize } : {}),
|
||||
// Neue Schwelle: die Pruefung soll beim naechsten Tick greifen, nicht
|
||||
// erst in 24 Stunden.
|
||||
...(staleAfterDays !== undefined
|
||||
? { staleAfterDays, lastStaleCheckAt: null }
|
||||
: {}),
|
||||
};
|
||||
|
||||
const settings = await prisma.appSettings.upsert({
|
||||
|
||||
Reference in New Issue
Block a user