aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers/AssistantManager.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ApiManagers/AssistantManager.ts')
-rw-r--r--src/server/ApiManagers/AssistantManager.ts47
1 files changed, 31 insertions, 16 deletions
diff --git a/src/server/ApiManagers/AssistantManager.ts b/src/server/ApiManagers/AssistantManager.ts
index dfe5d747b..224d47d3b 100644
--- a/src/server/ApiManagers/AssistantManager.ts
+++ b/src/server/ApiManagers/AssistantManager.ts
@@ -291,7 +291,10 @@ export default class AssistantManager extends ApiManager {
if (jobProgress[jobId]) {
res.json(jobProgress[jobId]);
} else {
- res.status(404).send({ error: 'Job not found' });
+ res.json({
+ step: 'Processing Document...',
+ progress: '0',
+ });
}
},
});
@@ -452,43 +455,55 @@ function spawnPythonProcess(jobId: string, file_name: string, file_data: string)
]);
let pythonOutput = ''; // Accumulate stdout data
+ let stderrOutput = ''; // For stderr logs and progress
- // Handle stdout data (progress and final results)
+ // Handle stdout data (final result in JSON format)
pythonProcess.stdout.on('data', data => {
- pythonOutput += data.toString(); // Accumulate data
+ pythonOutput += data.toString(); // Accumulate data from stdout
+ });
- const lines = pythonOutput.split('\n'); // Handle multi-line JSON
+ // Handle stderr (progress logs or errors)
+ pythonProcess.stderr.on('data', data => {
+ stderrOutput += data.toString();
+ const lines = stderrOutput.split('\n');
lines.forEach(line => {
if (line.trim()) {
try {
- const parsedOutput = JSON.parse(line); // Parse each line of JSON
+ // Progress and warnings are printed as JSON to stderr
+ const parsedOutput = JSON.parse(line);
+ // Handle progress updates
if (parsedOutput.job_id && parsedOutput.progress !== undefined) {
jobProgress[parsedOutput.job_id] = {
step: parsedOutput.step,
progress: parsedOutput.progress,
};
- } else if (parsedOutput.chunks) {
- jobResults[parsedOutput.job_id] = parsedOutput;
- jobProgress[parsedOutput.job_id] = { step: 'Complete', progress: 100 };
+ } else if (parsedOutput.progress !== undefined) {
+ jobProgress[jobId] = {
+ step: parsedOutput.step,
+ progress: parsedOutput.progress,
+ };
}
} catch (err) {
- console.error('Error parsing Python output:', err);
+ console.error('Progress log from Python:', line);
}
}
});
});
- // Handle stderr (error logging)
- pythonProcess.stderr.on('data', data => {
- console.error(`Python script error: ${data}`);
- });
-
// Handle process exit
pythonProcess.on('close', code => {
- if (code !== 0) {
+ if (code === 0) {
+ // Parse final JSON output (stdout)
+ try {
+ const finalResult = JSON.parse(pythonOutput); // Parse JSON from stdout
+ jobResults[jobId] = finalResult;
+ jobProgress[jobId] = { step: 'Complete', progress: 100 };
+ } catch (err) {
+ console.error('Error parsing final JSON result:', err);
+ }
+ } else {
console.error(`Python process exited with code ${code}`);
- console.error(`Command: python3 ${path.join(__dirname, '../chunker/pdf_chunker.py')} ${jobId} ${file_name}`);
jobResults[jobId] = { error: 'Python process failed' };
}
});