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
.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') {
set.status = 400;
return { error: 'Validation error', details: error.message };
@@ -60,9 +67,8 @@ const app = new Elysia()
return { error: error.message };
}
console.error('Error:', error);
set.status = 500;
return { error: 'Internal server error' };
return { error: 'Internal server error', details: error.message };
})
.listen(process.env.PORT || 3000);

View File

@@ -27,17 +27,33 @@ export const emailRoutes = new Elysia({ prefix: '/emails' })
}
// Generate email content
const content = await generateEmail({
advisorName: user.name,
clientName: client.firstName,
interests: client.interests || [],
notes: client.notes || '',
purpose: body.purpose,
provider: body.provider,
});
console.log(`[${new Date().toISOString()}] Generating email for client ${client.firstName}, purpose: ${body.purpose}`);
let content: string;
let subject: string;
try {
content = await generateEmail({
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
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
const [communication] = await db.insert(communications)