feat: add Job Monitor page with cron job logging and Selenium queue status

This commit is contained in:
ff
2026-04-13 00:32:18 -04:00
parent 034c0fa993
commit 11a6d2e5a7
85 changed files with 3046 additions and 12 deletions

View File

@@ -0,0 +1,36 @@
import * as z from 'zod';
export const CronJobLogAggregateResultSchema = z.object({ _count: z.object({
id: z.number(),
jobName: z.number(),
status: z.number(),
startedAt: z.number(),
completedAt: z.number(),
durationMs: z.number(),
errorMessage: z.number()
}).optional(),
_sum: z.object({
id: z.number().nullable(),
durationMs: z.number().nullable()
}).nullable().optional(),
_avg: z.object({
id: z.number().nullable(),
durationMs: z.number().nullable()
}).nullable().optional(),
_min: z.object({
id: z.number().int().nullable(),
jobName: z.string().nullable(),
status: z.string().nullable(),
startedAt: z.date().nullable(),
completedAt: z.date().nullable(),
durationMs: z.number().int().nullable(),
errorMessage: z.string().nullable()
}).nullable().optional(),
_max: z.object({
id: z.number().int().nullable(),
jobName: z.string().nullable(),
status: z.string().nullable(),
startedAt: z.date().nullable(),
completedAt: z.date().nullable(),
durationMs: z.number().int().nullable(),
errorMessage: z.string().nullable()
}).nullable().optional()});

View File

@@ -0,0 +1,2 @@
import * as z from 'zod';
export const CronJobLogCountResultSchema = z.number();

View File

@@ -0,0 +1,4 @@
import * as z from 'zod';
export const CronJobLogCreateManyResultSchema = z.object({
count: z.number()
});

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
export const CronJobLogCreateResultSchema = z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
});

View File

@@ -0,0 +1,4 @@
import * as z from 'zod';
export const CronJobLogDeleteManyResultSchema = z.object({
count: z.number()
});

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
export const CronJobLogDeleteResultSchema = z.nullable(z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
}));

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
export const CronJobLogFindFirstResultSchema = z.nullable(z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
}));

View File

@@ -0,0 +1,20 @@
import * as z from 'zod';
export const CronJobLogFindManyResultSchema = z.object({
data: z.array(z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
})),
pagination: z.object({
page: z.number().int().min(1),
pageSize: z.number().int().min(1),
total: z.number().int().min(0),
totalPages: z.number().int().min(0),
hasNext: z.boolean(),
hasPrev: z.boolean()
})
});

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
export const CronJobLogFindUniqueResultSchema = z.nullable(z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
}));

View File

@@ -0,0 +1,45 @@
import * as z from 'zod';
export const CronJobLogGroupByResultSchema = z.array(z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date(),
durationMs: z.number().int(),
errorMessage: z.string(),
_count: z.object({
id: z.number(),
jobName: z.number(),
status: z.number(),
startedAt: z.number(),
completedAt: z.number(),
durationMs: z.number(),
errorMessage: z.number()
}).optional(),
_sum: z.object({
id: z.number().nullable(),
durationMs: z.number().nullable()
}).nullable().optional(),
_avg: z.object({
id: z.number().nullable(),
durationMs: z.number().nullable()
}).nullable().optional(),
_min: z.object({
id: z.number().int().nullable(),
jobName: z.string().nullable(),
status: z.string().nullable(),
startedAt: z.date().nullable(),
completedAt: z.date().nullable(),
durationMs: z.number().int().nullable(),
errorMessage: z.string().nullable()
}).nullable().optional(),
_max: z.object({
id: z.number().int().nullable(),
jobName: z.string().nullable(),
status: z.string().nullable(),
startedAt: z.date().nullable(),
completedAt: z.date().nullable(),
durationMs: z.number().int().nullable(),
errorMessage: z.string().nullable()
}).nullable().optional()
}));

View File

@@ -0,0 +1,4 @@
import * as z from 'zod';
export const CronJobLogUpdateManyResultSchema = z.object({
count: z.number()
});

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
export const CronJobLogUpdateResultSchema = z.nullable(z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
}));

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
export const CronJobLogUpsertResultSchema = z.object({
id: z.number().int(),
jobName: z.string(),
status: z.string(),
startedAt: z.date(),
completedAt: z.date().optional(),
durationMs: z.number().int().optional(),
errorMessage: z.string().optional()
});

View File

@@ -219,6 +219,19 @@ export { NotificationDeleteManyResultSchema } from './NotificationDeleteManyResu
export { NotificationAggregateResultSchema } from './NotificationAggregateResult.schema';
export { NotificationGroupByResultSchema } from './NotificationGroupByResult.schema';
export { NotificationCountResultSchema } from './NotificationCountResult.schema';
export { CronJobLogFindUniqueResultSchema } from './CronJobLogFindUniqueResult.schema';
export { CronJobLogFindFirstResultSchema } from './CronJobLogFindFirstResult.schema';
export { CronJobLogFindManyResultSchema } from './CronJobLogFindManyResult.schema';
export { CronJobLogCreateResultSchema } from './CronJobLogCreateResult.schema';
export { CronJobLogCreateManyResultSchema } from './CronJobLogCreateManyResult.schema';
export { CronJobLogUpdateResultSchema } from './CronJobLogUpdateResult.schema';
export { CronJobLogUpdateManyResultSchema } from './CronJobLogUpdateManyResult.schema';
export { CronJobLogUpsertResultSchema } from './CronJobLogUpsertResult.schema';
export { CronJobLogDeleteResultSchema } from './CronJobLogDeleteResult.schema';
export { CronJobLogDeleteManyResultSchema } from './CronJobLogDeleteManyResult.schema';
export { CronJobLogAggregateResultSchema } from './CronJobLogAggregateResult.schema';
export { CronJobLogGroupByResultSchema } from './CronJobLogGroupByResult.schema';
export { CronJobLogCountResultSchema } from './CronJobLogCountResult.schema';
export { CloudFolderFindUniqueResultSchema } from './CloudFolderFindUniqueResult.schema';
export { CloudFolderFindFirstResultSchema } from './CloudFolderFindFirstResult.schema';
export { CloudFolderFindManyResultSchema } from './CloudFolderFindManyResult.schema';