diff --git a/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.md b/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.md index a5c2141d7d..da49bbba31 100644 --- a/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.md +++ b/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.md @@ -431,9 +431,7 @@ Generated by [AVA](https://avajs.dev). ], modelCalls: [ { - args: [ - 100, - ], + args: [], }, ], } diff --git a/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.snap b/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.snap index afecb02142..1383cf492c 100644 Binary files a/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.snap and b/packages/backend/server/src/__tests__/__snapshots__/copilot.spec.ts.snap differ diff --git a/packages/backend/server/src/__tests__/models/copilot-session.spec.ts b/packages/backend/server/src/__tests__/models/copilot-session.spec.ts index d63b1e4068..f851657310 100644 --- a/packages/backend/server/src/__tests__/models/copilot-session.spec.ts +++ b/packages/backend/server/src/__tests__/models/copilot-session.spec.ts @@ -1078,7 +1078,7 @@ test('should get sessions for title generation correctly', async t => { }) ); - const result = await copilotSession.toBeGenerateTitle(10); + const result = await copilotSession.toBeGenerateTitle(); t.snapshot( { diff --git a/packages/backend/server/src/models/copilot-session.ts b/packages/backend/server/src/models/copilot-session.ts index 4bb85c48f3..7912e5373d 100644 --- a/packages/backend/server/src/models/copilot-session.ts +++ b/packages/backend/server/src/models/copilot-session.ts @@ -613,7 +613,7 @@ export class CopilotSessionModel extends BaseModel { } @Transactional() - async toBeGenerateTitle(take: number) { + async toBeGenerateTitle() { const sessions = await this.db.aiSession .findMany({ where: { @@ -628,7 +628,6 @@ export class CopilotSessionModel extends BaseModel { // count assistant messages _count: { select: { messages: { where: { role: 'assistant' } } } }, }, - take, orderBy: { updatedAt: 'desc' }, }) .then(s => s.filter(s => s._count.messages > 0)); diff --git a/packages/backend/server/src/plugins/copilot/cron.ts b/packages/backend/server/src/plugins/copilot/cron.ts index de8cd1eec4..686fac1660 100644 --- a/packages/backend/server/src/plugins/copilot/cron.ts +++ b/packages/backend/server/src/plugins/copilot/cron.ts @@ -11,8 +11,6 @@ declare global { } } -const GENERATE_TITLES_BATCH_SIZE = 100; - @Injectable() export class CopilotCronJobs { private readonly logger = new Logger(CopilotCronJobs.name); @@ -37,6 +35,14 @@ export class CopilotCronJobs { ); } + async triggerGenerateMissingTitles() { + await this.jobs.add( + 'copilot.session.generateMissingTitles', + {}, + { jobId: 'trigger-copilot-generate-missing-titles' } + ); + } + @OnJob('copilot.session.cleanupEmptySessions') async cleanupEmptySessions() { const { removed, cleaned } = @@ -51,9 +57,7 @@ export class CopilotCronJobs { @OnJob('copilot.session.generateMissingTitles') async generateMissingTitles() { - const sessions = await this.models.copilotSession.toBeGenerateTitle( - GENERATE_TITLES_BATCH_SIZE - ); + const sessions = await this.models.copilotSession.toBeGenerateTitle(); for (const session of sessions) { await this.jobs.add('copilot.session.generateTitle', { diff --git a/packages/backend/server/src/plugins/copilot/resolver.ts b/packages/backend/server/src/plugins/copilot/resolver.ts index f658254dc7..47aa613f50 100644 --- a/packages/backend/server/src/plugins/copilot/resolver.ts +++ b/packages/backend/server/src/plugins/copilot/resolver.ts @@ -37,6 +37,7 @@ import { Admin } from '../../core/common'; import { AccessController } from '../../core/permission'; import { UserType } from '../../core/user'; import type { ListSessionOptions, UpdateChatSession } from '../../models'; +import { CopilotCronJobs } from './cron'; import { PromptService } from './prompt'; import { PromptMessage, StreamObject } from './providers'; import { ChatSessionService } from './session'; @@ -773,7 +774,18 @@ class CreateCopilotPromptInput { @Admin() @Resolver(() => String) export class PromptsManagementResolver { - constructor(private readonly promptService: PromptService) {} + constructor( + private readonly cron: CopilotCronJobs, + private readonly promptService: PromptService + ) {} + + @Query(() => Boolean, { + description: 'Trigger generate missing titles cron job', + }) + async triggerGenerateTitleCron() { + await this.cron.triggerGenerateMissingTitles(); + return true; + } @Query(() => [CopilotPromptType], { description: 'List all copilot prompts',