Volver a la wiki

Servicio de Formateo de Reportes Markdown

Descripción

Servicio en monitoring/services/report_service.py que formatea datos de insight en Markdown estructurado para descarga por download_markdown().

Funciones Principales

format_markdown(report_data) -> str

Transforma un dict de generate_report() en string Markdown con secciones:

_code_block(title: str, content_lines: list[str]) -> list[str] (nuevo, sa4 B15)

Construye un bloque de código fenced que es immune a backticks en el contenido.

Antes:

lines += ["", "### Commands", "```"]
lines += rec["commands"]  # Si un comando contiene ```, rompe el fence
lines += ["```"]

Problema: Un comando/output con ``` cerraba el bloque prematuramente.

Ahora:

def _code_block(title, content_lines):
    body = [str(x) for x in content_lines]
    longest = 0
    for line in body:
        run = 0
        for ch in line:
            run = run + 1 if ch == "`" else 0
            longest = max(longest, run)
    fence = "`" * max(3, longest + 1)  # Siempre más larga que cualquier run
    return ["", title, fence, *body, fence]

Beneficio: Incluso si commands/output tienen `````, el fence es aún más largo y mantiene integridad del bloque.

Usos en format_markdown()

if rec["commands"]:
    lines += _code_block("### Commands", rec["commands"])

if rec["rollback_commands"]:
    lines += _code_block("### Rollback Commands", rec["rollback_commands"])

if ex.get("output"):
    lines += _code_block("### Output", [ex["output"]])

Dependencias

Integración

Llamada por:


Véase también

Subir