Spaces:
Sleeping
Sleeping
| from reportlab.lib import colors | |
| from reportlab.lib.pagesizes import letter | |
| from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle | |
| from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle | |
| from reportlab.lib.units import inch | |
| from io import BytesIO | |
| def generate_pdf_report(assessment): | |
| buffer = BytesIO() | |
| doc = SimpleDocTemplate(buffer, pagesize=letter) | |
| styles = getSampleStyleSheet() | |
| elements = [] | |
| # Title | |
| elements.append(Paragraph("AI Readiness Assessment Report", styles['Title'])) | |
| elements.append(Spacer(1, 12)) | |
| # Summary | |
| elements.append(Paragraph("Summary", styles['Heading1'])) | |
| elements.append(Paragraph(f"Total Score: {assessment.total_score}", styles['Normal'])) | |
| elements.append(Paragraph(f"Readiness Level: {assessment.readiness_level}", styles['Normal'])) | |
| elements.append(Spacer(1, 12)) | |
| # Scores Table | |
| data = [ | |
| ["Category", "Score"], | |
| ["Strategy", assessment.strategy_score], | |
| ["Governance", assessment.governance_score], | |
| ["Data & Infrastructure", assessment.data_infrastructure_score], | |
| ["Organization", assessment.organization_score] | |
| ] | |
| table = Table(data) | |
| table.setStyle(TableStyle([ | |
| ('BACKGROUND', (0, 0), (-1, 0), colors.grey), | |
| ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), | |
| ('ALIGN', (0, 0), (-1, -1), 'CENTER'), | |
| ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'), | |
| ('FONTSIZE', (0, 0), (-1, 0), 14), | |
| ('BOTTOMPADDING', (0, 0), (-1, 0), 12), | |
| ('BACKGROUND', (0, 1), (-1, -1), colors.beige), | |
| ('TEXTCOLOR', (0, 1), (-1, -1), colors.black), | |
| ('ALIGN', (0, 0), (-1, -1), 'CENTER'), | |
| ('FONTNAME', (0, 1), (-1, -1), 'Helvetica'), | |
| ('FONTSIZE', (0, 1), (-1, -1), 12), | |
| ('TOPPADDING', (0, 1), (-1, -1), 6), | |
| ('BOTTOMPADDING', (0, 1), (-1, -1), 6), | |
| ('GRID', (0, 0), (-1, -1), 1, colors.black) | |
| ])) | |
| elements.append(table) | |
| elements.append(Spacer(1, 12)) | |
| # Recommendations | |
| elements.append(Paragraph("Recommendations", styles['Heading1'])) | |
| if assessment.strategy_score < 15: | |
| elements.append(Paragraph("• Focus on developing a comprehensive AI strategy aligned with business goals.", styles['Normal'])) | |
| if assessment.governance_score < 13: | |
| elements.append(Paragraph("• Strengthen AI governance frameworks and ethical guidelines.", styles['Normal'])) | |
| if assessment.data_infrastructure_score < 16: | |
| elements.append(Paragraph("• Invest in improving data quality and infrastructure to support AI initiatives.", styles['Normal'])) | |
| if assessment.organization_score < 13: | |
| elements.append(Paragraph("• Enhance AI skills and promote a culture of innovation within the organization.", styles['Normal'])) | |
| doc.build(elements) | |
| buffer.seek(0) | |
| return buffer |