Add detailed error logging to API and email generation
This commit is contained in:
12
src/index.ts
12
src/index.ts
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user