mirror of
https://github.com/nubenetes/awesome-kubernetes.git
synced 2026-08-19 04:16:26 +00:00
docs: mejorar transparencia del PR con listas detalladas de enlaces y rango temporal
This commit is contained in:
+20
-6
@@ -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
@@ -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.")
|
||||
|
||||
Reference in New Issue
Block a user