feat: enhance report generation with error handling and metadata extraction

- Updated the report generation tool to include error handling for failed report generation, persisting error messages in the database.
- Modified metadata extraction to count section headings and return a status indicating readiness or failure.
- Adjusted frontend components to handle and display error states based on report generation outcomes, improving user feedback and experience.
This commit is contained in:
Anish Sarkar 2026-02-11 20:04:36 +05:30
parent e4244829ae
commit 90bf93b0a5
3 changed files with 85 additions and 86 deletions

View file

@ -35,14 +35,8 @@ const ReportContentResponseSchema = z.object({
content: z.string().nullish(),
report_metadata: z
.object({
sections: z
.array(
z.object({
level: z.number(),
title: z.string(),
})
)
.nullish(),
status: z.enum(["ready", "failed"]).nullish(),
error_message: z.string().nullish(),
word_count: z.number().nullish(),
char_count: z.number().nullish(),
section_count: z.number().nullish(),
@ -126,7 +120,15 @@ function ReportPanelContent({
if (cancelled) return;
const parsed = ReportContentResponseSchema.safeParse(rawData);
if (parsed.success) {
setReportContent(parsed.data);
// Check if the report was marked as failed in metadata
if (parsed.data.report_metadata?.status === "failed") {
setError(
parsed.data.report_metadata?.error_message ||
"Report generation failed"
);
} else {
setReportContent(parsed.data);
}
} else {
console.warn(
"Invalid report content response:",