Skip to content

Commit 8b8d44c

Browse files
authored
Merge pull request #1359 from trycompai/mariano/tasks-limits-release
feat: enhance onboarding tasks with increased concurrency and retry l…
2 parents 4e3f8da + 362cef8 commit 8b8d44c

5 files changed

Lines changed: 21 additions & 9 deletions

File tree

apps/app/src/jobs/tasks/onboarding/generate-risk-mitigation.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@ import {
88
} from './onboard-organization-helpers';
99

1010
// Queues
11-
const riskMitigationQueue = queue({ name: 'risk-mitigations', concurrencyLimit: 10 });
12-
const riskMitigationFanoutQueue = queue({ name: 'risk-mitigations-fanout', concurrencyLimit: 3 });
11+
const riskMitigationQueue = queue({ name: 'risk-mitigations', concurrencyLimit: 100 });
12+
const riskMitigationFanoutQueue = queue({ name: 'risk-mitigations-fanout', concurrencyLimit: 100 });
1313

1414
export const generateRiskMitigation = task({
1515
id: 'generate-risk-mitigation',
1616
queue: riskMitigationQueue,
17+
retry: {
18+
maxAttempts: 5,
19+
},
1720
run: async (payload: { organizationId: string; riskId: string }) => {
1821
const { organizationId, riskId } = payload;
1922
logger.info(`Generating risk mitigation for risk ${riskId} in org ${organizationId}`);

apps/app/src/jobs/tasks/onboarding/generate-vendor-mitigation.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ import {
88
} from './onboard-organization-helpers';
99

1010
// Queues
11-
const vendorMitigationQueue = queue({ name: 'vendor-risk-mitigations', concurrencyLimit: 10 });
11+
const vendorMitigationQueue = queue({ name: 'vendor-risk-mitigations', concurrencyLimit: 100 });
1212
const vendorMitigationFanoutQueue = queue({
1313
name: 'vendor-risk-mitigations-fanout',
14-
concurrencyLimit: 3,
14+
concurrencyLimit: 100,
1515
});
1616

1717
export const generateVendorMitigation = task({
1818
id: 'generate-vendor-mitigation',
1919
queue: vendorMitigationQueue,
20+
retry: {
21+
maxAttempts: 5,
22+
},
2023
run: async (payload: { organizationId: string; vendorId: string }) => {
2124
const { organizationId, vendorId } = payload;
2225
logger.info(`Generating vendor mitigation for vendor ${vendorId} in org ${organizationId}`);

apps/app/src/jobs/tasks/onboarding/onboard-organization.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ import {
1111
} from './onboard-organization-helpers';
1212

1313
// v4 queues must be declared in advance
14-
const onboardOrgQueue = queue({ name: 'onboard-organization', concurrencyLimit: 10 });
14+
const onboardOrgQueue = queue({ name: 'onboard-organization', concurrencyLimit: 100 });
1515

1616
export const onboardOrganization = task({
1717
id: 'onboard-organization',
1818
queue: onboardOrgQueue,
19+
retry: {
20+
maxAttempts: 3,
21+
},
1922
run: async (payload: { organizationId: string }) => {
2023
logger.info(`Start onboarding organization ${payload.organizationId}`);
2124

apps/app/src/jobs/tasks/onboarding/update-policies-helpers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ export async function reconcileFormatWithTemplate(
194194
): Promise<{ type: 'document'; content: Record<string, unknown>[] }> {
195195
try {
196196
const { object } = await generateObject({
197-
model: openai('gpt-5-mini'),
197+
model: openai('gpt-5-nano'),
198198
mode: 'json',
199199
system: `You are an expert policy editor.
200200
Given an ORIGINAL policy TipTap JSON and a DRAFT TipTap JSON, produce a FINAL TipTap JSON that:
@@ -232,7 +232,7 @@ export async function aiCheckFormatWithTemplate(
232232
): Promise<{ isConforming: boolean; reasons: string[] }> {
233233
try {
234234
const { object } = await generateObject({
235-
model: openai('gpt-5-mini'),
235+
model: openai('gpt-5-nano'),
236236
mode: 'json',
237237
system: `You are validating policy layout.
238238
Compare ORIGINAL vs DRAFT (TipTap JSON). Determine if DRAFT conforms to ORIGINAL format:
@@ -457,7 +457,7 @@ export async function generatePolicyContent(prompt: string): Promise<{
457457
}> {
458458
try {
459459
const { object } = await generateObject({
460-
model: openai('gpt-5-mini'),
460+
model: openai('gpt-5-nano'),
461461
mode: 'json',
462462
system: `You are an expert at writing security policies. Generate content directly as TipTap JSON format.
463463

apps/app/src/jobs/tasks/onboarding/update-policy.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ if (!process.env.OPENAI_API_KEY) {
77
}
88

99
// v4: define queue ahead of time
10-
export const updatePolicyQueue = queue({ name: 'update-policy', concurrencyLimit: 5 });
10+
export const updatePolicyQueue = queue({ name: 'update-policy', concurrencyLimit: 100 });
1111

1212
export const updatePolicy = schemaTask({
1313
id: 'update-policy',
1414
maxDuration: 600, // 10 minutes.
1515
queue: updatePolicyQueue,
16+
retry: {
17+
maxAttempts: 5,
18+
},
1619
schema: z.object({
1720
organizationId: z.string(),
1821
policyId: z.string(),

0 commit comments

Comments
 (0)