feat(reminders): получатели в отложенных/входящих, приватные сообщения чата, календарь, бейдж уведомлений

This commit is contained in:
2026-09-21 10:26:53 +03:00
parent 17e6ebf412
commit aa316141be
20 changed files with 312 additions and 36 deletions

View File

@@ -9,6 +9,7 @@ import { webPushService } from "./services/web-push.service";
import { startMedScheduleWorker } from "./medschedule/worker";
import { startAutomationScheduler } from "./workers/automation-scheduler";
import { startDelayedStatusChangeWorker } from "./workers/delayed-status-change.worker";
import { sendTaskMessage } from "./services/task-message.service";
import { startErrorLogsRetention } from "./workers/error-logs-retention";
import { startGpsWorker } from "./gps/worker";
import { storage } from "./storage";
@@ -1225,6 +1226,21 @@ async function runStartupDataPatches() {
}
}
await withSuperAdmin(() => storage.markReminderSent(reminder.id));
// Сообщение в чат задачи с текстом напоминания (бейдж «Напоминание»).
// Видят только получатели напоминания и его создатель (visible_to_user_ids).
if (task) {
const visibleTo = [...new Set([...recipientUserIds, reminder.createdByUserId])];
sendTaskMessage({
task,
organizationId: reminder.organizationId,
message: reminder.note ? `Напоминание: ${reminder.note}` : `Напоминание о задаче "${taskTitle}"`,
messageType: 'reminder',
visibleToUserIds: visibleTo,
}).catch((chatErr: unknown) => log(
`Reminder worker: chat message failed for reminder ${reminder.id}: ${chatErr instanceof Error ? chatErr.message : String(chatErr)}`
));
}
} catch (reminderErr) {
log(`Reminder worker: failed to process reminder ${reminder.id}: ${reminderErr instanceof Error ? reminderErr.message : String(reminderErr)}`);
await withSuperAdmin(() => storage.markReminderSent(reminder.id)).catch(() => {});