PensionBot / evidence_pack_export.py
ChAbhishek28's picture
Add 899999999999999
061a93c
raw
history blame
3.12 kB
import csv
from fpdf import FPDF
import tempfile
import os
def export_evidence_pack_pdf(data, filename=None):
"""
Export evidence pack as PDF. Data should include clause, summary, checklist, scenario, metadata.
Returns path to PDF file.
"""
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Evidence Pack", ln=True, align='C')
pdf.ln(10)
pdf.set_font("Arial", size=10)
pdf.multi_cell(0, 8, f"Clause: {data.get('clause_text','')}")
pdf.multi_cell(0, 8, f"Summary: {data.get('summary','')}")
pdf.multi_cell(0, 8, f"Checklist: {', '.join(data.get('role_checklist',[]))}")
pdf.multi_cell(0, 8, f"Source: {data.get('source_title','')} | Clause ID: {data.get('clause_id','')} | Date: {data.get('date','')} | URL: {data.get('url','')}")
pdf.ln(5)
scenario = data.get('scenario_analysis',{})
if scenario:
pdf.multi_cell(0, 8, f"Scenario Analysis:")
pdf.multi_cell(0, 8, f"Yearly Results: {scenario.get('yearly_results','')}")
pdf.multi_cell(0, 8, f"Cumulative Base: {scenario.get('cumulative_base','')}")
pdf.multi_cell(0, 8, f"Cumulative Scenario: {scenario.get('cumulative_scenario','')}")
pdf.multi_cell(0, 8, f"Optimistic: {scenario.get('optimistic','')}")
pdf.multi_cell(0, 8, f"Pessimistic: {scenario.get('pessimistic','')}")
pdf.multi_cell(0, 8, f"Driver Breakdown: {scenario.get('driver_breakdown','')}")
if not filename:
filename = os.path.join(tempfile.gettempdir(), f"evidence_pack_{os.getpid()}.pdf")
pdf.output(filename)
return filename
def export_evidence_pack_csv(data, filename=None):
"""
Export evidence pack as CSV. Data should include clause, summary, checklist, scenario, metadata.
Returns path to CSV file.
"""
if not filename:
filename = os.path.join(tempfile.gettempdir(), f"evidence_pack_{os.getpid()}.csv")
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Field", "Value"])
writer.writerow(["Clause", data.get('clause_text','')])
writer.writerow(["Summary", data.get('summary','')])
writer.writerow(["Checklist", ', '.join(data.get('role_checklist',[]))])
writer.writerow(["Source", data.get('source_title','')])
writer.writerow(["Clause ID", data.get('clause_id','')])
writer.writerow(["Date", data.get('date','')])
writer.writerow(["URL", data.get('url','')])
scenario = data.get('scenario_analysis',{})
if scenario:
writer.writerow(["Yearly Results", scenario.get('yearly_results','')])
writer.writerow(["Cumulative Base", scenario.get('cumulative_base','')])
writer.writerow(["Cumulative Scenario", scenario.get('cumulative_scenario','')])
writer.writerow(["Optimistic", scenario.get('optimistic','')])
writer.writerow(["Pessimistic", scenario.get('pessimistic','')])
writer.writerow(["Driver Breakdown", scenario.get('driver_breakdown','')])
return filename