/** * Batch Scheduler for handling scheduled tasks and message batching */ import { ChatContext } from '@/types/models'; import * as cron from 'node-cron'; export interface ScheduleTask { id: string; interval?: number; cronExpression?: string; cronJob?: cron.ScheduledTask; handler: (contexts: ChatContext[]) => Promise; lastRun: number; contexts: ChatContext[]; isActive: boolean; } export interface ScheduledMessage { id: string; roomId: string; message: string; scheduledTime: number; isProcessed: boolean; metadata?: any; } export interface BootstrapHandler { handler: () => Promise; priority: number; } export declare class BatchScheduler { private static instance; private scheduleTasks; private scheduledMessages; private bootstrapHandlers; private isRunning; private tickInterval; private timer?; private logger; private eventEmitter; private constructor(); static getInstance(): BatchScheduler; /** * 스케줄 태스크 등록 (인터벌 기반) */ registerScheduleTask(id: string, interval: number, handler: (contexts: ChatContext[]) => Promise): void; /** * 스케줄 태스크 등록 (cron 기반) */ registerCronTask(id: string, cronExpression: string, handler: (contexts: ChatContext[]) => Promise): void; /** * ChatContext를 해당 스케줄 태스크에 추가 */ addContextToSchedule(scheduleId: string, context: ChatContext): void; /** * 예약 메시지 등록 */ scheduleMessage(id: string, roomId: string, message: string, scheduledTime: number, metadata?: any): void; /** * Bootstrap 핸들러 등록 */ registerBootstrapHandler(handler: () => Promise, priority?: number): void; /** * Bootstrap 핸들러들 실행 */ runBootstrap(): Promise; /** * 스케줄러 시작 */ start(): void; /** * 스케줄러 중지 */ stop(): void; /** * 스케줄러 틱 처리 */ private tick; /** * 스케줄 태스크 비활성화 */ disableScheduleTask(id: string): void; /** * 스케줄 태스크 활성화 */ enableScheduleTask(id: string): void; /** * 예약 메시지 이벤트 리스너 등록 */ onScheduledMessage(listener: (message: ScheduledMessage) => void): void; /** * 스케줄 태스크 상태 조회 */ getScheduleTaskStatus(id: string): ScheduleTask | undefined; /** * 모든 스케줄 태스크 상태 조회 */ getAllScheduleTaskStatus(): Map; /** * 예약 메시지 상태 조회 */ getScheduledMessageStatus(id: string): ScheduledMessage | undefined; /** * 모든 예약 메시지 상태 조회 */ getAllScheduledMessageStatus(): Map; /** * 예약 메시지 취소 */ cancelScheduledMessage(id: string): boolean; /** * 스케줄 태스크 제거 */ removeScheduleTask(id: string): boolean; } //# sourceMappingURL=BatchScheduler.d.ts.map