feat(geplante-nachrichten): scheduled message rule engine with bot delivery, admin UI, and manual trigger

This commit is contained in:
Matthias Hochmeister
2026-04-17 09:10:57 +02:00
parent 6614fbaa68
commit 8a0c4200ff
24 changed files with 2208 additions and 69 deletions

View File

@@ -0,0 +1,52 @@
export type MessageType =
| 'event_summary'
| 'birthday_list'
| 'dienstjubilaeen'
| 'fahrzeug_status'
| 'fahrzeug_event'
| 'bestellungen';
export type TriggerMode = 'day_of_week' | 'days_before_month_start' | 'event';
export type WindowMode = 'rolling' | 'calendar_month';
export interface ScheduledMessageRule {
id: string;
name: string;
message_type: MessageType;
trigger_mode: TriggerMode;
day_of_week: number | null;
send_time: string | null;
days_before_month_start: number | null;
window_mode: WindowMode | null;
window_days: number | null;
target_room_token: string;
target_room_name: string | null;
template: string;
extra_config: Record<string, unknown> | null;
subscribable: boolean;
allowed_groups: string[];
last_sent_at: string | null;
active: boolean;
created_at: string;
subscriber_count?: number;
is_subscribed?: boolean;
}
export interface NextcloudRoom {
token: string;
displayName: string;
type: number;
}
export interface ScheduledMessagesListResponse {
data: ScheduledMessageRule[];
}
export interface ScheduledMessageDetailResponse {
data: ScheduledMessageRule;
}
export interface RoomsResponse {
configured: boolean;
data?: NextcloudRoom[];
}