Add scheduled task automation skill with worker execution pipeline.
Memind CI / Test, build, and release guards (push) Failing after 18s
Memind CI / Test, build, and release guards (push) Failing after 18s
Introduce scheduled-task-automation for H5 and WeChat, persist tasks in h5_scheduled_tasks, and run due jobs via a dedicated worker that executes agent tasks and delivers results. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -26,6 +26,7 @@ import {
|
||||
writebackPublications,
|
||||
} from '../plaza-tasks.mjs';
|
||||
import { createScheduleService } from '../schedule-service.mjs';
|
||||
import { createScheduledTaskService } from '../scheduled-task-service.mjs';
|
||||
import { createFeedbackService } from '../user-feedback.mjs';
|
||||
import { PUBLISH_KEY_UUID } from '../user-publish.mjs';
|
||||
import { initSchema } from '../db.mjs';
|
||||
@@ -47,6 +48,7 @@ export async function bootstrapPortalDomainServices({
|
||||
ensureMindSpaceConfigFn = ensureMindSpaceConfig,
|
||||
loadMindSpaceConfigFn = loadMindSpaceConfig,
|
||||
createScheduleServiceFn = createScheduleService,
|
||||
createScheduledTaskServiceFn = createScheduledTaskService,
|
||||
createPageDataServiceFn = createPageDataService,
|
||||
createPageDataPublicServiceFn =
|
||||
createPageDataPublicService,
|
||||
@@ -114,6 +116,10 @@ export async function bootstrapPortalDomainServices({
|
||||
defaultTimezone:
|
||||
env.H5_DEFAULT_TIMEZONE || 'Asia/Shanghai',
|
||||
});
|
||||
const scheduledTaskService = createScheduledTaskServiceFn(pool, {
|
||||
defaultTimezone:
|
||||
env.H5_DEFAULT_TIMEZONE || 'Asia/Shanghai',
|
||||
});
|
||||
const pageDataService = createPageDataServiceFn({
|
||||
getUserAuth,
|
||||
getPool: () => pool,
|
||||
@@ -278,6 +284,7 @@ export async function bootstrapPortalDomainServices({
|
||||
mindSpaceAnalyticsConfig: resolvedAnalyticsConfig,
|
||||
mindSpaceRybbitConfig: resolvedRybbitConfig,
|
||||
scheduleService,
|
||||
scheduledTaskService,
|
||||
pageDataService,
|
||||
pageDataPublicService,
|
||||
feedbackService,
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
import { createPageEditSessionService } from '../mindspace-page-edit-session.mjs';
|
||||
import { createNotificationDispatcher } from '../notification-dispatcher.mjs';
|
||||
import { startScheduleReminderWorker } from '../schedule-reminder-worker.mjs';
|
||||
import { startScheduledTaskWorker } from '../scheduled-task-worker.mjs';
|
||||
import { isPassiveCanaryRuntime } from './portal-runtime-role.mjs';
|
||||
import { loadWechatMpModule } from '../wechat-mp-loader.mjs';
|
||||
import { createToolGateway } from '../tool-gateway.mjs';
|
||||
@@ -29,11 +30,12 @@ export async function bootstrapPortalIntegrationServices({
|
||||
sessionAccess,
|
||||
tkmindProxy,
|
||||
scheduleService,
|
||||
scheduledTaskService = null,
|
||||
sessionSnapshotService = null,
|
||||
wechatScheduleLlmConfigService,
|
||||
llmProviderService,
|
||||
chatIntentRouter,
|
||||
systemDisclosurePolicyService,
|
||||
sessionSnapshotService,
|
||||
mindSpaceAnalyticsConfig,
|
||||
mindSpaceRybbitConfig,
|
||||
subscriptionService,
|
||||
@@ -56,6 +58,8 @@ export async function bootstrapPortalIntegrationServices({
|
||||
createNotificationDispatcher,
|
||||
startScheduleReminderWorkerFn =
|
||||
startScheduleReminderWorker,
|
||||
startScheduledTaskWorkerFn =
|
||||
startScheduledTaskWorker,
|
||||
createPageEditSessionServiceFn =
|
||||
createPageEditSessionService,
|
||||
createToolGatewayFn = createToolGateway,
|
||||
@@ -266,6 +270,27 @@ export async function bootstrapPortalIntegrationServices({
|
||||
logger.log('Schedule reminder worker enabled');
|
||||
}
|
||||
|
||||
let scheduledTaskWorker = null;
|
||||
if (
|
||||
!isPassiveCanaryRuntime(env) &&
|
||||
env.H5_SCHEDULED_TASK_WORKER_ENABLED === '1' &&
|
||||
scheduledTaskService &&
|
||||
userAuth &&
|
||||
tkmindProxy
|
||||
) {
|
||||
scheduledTaskWorker =
|
||||
startScheduledTaskWorkerFn({
|
||||
scheduledTaskService,
|
||||
scheduleService,
|
||||
userAuth,
|
||||
tkmindProxy,
|
||||
sessionSnapshotService,
|
||||
notificationDispatcher,
|
||||
logger,
|
||||
});
|
||||
logger.log('Scheduled task worker enabled');
|
||||
}
|
||||
|
||||
let subscriptionExpiryTimer = null;
|
||||
if (subscriptionService && !isPassiveCanaryRuntime(env)) {
|
||||
subscriptionExpiryTimer = setIntervalFn(
|
||||
@@ -323,6 +348,7 @@ export async function bootstrapPortalIntegrationServices({
|
||||
wechatMpService,
|
||||
notificationDispatcher,
|
||||
scheduleReminderWorker,
|
||||
scheduledTaskWorker,
|
||||
subscriptionExpiryTimer,
|
||||
mindSpacePageEditSession,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user