| from fpdf import FPDF | |
| import pandas as pd | |
| class ComplianceCert: | |
| def __init__(self, csv_path): | |
| self.df = pd.read_csv(csv_path) | |
| def _format_risk(self, trend): | |
| return { | |
| "β": ("HIGH", (255,0,0)), | |
| "β": ("MEDIUM", (255,165,0)), | |
| "β": ("LOW", (0,128,0)) | |
| }.get(trend, ("UNKNOWN", (0,0,0))) | |
| def generate_pdf(self, output_path="compliance_cert.pdf"): | |
| pdf = FPDF() | |
| pdf.add_page() | |
| pdf.set_font("Arial", 'B', 16) | |
| pdf.cell(0, 10, "Agentic AI Deployment Compliance Certificate", ln=1, align='C') | |
| pdf.set_font("Arial", size=10) | |
| col_widths = [40, 30, 30, 30, 40] | |
| headers = ["Component", "Risk Trend", "Last Audit", "Automation", "Compliance"] | |
| for i, header in enumerate(headers): | |
| pdf.cell(col_widths[i], 10, header, border=1) | |
| pdf.ln() | |
| for _, row in self.df.iterrows(): | |
| risk_text, risk_color = self._format_risk(row['Predicted_Risk_Trend']) | |
| pdf.cell(col_widths[0], 10, row['Component'], border=1) | |
| pdf.set_text_color(*risk_color) | |
| pdf.cell(col_widths[1], 10, risk_text, border=1) | |
| pdf.set_text_color(0,0,0) | |
| pdf.cell(col_widths[2], 10, str(row['Last_Audit_Date']), border=1) | |
| pdf.cell(col_widths[3], 10, f"Level {row['Automation_Level']}", border=1) | |
| pdf.cell(col_widths[4], 10, row['Compliance_Frameworks'].split(',')[0], border=1) | |
| pdf.ln() | |
| pdf.output(output_path) | |
| if __name__ == "__main__": | |
| cert = ComplianceCert("master_plan_v3.2.csv") | |
| cert.generate_pdf() | |