Add detailed error logging to API and email generation

This commit is contained in:
2026-01-27 22:40:46 +00:00
parent 308ca4fc5e
commit e4f900c111
2 changed files with 34 additions and 12 deletions

View File

@@ -44,7 +44,14 @@ const app = new Elysia()
) )
// Error handler // Error handler
.onError(({ code, error, set }) => { .onError(({ code, error, set, path }) => {
// Always log errors with full details
console.error(`[${new Date().toISOString()}] ERROR on ${path}:`, {
code,
message: error.message,
stack: error.stack,
});
if (code === 'VALIDATION') { if (code === 'VALIDATION') {
set.status = 400; set.status = 400;
return { error: 'Validation error', details: error.message }; return { error: 'Validation error', details: error.message };
@@ -60,9 +67,8 @@ const app = new Elysia()
return { error: error.message }; return { error: error.message };
} }
console.error('Error:', error);
set.status = 500; set.status = 500;
return { error: 'Internal server error' }; return { error: 'Internal server error', details: error.message };
}) })
.listen(process.env.PORT || 3000); .listen(process.env.PORT || 3000);

View File

@@ -27,17 +27,33 @@ export const emailRoutes = new Elysia({ prefix: '/emails' })
} }
// Generate email content // Generate email content
const content = await generateEmail({ console.log(`[${new Date().toISOString()}] Generating email for client ${client.firstName}, purpose: ${body.purpose}`);
advisorName: user.name, let content: string;
clientName: client.firstName, let subject: string;
interests: client.interests || [],
notes: client.notes || '', try {
purpose: body.purpose, content = await generateEmail({
provider: body.provider, advisorName: user.name,
}); clientName: client.firstName,
interests: client.interests || [],
notes: client.notes || '',
purpose: body.purpose,
provider: body.provider,
});
console.log(`[${new Date().toISOString()}] Email content generated successfully`);
} catch (e) {
console.error(`[${new Date().toISOString()}] Failed to generate email content:`, e);
throw e;
}
// Generate subject // Generate subject
const subject = await generateSubject(body.purpose, client.firstName, body.provider); try {
subject = await generateSubject(body.purpose, client.firstName, body.provider);
console.log(`[${new Date().toISOString()}] Email subject generated successfully`);
} catch (e) {
console.error(`[${new Date().toISOString()}] Failed to generate subject:`, e);
throw e;
}
// Save as draft // Save as draft
const [communication] = await db.insert(communications) const [communication] = await db.insert(communications)