Add AI review workflow for Paperless documents

This commit is contained in:
2026-05-07 20:04:30 +02:00
parent 210b77876d
commit f913bc0ba6
24 changed files with 2169 additions and 15 deletions

View File

@@ -28,7 +28,16 @@ const configSchema = z.object({
ntfyTopic: z.string().min(1).optional(),
ntfyToken: z.string().optional(),
ntfyPriority: z.string().optional(),
icalSecret: z.string().optional()
icalSecret: z.string().optional(),
aiEnabled: z.coerce.boolean().default(false),
aiProvider: z.enum(["openai", "openai-compatible", "gemini"]).optional(),
aiBaseUrl: z.string().url().optional(),
aiModel: z.string().min(1).optional(),
aiApiKey: z.string().min(1).optional(),
aiSystemPrompt: z.string().optional(),
aiTimeoutSeconds: z.coerce.number().min(5).max(300).default(60),
aiMaxTokens: z.coerce.number().min(256).max(16000).default(2000),
paperlessWebhookSecret: z.string().min(10).optional()
});
function parseBoolean(value: string | undefined, fallback: boolean): boolean {
@@ -72,7 +81,16 @@ const rawConfig = {
ntfyTopic: readEnv("NTFY_TOPIC"),
ntfyToken: readEnv("NTFY_TOKEN"),
ntfyPriority: readEnv("NTFY_PRIORITY"),
icalSecret: readEnv("ICAL_SECRET")
icalSecret: readEnv("ICAL_SECRET"),
aiEnabled: parseBoolean(readEnv("AI_ENABLED"), false),
aiProvider: readEnv("AI_PROVIDER"),
aiBaseUrl: readEnv("AI_BASE_URL"),
aiModel: readEnv("AI_MODEL"),
aiApiKey: readEnv("AI_API_KEY"),
aiSystemPrompt: readEnv("AI_SYSTEM_PROMPT"),
aiTimeoutSeconds: readEnv("AI_TIMEOUT_SECONDS"),
aiMaxTokens: readEnv("AI_MAX_TOKENS"),
paperlessWebhookSecret: readEnv("PAPERLESS_WEBHOOK_SECRET")
};
export type AppConfig = z.infer<typeof configSchema>;