Erinnerungs-Function: Diagnose-Logging pro Nutzer

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
cschlaefke 2026-07-19 14:55:50 +02:00
parent 7d45724ef2
commit 0ce4b2cb19

View file

@ -1,4 +1,5 @@
import {onSchedule} from "firebase-functions/v2/scheduler";
import {logger} from "firebase-functions";
import * as admin from "firebase-admin";
/**
@ -149,7 +150,14 @@ export const sendDailyReminders = onSchedule(
for (const userDoc of users.docs) {
const user = userDoc.data() as UserDoc;
const tokens = user.fcmTokens ?? [];
if (tokens.length === 0 || !user.householdId) continue;
if (tokens.length === 0 || !user.householdId) {
logger.info("Übersprungen: kein Token oder kein Haushalt", {
uid: userDoc.id,
tokens: tokens.length,
householdId: user.householdId ?? null,
});
continue;
}
const timezone = user.timezone ?? "Europe/Berlin";
const reminderTime = user.reminderTime ?? "09:00";
@ -165,7 +173,10 @@ export const sendDailyReminders = onSchedule(
// Höchstens eine Erinnerung pro Tag.
const todayKey = dateKey(local);
if (user.lastReminderSentOn === todayKey) continue;
if (user.lastReminderSentOn === todayKey) {
logger.info("Übersprungen: heute schon erinnert", {uid: userDoc.id});
continue;
}
const summary = await collectDueTasks(
db,
@ -174,6 +185,13 @@ export const sendDailyReminders = onSchedule(
timezone
);
const taskCount = summary.watering.length + summary.fertilizing.length;
logger.info("Erinnerungs-Slot erreicht", {
uid: userDoc.id,
reminderTime,
timezone,
tokens: tokens.length,
taskCount,
});
if (taskCount === 0) continue;
const response = await admin.messaging().sendEachForMulticast({