File size: 1,685 Bytes
e418416
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from typing import Any


def _value(analysis: Any, key: str):
    if isinstance(analysis, dict):
        return analysis.get(key, "")
    return getattr(analysis, key, "")


def generate_markdown_report(analysis: Any) -> str:
    lines = [
        f"# Informe de Análisis: {_value(analysis, 'fit_score')}% de ajuste",
        "",
        f"**Decisión:** {_value(analysis, 'decision')}",
        "",
        "## Resumen Ejecutivo",
        _value(analysis, "executive_summary"),
        "",
        "## Requisitos Clave",
    ]
    for req in _value(analysis, "key_requirements") or []:
        lines.append(f"- {req}")
    lines.append("")
    lines.append("## Riesgos")
    for risk in _value(analysis, "risks") or []:
        if isinstance(risk, dict):
            lines.append(f"- **{risk.get('title', 'Riesgo')}** ({risk.get('severity', 'Medium')}): {risk.get('explanation', '')}")
        else:
            lines.append(f"- {str(risk)}")
    lines.append("")
    lines.append("## Brechas de Cumplimiento")
    for gap in _value(analysis, "compliance_gaps") or []:
        lines.append(f"- {str(gap)}")
    lines.append("")
    lines.append("## Plan de Acción")
    for item in _value(analysis, "action_plan") or []:
        if isinstance(item, dict):
            lines.append(
                f"- **{item.get('task', 'Tarea')}** | Prioridad: {item.get('priority', 'Medium')} | Responsable: {item.get('owner', 'Team')} | Tiempo: {item.get('timeline', 'TBD')}"
            )
        else:
            lines.append(f"- {str(item)}")
    lines.append("")
    lines.append("## Borrador de Propuesta")
    lines.append(_value(analysis, "proposal_draft"))
    return "\n".join(lines)