@@ -6,6 +6,7 @@ const openaiService = require('../services/openaiService.js');
6
6
const ollamaService = require('../services/ollamaService.js');
7
7
const documentModel = require('../models/document.js');
8
8
const debugService = require('../services/debugService.js');
9
+ const configFile = require('../config/config.js');
9
10
10
11
// API endpoints that should not redirect
11
12
const API_ENDPOINTS = ['/health', '/manual'];
@@ -52,11 +53,11 @@ router.get('/setup', async (req, res) => {
52
53
SYSTEM_PROMPT: process.env.SYSTEM_PROMPT || '',
53
54
PROCESS_PREDEFINED_DOCUMENTS: process.env.PROCESS_PREDEFINED_DOCUMENTS || 'no',
54
55
TAGS: normalizeArray(process.env.TAGS),
55
- // Neue Konfigurationsoptionen
56
56
ADD_AI_PROCESSED_TAG: process.env.ADD_AI_PROCESSED_TAG || 'no',
57
57
AI_PROCESSED_TAG_NAME: process.env.AI_PROCESSED_TAG_NAME || 'ai-processed',
58
58
USE_PROMPT_TAGS: process.env.USE_PROMPT_TAGS || 'no',
59
- PROMPT_TAGS: normalizeArray(process.env.PROMPT_TAGS)
59
+ PROMPT_TAGS: normalizeArray(process.env.PROMPT_TAGS),
60
+ PAPERLESS_AI_VERSION: configFile.PAPERLESS_AI_VERSION || ' '
60
61
};
61
62
62
63
if (isConfigured) {
@@ -65,14 +66,13 @@ router.get('/setup', async (req, res) => {
65
66
savedConfig.PAPERLESS_API_URL = savedConfig.PAPERLESS_API_URL.replace(/\/api$/, '');
66
67
}
67
68
68
- // Normalisiere die Arrays in der gespeicherten Konfiguration
69
69
savedConfig.TAGS = normalizeArray(savedConfig.TAGS);
70
70
savedConfig.PROMPT_TAGS = normalizeArray(savedConfig.PROMPT_TAGS);
71
71
72
72
config = { ...config, ...savedConfig };
73
73
}
74
74
75
- // Debug-Ausgabe
75
+ // Debug-output
76
76
console.log('Current config TAGS:', config.TAGS);
77
77
console.log('Current config PROMPT_TAGS:', config.PROMPT_TAGS);
78
78
@@ -265,109 +265,101 @@ router.get('/health', async (req, res) => {
265
265
}
266
266
});
267
267
268
- router.post('/setup', express.urlencoded({ extended: true } ), async (req, res) => {
268
+ router.post('/setup', express.json( ), async (req, res) => {
269
269
try {
270
- const {
271
- paperlessUrl,
272
- paperlessToken,
273
- aiProvider,
274
- openaiKey,
275
- openaiModel,
276
- ollamaUrl,
277
- ollamaModel,
278
- scanInterval,
279
- systemPrompt,
280
- showTags,
281
- tags,
282
- aiProcessedTag,
283
- aiTagName,
284
- usePromptTags,
285
- promptTags
286
- } = req.body;
287
-
288
- const normalizeArray = (value) => {
289
- if (!value) return [];
290
- if (Array.isArray(value)) return value;
291
- if (typeof value === 'string') return value.split(',').filter(Boolean).map(item => item.trim());
292
- return [];
293
- };
294
-
295
- // Sicheres Verarbeiten des systemPrompt
296
- const processedPrompt = systemPrompt
297
- ? systemPrompt.replace(/\r\n/g, '\n').replace(/\n/g, '\\n')
298
- : '';
299
-
300
- // Validate Paperless config
301
- const isPaperlessValid = await setupService.validatePaperlessConfig(paperlessUrl, paperlessToken);
302
- if (!isPaperlessValid) {
303
- return res.render('setup', {
304
- error: 'Paperless-ngx connection failed. Please check URL and Token.',
305
- config: req.body
306
- });
307
- }
308
-
309
- // Prepare base config
310
- const config = {
311
- PAPERLESS_API_URL: paperlessUrl + '/api',
312
- PAPERLESS_API_TOKEN: paperlessToken,
313
- AI_PROVIDER: aiProvider,
314
- SCAN_INTERVAL: scanInterval || '*/30 * * * *', // Default-Wert hinzugefügt
315
- SYSTEM_PROMPT: processedPrompt,
316
- PROCESS_PREDEFINED_DOCUMENTS: showTags || 'no',
317
- TAGS: normalizeArray(tags),
318
- ADD_AI_PROCESSED_TAG: aiProcessedTag || 'no',
319
- AI_PROCESSED_TAG_NAME: aiTagName || 'ai-processed',
320
- USE_PROMPT_TAGS: usePromptTags || 'no',
321
- PROMPT_TAGS: normalizeArray(promptTags)
322
- };
323
-
324
- // Debug-Ausgabe
325
- console.log('Saving config TAGS:', config.TAGS);
326
- console.log('Saving config PROMPT_TAGS:', config.PROMPT_TAGS);
327
-
328
- // Validate AI provider config
329
- if (aiProvider === 'openai') {
330
- const isOpenAIValid = await setupService.validateOpenAIConfig(openaiKey);
331
- if (!isOpenAIValid) {
332
- return res.render('setup', {
333
- error: 'OpenAI API Key is not valid. Please check the key.',
334
- config: req.body
335
- });
270
+ const {
271
+ paperlessUrl,
272
+ paperlessToken,
273
+ aiProvider,
274
+ openaiKey,
275
+ openaiModel,
276
+ ollamaUrl,
277
+ ollamaModel,
278
+ scanInterval,
279
+ systemPrompt,
280
+ showTags,
281
+ tags,
282
+ aiProcessedTag,
283
+ aiTagName,
284
+ usePromptTags,
285
+ promptTags
286
+ } = req.body;
287
+
288
+ const normalizeArray = (value) => {
289
+ if (!value) return [];
290
+ if (Array.isArray(value)) return value;
291
+ if (typeof value === 'string') return value.split(',').filter(Boolean).map(item => item.trim());
292
+ return [];
293
+ };
294
+
295
+ const processedPrompt = systemPrompt
296
+ ? systemPrompt.replace(/\r\n/g, '\n').replace(/\n/g, '\\n')
297
+ : '';
298
+
299
+ // Validate Paperless config
300
+ const isPaperlessValid = await setupService.validatePaperlessConfig(paperlessUrl, paperlessToken);
301
+ if (!isPaperlessValid) {
302
+ return res.status(400).json({
303
+ error: 'Paperless-ngx connection failed. Please check URL and Token.'
304
+ });
336
305
}
337
- config.OPENAI_API_KEY = openaiKey;
338
- config.OPENAI_MODEL = openaiModel || 'gpt-4o-mini';
339
- } else if (aiProvider === 'ollama') {
340
- const isOllamaValid = await setupService.validateOllamaConfig(ollamaUrl, ollamaModel);
341
- if (!isOllamaValid) {
342
- return res.render('setup', {
343
- error: 'Ollama connection failed. Please check URL and Model.',
344
- config: req.body
345
- });
306
+
307
+ // Prepare base config
308
+ const config = {
309
+ PAPERLESS_API_URL: paperlessUrl + '/api',
310
+ PAPERLESS_API_TOKEN: paperlessToken,
311
+ AI_PROVIDER: aiProvider,
312
+ SCAN_INTERVAL: scanInterval || '*/30 * * * *',
313
+ SYSTEM_PROMPT: processedPrompt,
314
+ PROCESS_PREDEFINED_DOCUMENTS: showTags || 'no',
315
+ TAGS: normalizeArray(tags),
316
+ ADD_AI_PROCESSED_TAG: aiProcessedTag || 'no',
317
+ AI_PROCESSED_TAG_NAME: aiTagName || 'ai-processed',
318
+ USE_PROMPT_TAGS: usePromptTags || 'no',
319
+ PROMPT_TAGS: normalizeArray(promptTags)
320
+ };
321
+
322
+ // Validate AI provider config
323
+ if (aiProvider === 'openai') {
324
+ const isOpenAIValid = await setupService.validateOpenAIConfig(openaiKey);
325
+ if (!isOpenAIValid) {
326
+ return res.status(400).json({
327
+ error: 'OpenAI API Key is not valid. Please check the key.'
328
+ });
329
+ }
330
+ config.OPENAI_API_KEY = openaiKey;
331
+ config.OPENAI_MODEL = openaiModel || 'gpt-4o-mini';
332
+ } else if (aiProvider === 'ollama') {
333
+ const isOllamaValid = await setupService.validateOllamaConfig(ollamaUrl, ollamaModel);
334
+ if (!isOllamaValid) {
335
+ return res.status(400).json({
336
+ error: 'Ollama connection failed. Please check URL and Model.'
337
+ });
338
+ }
339
+ config.OLLAMA_API_URL = ollamaUrl || 'http://localhost:11434';
340
+ config.OLLAMA_MODEL = ollamaModel || 'llama3.2';
346
341
}
347
- config.OLLAMA_API_URL = ollamaUrl || 'http://localhost:11434';
348
- config.OLLAMA_MODEL = ollamaModel || 'llama3.2';
349
- }
350
342
351
- // Save configuration
352
- await setupService.saveConfig(config);
343
+ // Save configuration
344
+ await setupService.saveConfig(config);
353
345
354
- // Send success response
355
- res.render('setup', {
356
- success: 'Configuration saved successfully. The application will restart...',
357
- config: req.body
358
- });
346
+ // Send success response
347
+ res.json({
348
+ success: true,
349
+ message: 'Configuration saved successfully.',
350
+ restart: true
351
+ });
359
352
360
- // Trigger application restart
361
- setTimeout(() => {
362
- process.exit(0);
363
- }, 1000 );
353
+ // Trigger application restart
354
+ setTimeout(() => {
355
+ process.exit(0);
356
+ }, 5000 );
364
357
365
358
} catch (error) {
366
- console.error('Setup error:', error);
367
- res.render('setup', {
368
- error: 'An error occurred: ' + error.message,
369
- config: req.body
370
- });
359
+ console.error('Setup error:', error);
360
+ res.status(500).json({
361
+ error: 'An error occurred: ' + error.message
362
+ });
371
363
}
372
364
});
373
365
0 commit comments