Spaces:
Sleeping
Sleeping
Update components/ResultsTable.tsx
Browse files- components/ResultsTable.tsx +91 -125
components/ResultsTable.tsx
CHANGED
|
@@ -273,10 +273,6 @@ const QAReportModal: React.FC<{ report: DetailedQaReport; onClose: () => void }>
|
|
| 273 |
</div>
|
| 274 |
<div className="space-y-2">
|
| 275 |
<OverallSection data={report.overall} />
|
| 276 |
-
<Section title="Title" data={report.title} />
|
| 277 |
-
<Section title="Meta Description" data={report.meta} />
|
| 278 |
-
<Section title="H1" data={report.h1} />
|
| 279 |
-
<Section title="Copy" data={report.copy} />
|
| 280 |
<AdditionalSections sections={report.additionalSections} />
|
| 281 |
|
| 282 |
{/* Complete Raw Report */}
|
|
@@ -332,50 +328,18 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 332 |
'Generated H1': row.generatedH1,
|
| 333 |
'Generated Meta': row.generatedMeta,
|
| 334 |
'Generated Copy': row.generatedCopy,
|
| 335 |
-
'Overall Pass':
|
| 336 |
-
'Overall Grade':
|
| 337 |
'Overall Primary Issue': report?.overall.primaryIssue,
|
| 338 |
'Overall Detailed Assessment': report?.overall.detailedAssessment,
|
| 339 |
'Overall Key Strengths': report?.overall.keyStrengths?.join('; '),
|
| 340 |
'Overall Recommendations': report?.overall.recommendations?.join('; '),
|
| 341 |
'Overall Explanations': report?.overall.explanations,
|
| 342 |
-
'Title Pass': report?.title.pass,
|
| 343 |
-
'Title Grade': report?.title.grade,
|
| 344 |
-
'Title Errors': report?.title.errors.join('; '),
|
| 345 |
-
'Title Detailed Assessment': report?.title.detailedAssessment,
|
| 346 |
-
'Title Key Strengths': report?.title.keyStrengths?.join('; '),
|
| 347 |
-
'Title Recommendations': report?.title.recommendations?.join('; '),
|
| 348 |
-
'Title Explanations': report?.title.explanations,
|
| 349 |
-
'Title Corrected': report?.title.corrected,
|
| 350 |
-
'Meta Pass': report?.meta.pass,
|
| 351 |
-
'Meta Grade': report?.meta.grade,
|
| 352 |
-
'Meta Errors': report?.meta.errors.join('; '),
|
| 353 |
-
'Meta Detailed Assessment': report?.meta.detailedAssessment,
|
| 354 |
-
'Meta Key Strengths': report?.meta.keyStrengths?.join('; '),
|
| 355 |
-
'Meta Recommendations': report?.meta.recommendations?.join('; '),
|
| 356 |
-
'Meta Explanations': report?.meta.explanations,
|
| 357 |
-
'Meta Corrected': report?.meta.corrected,
|
| 358 |
-
'H1 Pass': report?.h1.pass,
|
| 359 |
-
'H1 Grade': report?.h1.grade,
|
| 360 |
-
'H1 Errors': report?.h1.errors.join('; '),
|
| 361 |
-
'H1 Detailed Assessment': report?.h1.detailedAssessment,
|
| 362 |
-
'H1 Key Strengths': report?.h1.keyStrengths?.join('; '),
|
| 363 |
-
'H1 Recommendations': report?.h1.recommendations?.join('; '),
|
| 364 |
-
'H1 Explanations': report?.h1.explanations,
|
| 365 |
-
'H1 Corrected': report?.h1.corrected,
|
| 366 |
-
'Copy Pass': report?.copy.pass,
|
| 367 |
-
'Copy Grade': report?.copy.grade,
|
| 368 |
-
'Copy Errors': report?.copy.errors.join('; '),
|
| 369 |
-
'Copy Detailed Assessment': report?.copy.detailedAssessment,
|
| 370 |
-
'Copy Key Strengths': report?.copy.keyStrengths?.join('; '),
|
| 371 |
-
'Copy Recommendations': report?.copy.recommendations?.join('; '),
|
| 372 |
-
'Copy Explanations': report?.copy.explanations,
|
| 373 |
-
'Copy Corrected': report?.copy.corrected,
|
| 374 |
'Additional QA Sections': report?.additionalSections ?
|
| 375 |
Object.entries(report.additionalSections)
|
| 376 |
-
.map(([name, data]) => `${name}: ${data.content}`)
|
| 377 |
.join(' | ') : '',
|
| 378 |
-
'Complete Raw QA Report': report?.completeRawReport || row.qaReport,
|
| 379 |
};
|
| 380 |
});
|
| 381 |
|
|
@@ -514,6 +478,7 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 514 |
|
| 515 |
// Add QA Details if available
|
| 516 |
if (row.detailedQaReport) {
|
|
|
|
| 517 |
currentY = ensureMinSpace(60); // Ensure space for QA header + at least one section
|
| 518 |
currentY += 5;
|
| 519 |
pdf.setFontSize(12);
|
|
@@ -521,7 +486,9 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 521 |
currentY = addWrappedText('QA Report Details:', margin + 5, currentY, maxLineWidth - 5, 12);
|
| 522 |
currentY += 2;
|
| 523 |
|
| 524 |
-
const
|
|
|
|
|
|
|
| 525 |
currentY = ensureMinSpace(30);
|
| 526 |
pdf.setFontSize(10);
|
| 527 |
pdf.setFont('helvetica', 'bold');
|
|
@@ -535,9 +502,15 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 535 |
pdf.setTextColor(0, 0, 0); // Reset color
|
| 536 |
|
| 537 |
pdf.setFont('helvetica', 'normal');
|
| 538 |
-
currentY = addWrappedText(`Errors: ${section.errors.join(', ')}`, margin + 10, currentY, maxLineWidth - 10, 8);
|
| 539 |
|
| 540 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 541 |
if (section.detailedAssessment) {
|
| 542 |
currentY = ensureMinSpace(20);
|
| 543 |
pdf.setFont('helvetica', 'bold');
|
|
@@ -574,78 +547,26 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 574 |
currentY = addWrappedText(section.explanations, margin + 15, currentY, maxLineWidth - 15, 7);
|
| 575 |
}
|
| 576 |
|
| 577 |
-
if (section.corrected) {
|
| 578 |
currentY = ensureMinSpace(20);
|
| 579 |
pdf.setFont('helvetica', 'italic');
|
| 580 |
currentY = addWrappedText(`Correction/Analysis: ${section.corrected}`, margin + 10, currentY, maxLineWidth - 10, 8);
|
|
|
|
| 581 |
}
|
| 582 |
currentY += 4;
|
| 583 |
};
|
| 584 |
|
| 585 |
-
|
| 586 |
-
const overall = row.detailedQaReport.overall;
|
| 587 |
-
currentY = ensureMinSpace(40);
|
| 588 |
-
pdf.setFontSize(11);
|
| 589 |
-
pdf.setFont('helvetica', 'bold');
|
| 590 |
-
currentY = addWrappedText('Overall Assessment:', margin + 5, currentY, maxLineWidth - 5, 11);
|
| 591 |
-
currentY += 2;
|
| 592 |
-
|
| 593 |
-
pdf.setFontSize(9);
|
| 594 |
-
pdf.setFont('helvetica', 'normal');
|
| 595 |
-
currentY = addWrappedText(`Primary Issue: ${overall.primaryIssue}`, margin + 10, currentY, maxLineWidth - 10, 9);
|
| 596 |
-
|
| 597 |
-
if (overall.detailedAssessment) {
|
| 598 |
-
currentY = ensureMinSpace(20);
|
| 599 |
-
pdf.setFont('helvetica', 'bold');
|
| 600 |
-
currentY = addWrappedText('Detailed Assessment:', margin + 10, currentY, maxLineWidth - 10, 8);
|
| 601 |
-
pdf.setFont('helvetica', 'normal');
|
| 602 |
-
currentY = addWrappedText(overall.detailedAssessment, margin + 15, currentY, maxLineWidth - 15, 7);
|
| 603 |
-
}
|
| 604 |
-
|
| 605 |
-
if (overall.keyStrengths && overall.keyStrengths.length > 0) {
|
| 606 |
-
currentY = ensureMinSpace(20);
|
| 607 |
-
pdf.setFont('helvetica', 'bold');
|
| 608 |
-
currentY = addWrappedText('Key Strengths:', margin + 10, currentY, maxLineWidth - 10, 8);
|
| 609 |
-
pdf.setFont('helvetica', 'normal');
|
| 610 |
-
overall.keyStrengths.forEach(strength => {
|
| 611 |
-
currentY = addWrappedText(`• ${strength}`, margin + 15, currentY, maxLineWidth - 15, 7);
|
| 612 |
-
});
|
| 613 |
-
}
|
| 614 |
-
|
| 615 |
-
if (overall.recommendations && overall.recommendations.length > 0) {
|
| 616 |
-
currentY = ensureMinSpace(20);
|
| 617 |
-
pdf.setFont('helvetica', 'bold');
|
| 618 |
-
currentY = addWrappedText('Recommendations:', margin + 10, currentY, maxLineWidth - 10, 8);
|
| 619 |
-
pdf.setFont('helvetica', 'normal');
|
| 620 |
-
overall.recommendations.forEach(rec => {
|
| 621 |
-
currentY = addWrappedText(`• ${rec}`, margin + 15, currentY, maxLineWidth - 15, 7);
|
| 622 |
-
});
|
| 623 |
-
}
|
| 624 |
-
|
| 625 |
-
if (overall.explanations) {
|
| 626 |
-
currentY = ensureMinSpace(20);
|
| 627 |
-
pdf.setFont('helvetica', 'bold');
|
| 628 |
-
currentY = addWrappedText('Explanations:', margin + 10, currentY, maxLineWidth - 10, 8);
|
| 629 |
-
pdf.setFont('helvetica', 'normal');
|
| 630 |
-
currentY = addWrappedText(overall.explanations, margin + 15, currentY, maxLineWidth - 15, 7);
|
| 631 |
-
}
|
| 632 |
-
|
| 633 |
-
currentY += 5;
|
| 634 |
-
|
| 635 |
-
addQaSection('Title', row.detailedQaReport.title);
|
| 636 |
-
addQaSection('Meta', row.detailedQaReport.meta);
|
| 637 |
-
addQaSection('H1', row.detailedQaReport.h1);
|
| 638 |
-
addQaSection('Copy', row.detailedQaReport.copy);
|
| 639 |
|
| 640 |
// Add Additional Sections if available
|
| 641 |
-
if (
|
| 642 |
currentY = ensureMinSpace(30);
|
| 643 |
pdf.setFontSize(10);
|
| 644 |
pdf.setFont('helvetica', 'bold');
|
| 645 |
currentY = addWrappedText('Additional QA Sections:', margin + 5, currentY, maxLineWidth - 5, 10);
|
| 646 |
currentY += 2;
|
| 647 |
|
| 648 |
-
Object.entries(
|
| 649 |
currentY = ensureMinSpace(25);
|
| 650 |
pdf.setFontSize(9);
|
| 651 |
pdf.setFont('helvetica', 'bold');
|
|
@@ -655,6 +576,20 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 655 |
currentY += 2;
|
| 656 |
});
|
| 657 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 658 |
}
|
| 659 |
|
| 660 |
currentY += sectionSpacing * 2; // Extra spacing between entries
|
|
@@ -870,6 +805,7 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 870 |
|
| 871 |
// QA Details if available
|
| 872 |
if (row.detailedQaReport) {
|
|
|
|
| 873 |
children.push(
|
| 874 |
new Paragraph({
|
| 875 |
text: "QA Report Details:",
|
|
@@ -878,7 +814,9 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 878 |
})
|
| 879 |
);
|
| 880 |
|
| 881 |
-
const
|
|
|
|
|
|
|
| 882 |
children.push(
|
| 883 |
new Paragraph({
|
| 884 |
children: [
|
|
@@ -890,36 +828,64 @@ const ResultsTable: React.FC<ResultsTableProps> = ({ results }) => {
|
|
| 890 |
],
|
| 891 |
heading: HeadingLevel.HEADING_4,
|
| 892 |
spacing: { before: 300, after: 100 }
|
| 893 |
-
}),
|
| 894 |
-
new Paragraph({
|
| 895 |
-
text: `Errors: ${section.errors.join(', ')}`,
|
| 896 |
-
spacing: { after: 100 }
|
| 897 |
})
|
| 898 |
);
|
| 899 |
|
| 900 |
-
|
| 901 |
-
|
| 902 |
-
|
| 903 |
-
|
| 904 |
-
|
| 905 |
-
|
| 906 |
-
|
| 907 |
-
|
| 908 |
-
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
|
| 912 |
-
|
| 913 |
-
|
| 914 |
-
|
| 915 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 916 |
}
|
| 917 |
};
|
| 918 |
|
| 919 |
-
|
| 920 |
-
|
| 921 |
-
|
| 922 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 923 |
}
|
| 924 |
|
| 925 |
// Add spacing between entries
|
|
|
|
| 273 |
</div>
|
| 274 |
<div className="space-y-2">
|
| 275 |
<OverallSection data={report.overall} />
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
<AdditionalSections sections={report.additionalSections} />
|
| 277 |
|
| 278 |
{/* Complete Raw Report */}
|
|
|
|
| 328 |
'Generated H1': row.generatedH1,
|
| 329 |
'Generated Meta': row.generatedMeta,
|
| 330 |
'Generated Copy': row.generatedCopy,
|
| 331 |
+
'Overall Pass': report?.overall.pass,
|
| 332 |
+
'Overall Grade': report?.overall.grade,
|
| 333 |
'Overall Primary Issue': report?.overall.primaryIssue,
|
| 334 |
'Overall Detailed Assessment': report?.overall.detailedAssessment,
|
| 335 |
'Overall Key Strengths': report?.overall.keyStrengths?.join('; '),
|
| 336 |
'Overall Recommendations': report?.overall.recommendations?.join('; '),
|
| 337 |
'Overall Explanations': report?.overall.explanations,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 338 |
'Additional QA Sections': report?.additionalSections ?
|
| 339 |
Object.entries(report.additionalSections)
|
| 340 |
+
.map(([name, data]) => `${name}: ${data.content.replace(/\r?\n|\r/g, ' ')}`) // Sanitize newlines
|
| 341 |
.join(' | ') : '',
|
| 342 |
+
'Complete Raw QA Report': report?.completeRawReport?.replace(/\r?\n|\r/g, ' ') || row.qaReport.replace(/\r?\n|\r/g, ' '), // Sanitize newlines
|
| 343 |
};
|
| 344 |
});
|
| 345 |
|
|
|
|
| 478 |
|
| 479 |
// Add QA Details if available
|
| 480 |
if (row.detailedQaReport) {
|
| 481 |
+
const report = row.detailedQaReport;
|
| 482 |
currentY = ensureMinSpace(60); // Ensure space for QA header + at least one section
|
| 483 |
currentY += 5;
|
| 484 |
pdf.setFontSize(12);
|
|
|
|
| 486 |
currentY = addWrappedText('QA Report Details:', margin + 5, currentY, maxLineWidth - 5, 12);
|
| 487 |
currentY += 2;
|
| 488 |
|
| 489 |
+
const addDetailedSection = (title: string, section: QaSectionResult | DetailedQaReport['overall']) => {
|
| 490 |
+
const isOverall = 'primaryIssue' in section;
|
| 491 |
+
|
| 492 |
currentY = ensureMinSpace(30);
|
| 493 |
pdf.setFontSize(10);
|
| 494 |
pdf.setFont('helvetica', 'bold');
|
|
|
|
| 502 |
pdf.setTextColor(0, 0, 0); // Reset color
|
| 503 |
|
| 504 |
pdf.setFont('helvetica', 'normal');
|
|
|
|
| 505 |
|
| 506 |
+
if (isOverall && section.primaryIssue) {
|
| 507 |
+
currentY = addWrappedText(`Primary Issue: ${section.primaryIssue}`, margin + 10, currentY, maxLineWidth - 10, 8);
|
| 508 |
+
}
|
| 509 |
+
|
| 510 |
+
if (!isOverall && section.errors.length > 0) {
|
| 511 |
+
currentY = addWrappedText(`Errors: ${section.errors.join(', ')}`, margin + 10, currentY, maxLineWidth - 10, 8);
|
| 512 |
+
}
|
| 513 |
+
|
| 514 |
if (section.detailedAssessment) {
|
| 515 |
currentY = ensureMinSpace(20);
|
| 516 |
pdf.setFont('helvetica', 'bold');
|
|
|
|
| 547 |
currentY = addWrappedText(section.explanations, margin + 15, currentY, maxLineWidth - 15, 7);
|
| 548 |
}
|
| 549 |
|
| 550 |
+
if (!isOverall && section.corrected) {
|
| 551 |
currentY = ensureMinSpace(20);
|
| 552 |
pdf.setFont('helvetica', 'italic');
|
| 553 |
currentY = addWrappedText(`Correction/Analysis: ${section.corrected}`, margin + 10, currentY, maxLineWidth - 10, 8);
|
| 554 |
+
pdf.setFont('helvetica', 'normal');
|
| 555 |
}
|
| 556 |
currentY += 4;
|
| 557 |
};
|
| 558 |
|
| 559 |
+
addDetailedSection('Overall Assessment', report.overall);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 560 |
|
| 561 |
// Add Additional Sections if available
|
| 562 |
+
if (report.additionalSections) {
|
| 563 |
currentY = ensureMinSpace(30);
|
| 564 |
pdf.setFontSize(10);
|
| 565 |
pdf.setFont('helvetica', 'bold');
|
| 566 |
currentY = addWrappedText('Additional QA Sections:', margin + 5, currentY, maxLineWidth - 5, 10);
|
| 567 |
currentY += 2;
|
| 568 |
|
| 569 |
+
Object.entries(report.additionalSections).forEach(([sectionName, sectionData]) => {
|
| 570 |
currentY = ensureMinSpace(25);
|
| 571 |
pdf.setFontSize(9);
|
| 572 |
pdf.setFont('helvetica', 'bold');
|
|
|
|
| 576 |
currentY += 2;
|
| 577 |
});
|
| 578 |
}
|
| 579 |
+
|
| 580 |
+
// Add Complete Raw Report
|
| 581 |
+
if (report.completeRawReport) {
|
| 582 |
+
currentY = ensureMinSpace(30);
|
| 583 |
+
pdf.setFontSize(10);
|
| 584 |
+
pdf.setFont('helvetica', 'bold');
|
| 585 |
+
currentY = addWrappedText('Complete Raw QA Report:', margin + 5, currentY, maxLineWidth - 5, 10);
|
| 586 |
+
currentY += 2;
|
| 587 |
+
pdf.setFontSize(7);
|
| 588 |
+
pdf.setFont('helvetica', 'normal');
|
| 589 |
+
pdf.setTextColor(100, 100, 100); // Lighter text for raw content
|
| 590 |
+
currentY = addWrappedText(report.completeRawReport, margin + 10, currentY, maxLineWidth - 10, 7);
|
| 591 |
+
pdf.setTextColor(0, 0, 0); // Reset color
|
| 592 |
+
}
|
| 593 |
}
|
| 594 |
|
| 595 |
currentY += sectionSpacing * 2; // Extra spacing between entries
|
|
|
|
| 805 |
|
| 806 |
// QA Details if available
|
| 807 |
if (row.detailedQaReport) {
|
| 808 |
+
const report = row.detailedQaReport;
|
| 809 |
children.push(
|
| 810 |
new Paragraph({
|
| 811 |
text: "QA Report Details:",
|
|
|
|
| 814 |
})
|
| 815 |
);
|
| 816 |
|
| 817 |
+
const addDetailedSection = (title: string, section: QaSectionResult | DetailedQaReport['overall']) => {
|
| 818 |
+
const isOverall = 'primaryIssue' in section;
|
| 819 |
+
|
| 820 |
children.push(
|
| 821 |
new Paragraph({
|
| 822 |
children: [
|
|
|
|
| 828 |
],
|
| 829 |
heading: HeadingLevel.HEADING_4,
|
| 830 |
spacing: { before: 300, after: 100 }
|
|
|
|
|
|
|
|
|
|
|
|
|
| 831 |
})
|
| 832 |
);
|
| 833 |
|
| 834 |
+
if (isOverall && section.primaryIssue) {
|
| 835 |
+
children.push(new Paragraph({ text: `Primary Issue: ${cleanText(section.primaryIssue)}`, spacing: { after: 100 } }));
|
| 836 |
+
}
|
| 837 |
+
|
| 838 |
+
if (!isOverall && section.errors && section.errors.length > 0) {
|
| 839 |
+
children.push(new Paragraph({ text: `Errors: ${section.errors.join(', ')}`, spacing: { after: 100 } }));
|
| 840 |
+
}
|
| 841 |
+
|
| 842 |
+
if (section.detailedAssessment) {
|
| 843 |
+
children.push(new Paragraph({ children: [new TextRun({ text: "Detailed Assessment:", bold: true })], spacing: { after: 50 } }));
|
| 844 |
+
splitIntoParagraphs(section.detailedAssessment).forEach(p => children.push(new Paragraph({ text: p, spacing: { after: 100 } })));
|
| 845 |
+
}
|
| 846 |
+
|
| 847 |
+
if (section.keyStrengths && section.keyStrengths.length > 0) {
|
| 848 |
+
children.push(new Paragraph({ children: [new TextRun({ text: "Key Strengths:", bold: true })], spacing: { after: 50 } }));
|
| 849 |
+
section.keyStrengths.forEach(s => children.push(new Paragraph({ text: `• ${cleanText(s)}`, spacing: { after: 50 }, indent: { left: 400 } })));
|
| 850 |
+
}
|
| 851 |
+
|
| 852 |
+
if (section.recommendations && section.recommendations.length > 0) {
|
| 853 |
+
children.push(new Paragraph({ children: [new TextRun({ text: "Recommendations:", bold: true })], spacing: { after: 50 } }));
|
| 854 |
+
section.recommendations.forEach(r => children.push(new Paragraph({ text: `• ${cleanText(r)}`, spacing: { after: 50 }, indent: { left: 400 } })));
|
| 855 |
+
}
|
| 856 |
+
|
| 857 |
+
if (section.explanations) {
|
| 858 |
+
children.push(new Paragraph({ children: [new TextRun({ text: "Explanations:", bold: true })], spacing: { after: 50 } }));
|
| 859 |
+
splitIntoParagraphs(section.explanations).forEach(p => children.push(new Paragraph({ text: p, spacing: { after: 100 } })));
|
| 860 |
+
}
|
| 861 |
+
|
| 862 |
+
if (!isOverall && section.corrected) {
|
| 863 |
+
children.push(new Paragraph({ children: [new TextRun({ text: "Corrected Content:", bold: true })], spacing: { after: 50 } }));
|
| 864 |
+
splitIntoParagraphs(section.corrected).forEach(p => children.push(new Paragraph({ text: p, spacing: { after: 100 } })));
|
| 865 |
}
|
| 866 |
};
|
| 867 |
|
| 868 |
+
addDetailedSection('Overall Assessment', report.overall);
|
| 869 |
+
|
| 870 |
+
// Add Additional Sections
|
| 871 |
+
if (report.additionalSections && Object.keys(report.additionalSections).length > 0) {
|
| 872 |
+
children.push(new Paragraph({ text: "Additional QA Sections", heading: HeadingLevel.HEADING_4, spacing: { before: 300, after: 100 } }));
|
| 873 |
+
Object.entries(report.additionalSections).forEach(([name, data]) => {
|
| 874 |
+
children.push(new Paragraph({ children: [new TextRun({ text: `${name}:`, bold: true })], spacing: { after: 50 } }));
|
| 875 |
+
splitIntoParagraphs(data.content).forEach(p => children.push(new Paragraph({ text: p, spacing: { after: 100 }, indent: { left: 400 } })));
|
| 876 |
+
});
|
| 877 |
+
}
|
| 878 |
+
|
| 879 |
+
// Add Complete Raw Report
|
| 880 |
+
if (report.completeRawReport) {
|
| 881 |
+
children.push(new Paragraph({ text: "Complete Raw QA Report", heading: HeadingLevel.HEADING_4, spacing: { before: 300, after: 100 } }));
|
| 882 |
+
splitIntoParagraphs(report.completeRawReport).forEach(p => {
|
| 883 |
+
children.push(new Paragraph({
|
| 884 |
+
children: [ new TextRun({ text: p, size: 16 }) ], // smaller font
|
| 885 |
+
spacing: { after: 100 }
|
| 886 |
+
}));
|
| 887 |
+
});
|
| 888 |
+
}
|
| 889 |
}
|
| 890 |
|
| 891 |
// Add spacing between entries
|