docs: mejorar transparencia del PR con listas detalladas de enlaces y rango temporal

This commit is contained in:
Nubenetes Bot
2026-05-08 18:56:17 +02:00
parent 10ee761d86
commit 1ef7ddc3be
2 changed files with 51 additions and 10 deletions
+20 -6
View File
@@ -36,22 +36,36 @@ class RepositoryController:
# Informe Visual en el PR
categories_str = ", ".join([f"`{c}`" for c in metrics.get('categories', [])])
# Detalle de enlaces añadidos
added_md = ""
if metrics.get('added_list'):
added_md = "### Enlaces Añadidos\n| Recurso | Categoría | URL |\n| :--- | :--- | :--- |\n"
for item in metrics['added_list']:
added_md += f"| {item['title']} | `{item['category']}` | {item['url']} |\n"
# Detalle de curación/borrado
removed_md = ""
if metrics.get('removed_list'):
removed_md = "### 🧹 Curación y Limpieza (Duplicados)\n| Categoría | Acción |\n| :--- | :--- |\n"
for item in metrics['removed_list']:
removed_md += f"| `{item['category']}` | {item['reason']} |\n"
pr_narrative = (
f"## 💎 Actualización de Conocimiento: Kubernetes & Cloud Native\n\n"
f"Este PR añade **{metrics.get('total_new', 0)}** nuevos recursos y optimiza los existentes.\n\n"
f"### ✅ Mejoras realizadas:\n"
f"- **Inyección de Novedades**: Nuevos recursos filtrados desde X y Trending.\n"
f"- **Optimización de Duplicados**: Se han detectado URLs repetidas y el bot ha elegido mantener la versión con **más estrellas (🌟)** y **mejor descripción**, eliminando las versiones redundantes más pobres.\n\n"
f"### 📊 Resumen de Ingesta:\n"
f"**Rango Temporal Analizado:** `{metrics.get('start_date')}` ➔ `{metrics.get('end_date')}`\n\n"
f"### ✅ Resumen de Ingesta:\n"
f"```mermaid\n"
f"pie title Origen de los Nuevos Recursos\n"
f"pie title Origen de los Recursos\n"
f" \"X (@nubenetes)\" : {metrics.get('social_injections', 0)}\n"
f" \"GitHub Trending\" : {metrics.get('trending_injections', 0)}\n"
f"```\n\n"
f"{added_md}\n"
f"{removed_md}\n"
f"### 📂 Categorías Impactadas:\n"
f"{categories_str}\n\n"
f"---\n"
f"**Nota del Bot:** El bot ya no borra enlaces por falta de respuesta del servidor (salud), solo optimiza el contenido duplicado basándose en la calidad del texto y las menciones destacadas."
f"**Nota del Bot:** El bot utiliza heurísticas de calidad para decidir qué duplicados mantener (estrellas 🌟 y longitud de descripción)."
)
self.repository.create_pull(
+31 -4
View File
@@ -50,7 +50,14 @@ async def master_orchestrator():
# 4. Inyección en Markdowns
file_updates = {}
stats = {"new_links": 0, "categories_updated": set()}
stats = {
"new_links": 0,
"categories_updated": set(),
"added_details": [], # Lista de {title, url, category}
"removed_details": [], # Lista de {url, category, reason}
"time_horizon": time_horizon.isoformat(),
"end_date": datetime.now(MADRID_TZ).isoformat()
}
for category in NUBENETES_CATEGORIES:
file_path = f"docs/{category}.md"
@@ -59,15 +66,31 @@ async def master_orchestrator():
content = repo_file.decoded_content.decode("utf-8")
# Limpiamos solo duplicados existentes para mantener higiene
final_content, _ = await markdown_sanitizer.sanitize_document(content)
final_content, doc_stats = await markdown_sanitizer.sanitize_document(content)
# Registrar duplicados eliminados (curación)
if doc_stats.get("duplicates", 0) > 0:
# Nota: markdown_sanitizer no devuelve qué URLs borró exactamente,
# pero podemos inferir que hubo limpieza de calidad.
stats["removed_details"].append({
"category": category,
"reason": "Optimización de duplicados (mejor calidad mantenida)"
})
# Inyectar novedades
original_content = final_content
for asset in all_new_assets:
if asset["category"] == category:
prev_len = len(final_content)
final_content = markdown_sanitizer.inject_curated_link(
final_content, category, asset["title"], asset["url"], asset["description"]
)
if len(final_content) > prev_len:
stats["added_details"].append({
"title": asset["title"],
"url": asset["url"],
"category": category
})
if final_content.strip() != original_content.strip():
file_updates[file_path] = final_content
@@ -76,13 +99,17 @@ async def master_orchestrator():
except Exception:
continue
# 5. GitOps - Generar Informe Mermaid en el PR
# 5. GitOps - Generar Informe Detallado en el PR
if file_updates:
metrics = {
"social_injections": len(curated),
"trending_injections": len(trending),
"total_new": stats["new_links"],
"categories": list(stats["categories_updated"])
"categories": list(stats["categories_updated"]),
"added_list": stats["added_details"],
"removed_list": stats["removed_details"],
"start_date": stats["time_horizon"],
"end_date": stats["end_date"]
}
print(f"[+] Éxito. Preparando PR con {stats['new_links']} nuevos recursos.")