File size: 2,952 Bytes
34d246d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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