Spaces:
Sleeping
Sleeping
| 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 | |