diff --git a/datos/reddit_sentimiento_frameworks.csv b/datos/reddit_sentimiento_frameworks.csv index d6055ec..70dd7b9 100644 --- a/datos/reddit_sentimiento_frameworks.csv +++ b/datos/reddit_sentimiento_frameworks.csv @@ -1,6 +1,6 @@ framework,total_menciones,positivos,neutros,negativos,% positivo,% neutro,% negativo -Django,2,2,0,0,100.0,0.0,0.0 -FastAPI,4,4,0,0,100.0,0.0,0.0 -Express,19,14,0,5,73.68,0.0,26.32 -Laravel,15,11,0,4,73.33,0.0,26.67 -Spring,3,2,0,1,66.67,0.0,33.33 +Django,3,3,0,0,100.0,0.0,0.0 +FastAPI,3,3,0,0,100.0,0.0,0.0 +Express,21,18,0,3,85.71,0.0,14.29 +Laravel,16,13,0,3,81.25,0.0,18.75 +Spring,2,1,0,1,50.0,0.0,50.0 diff --git a/datos/reddit_temas_emergentes.csv b/datos/reddit_temas_emergentes.csv index be7bf65..f1f8ba1 100644 --- a/datos/reddit_temas_emergentes.csv +++ b/datos/reddit_temas_emergentes.csv @@ -1,11 +1,11 @@ tema,menciones -IA/Machine Learning,138 -Performance,58 -Seguridad,46 -Cloud,41 -DevOps,39 -Testing,30 -TypeScript,21 +IA/Machine Learning,132 +Performance,56 +Cloud,46 +Seguridad,45 +DevOps,36 +Testing,31 Python,21 -Microservicios,7 +TypeScript,19 +Microservicios,13 Web3/Blockchain,6 diff --git a/frontend/assets/data/reddit_interseccion_history.json b/frontend/assets/data/reddit_interseccion_history.json index 61285c6..eacc174 100644 --- a/frontend/assets/data/reddit_interseccion_history.json +++ b/frontend/assets/data/reddit_interseccion_history.json @@ -1,10 +1,10 @@ { - "generated_at_utc": "2026-04-13T05:19:09Z", + "generated_at_utc": "2026-04-20T03:57:26Z", "dataset": "interseccion_github_reddit", "source_mode": "history", - "snapshot_count": 3, - "latest_snapshot_date": "2026-04-13", - "previous_snapshot_date": "2026-04-06", + "snapshot_count": 4, + "latest_snapshot_date": "2026-04-20", + "previous_snapshot_date": "2026-04-13", "coverage_pct": 30.0, "comparable_count": 3, "item_count": 10, @@ -18,9 +18,9 @@ "promedio_rank": 4.0, "direccion": "github_favorece", "rank_github_prev": 1, - "rank_reddit_prev": 8, - "delta_gap": -1, - "trend_direction": "disminuyendo" + "rank_reddit_prev": 7, + "delta_gap": 0, + "trend_direction": "estable" }, { "tecnologia": "TypeScript", @@ -31,9 +31,9 @@ "promedio_rank": 5.0, "direccion": "github_favorece", "rank_github_prev": 2, - "rank_reddit_prev": 7, - "delta_gap": 1, - "trend_direction": "aumentando" + "rank_reddit_prev": 8, + "delta_gap": 0, + "trend_direction": "estable" }, { "tecnologia": "JavaScript", @@ -153,8 +153,8 @@ "brecha_abs": 6, "promedio_rank": 4.0, "direccion": "github_favorece", - "delta_gap": -1, - "trend_direction": "disminuyendo" + "delta_gap": 0, + "trend_direction": "estable" }, "largest_gap_item": { "tecnologia": "TypeScript", @@ -164,8 +164,8 @@ "brecha_abs": 6, "promedio_rank": 5.0, "direccion": "github_favorece", - "delta_gap": 1, - "trend_direction": "aumentando" + "delta_gap": 0, + "trend_direction": "estable" }, "max_brecha_tecnologia": "TypeScript", "max_brecha_abs": 6 @@ -470,6 +470,106 @@ "direccion": "incompleto" } ] + }, + { + "date": "2026-04-20", + "path": "datos/history/interseccion/year=2026/month=04/day=20/interseccion_github_reddit.csv", + "source_type": "history", + "row_count": 10, + "comparable_count": 3, + "coverage_pct": 30.0, + "items": [ + { + "tecnologia": "Python", + "tipo": "Lenguaje", + "ranking_github": 1, + "ranking_reddit": 7, + "brecha_abs": 6, + "promedio_rank": 4.0, + "direccion": "github_favorece" + }, + { + "tecnologia": "TypeScript", + "tipo": "Lenguaje", + "ranking_github": 2, + "ranking_reddit": 8, + "brecha_abs": 6, + "promedio_rank": 5.0, + "direccion": "github_favorece" + }, + { + "tecnologia": "JavaScript", + "tipo": "Lenguaje", + "ranking_github": 4, + "ranking_reddit": 10, + "brecha_abs": 6, + "promedio_rank": 7.0, + "direccion": "github_favorece" + }, + { + "tecnologia": "Angular", + "tipo": "Framework Frontend", + "ranking_github": 2, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + }, + { + "tecnologia": "Go", + "tipo": "Lenguaje", + "ranking_github": 5, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + }, + { + "tecnologia": "Next.js", + "tipo": "Framework Frontend", + "ranking_github": 1, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + }, + { + "tecnologia": "React", + "tipo": "Framework Frontend", + "ranking_github": 3, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + }, + { + "tecnologia": "Sin especificar", + "tipo": "Lenguaje", + "ranking_github": 3, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + }, + { + "tecnologia": "Svelte", + "tipo": "Framework Frontend", + "ranking_github": 4, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + }, + { + "tecnologia": "Vue 3", + "tipo": "Framework Frontend", + "ranking_github": 5, + "ranking_reddit": null, + "brecha_abs": null, + "promedio_rank": null, + "direccion": "incompleto" + } + ] } ] } \ No newline at end of file diff --git a/frontend/assets/data/reddit_sentimiento_frameworks.csv b/frontend/assets/data/reddit_sentimiento_frameworks.csv index d6055ec..70dd7b9 100644 --- a/frontend/assets/data/reddit_sentimiento_frameworks.csv +++ b/frontend/assets/data/reddit_sentimiento_frameworks.csv @@ -1,6 +1,6 @@ framework,total_menciones,positivos,neutros,negativos,% positivo,% neutro,% negativo -Django,2,2,0,0,100.0,0.0,0.0 -FastAPI,4,4,0,0,100.0,0.0,0.0 -Express,19,14,0,5,73.68,0.0,26.32 -Laravel,15,11,0,4,73.33,0.0,26.67 -Spring,3,2,0,1,66.67,0.0,33.33 +Django,3,3,0,0,100.0,0.0,0.0 +FastAPI,3,3,0,0,100.0,0.0,0.0 +Express,21,18,0,3,85.71,0.0,14.29 +Laravel,16,13,0,3,81.25,0.0,18.75 +Spring,2,1,0,1,50.0,0.0,50.0 diff --git a/frontend/assets/data/reddit_sentimiento_public.json b/frontend/assets/data/reddit_sentimiento_public.json index 6417a60..0837cf6 100644 --- a/frontend/assets/data/reddit_sentimiento_public.json +++ b/frontend/assets/data/reddit_sentimiento_public.json @@ -1,15 +1,15 @@ { - "generated_at_utc": "2026-04-13T10:04:17Z", + "generated_at_utc": "2026-04-20T03:57:26Z", "dataset": "reddit_sentimiento_frameworks", "source_mode": "latest", "source_path": "datos/latest/reddit_sentimiento_frameworks.csv", - "source_updated_at_utc": "2026-04-13T10:04:12Z", + "source_updated_at_utc": "2026-04-20T03:57:18Z", "framework_count": 5, "frameworks": [ { - "framework": "FastAPI", - "total_menciones": 4, - "positivos": 4, + "framework": "Django", + "total_menciones": 3, + "positivos": 3, "neutros": 0, "negativos": 0, "porcentaje_positivo": 100.0, @@ -17,9 +17,9 @@ "porcentaje_negativo": 0.0 }, { - "framework": "Django", - "total_menciones": 2, - "positivos": 2, + "framework": "FastAPI", + "total_menciones": 3, + "positivos": 3, "neutros": 0, "negativos": 0, "porcentaje_positivo": 100.0, @@ -28,40 +28,40 @@ }, { "framework": "Express", - "total_menciones": 19, - "positivos": 14, + "total_menciones": 21, + "positivos": 18, "neutros": 0, - "negativos": 5, - "porcentaje_positivo": 73.68, + "negativos": 3, + "porcentaje_positivo": 85.71, "porcentaje_neutro": 0.0, - "porcentaje_negativo": 26.32 + "porcentaje_negativo": 14.29 }, { "framework": "Laravel", - "total_menciones": 15, - "positivos": 11, + "total_menciones": 16, + "positivos": 13, "neutros": 0, - "negativos": 4, - "porcentaje_positivo": 73.33, + "negativos": 3, + "porcentaje_positivo": 81.25, "porcentaje_neutro": 0.0, - "porcentaje_negativo": 26.67 + "porcentaje_negativo": 18.75 }, { "framework": "Spring", - "total_menciones": 3, - "positivos": 2, + "total_menciones": 2, + "positivos": 1, "neutros": 0, "negativos": 1, - "porcentaje_positivo": 66.67, + "porcentaje_positivo": 50.0, "porcentaje_neutro": 0.0, - "porcentaje_negativo": 33.33 + "porcentaje_negativo": 50.0 } ], "summary": { "positive_leader": { "framework": "FastAPI", - "total_menciones": 4, - "positivos": 4, + "total_menciones": 3, + "positivos": 3, "neutros": 0, "negativos": 0, "porcentaje_positivo": 100.0, @@ -70,25 +70,25 @@ }, "largest_sample": { "framework": "Express", - "total_menciones": 19, - "positivos": 14, + "total_menciones": 21, + "positivos": 18, "neutros": 0, - "negativos": 5, - "porcentaje_positivo": 73.68, + "negativos": 3, + "porcentaje_positivo": 85.71, "porcentaje_neutro": 0.0, - "porcentaje_negativo": 26.32 + "porcentaje_negativo": 14.29 }, "negative_leader": { "framework": "Spring", - "total_menciones": 3, - "positivos": 2, + "total_menciones": 2, + "positivos": 1, "neutros": 0, "negativos": 1, - "porcentaje_positivo": 66.67, + "porcentaje_positivo": 50.0, "porcentaje_neutro": 0.0, - "porcentaje_negativo": 33.33 + "porcentaje_negativo": 50.0 }, "framework_count": 5, - "total_menciones": 43 + "total_menciones": 45 } } \ No newline at end of file diff --git a/frontend/assets/data/reddit_temas_emergentes.csv b/frontend/assets/data/reddit_temas_emergentes.csv index be7bf65..f1f8ba1 100644 --- a/frontend/assets/data/reddit_temas_emergentes.csv +++ b/frontend/assets/data/reddit_temas_emergentes.csv @@ -1,11 +1,11 @@ tema,menciones -IA/Machine Learning,138 -Performance,58 -Seguridad,46 -Cloud,41 -DevOps,39 -Testing,30 -TypeScript,21 +IA/Machine Learning,132 +Performance,56 +Cloud,46 +Seguridad,45 +DevOps,36 +Testing,31 Python,21 -Microservicios,7 +TypeScript,19 +Microservicios,13 Web3/Blockchain,6 diff --git a/frontend/assets/data/reddit_temas_history.json b/frontend/assets/data/reddit_temas_history.json index cb2f6f7..1e6df25 100644 --- a/frontend/assets/data/reddit_temas_history.json +++ b/frontend/assets/data/reddit_temas_history.json @@ -1,58 +1,58 @@ { - "generated_at_utc": "2026-04-13T05:43:52Z", + "generated_at_utc": "2026-04-20T03:57:26Z", "dataset": "reddit_temas_emergentes", "source_mode": "history", - "snapshot_count": 3, - "latest_snapshot_date": "2026-04-13", - "previous_snapshot_date": "2026-04-06", + "snapshot_count": 4, + "latest_snapshot_date": "2026-04-20", + "previous_snapshot_date": "2026-04-13", "topic_count": 10, "summary": { "leader_topic": { "tema": "IA/Machine Learning", - "menciones": 138, - "menciones_previas": 142, - "delta_menciones": -4, - "growth_pct": -2.82, + "menciones": 132, + "menciones_previas": 138, + "delta_menciones": -6, + "growth_pct": -4.35, "trend_direction": "cayendo" }, "highest_growth_topic": { - "tema": "Cloud", - "menciones": 41, - "menciones_previas": 31, - "delta_menciones": 10, - "growth_pct": 32.26, + "tema": "Microservicios", + "menciones": 13, + "menciones_previas": 7, + "delta_menciones": 6, + "growth_pct": 85.71, "trend_direction": "creciendo" }, "largest_drop_topic": { "tema": "IA/Machine Learning", - "menciones": 138, - "menciones_previas": 142, - "delta_menciones": -4, - "growth_pct": -2.82, + "menciones": 132, + "menciones_previas": 138, + "delta_menciones": -6, + "growth_pct": -4.35, "trend_direction": "cayendo" }, - "total_menciones": 407, + "total_menciones": 405, "topic_count": 10 }, "latest_topics": [ { "tema": "IA/Machine Learning", - "menciones": 138, - "menciones_previas": 142, - "delta_menciones": -4, - "growth_pct": -2.82, + "menciones": 132, + "menciones_previas": 138, + "delta_menciones": -6, + "growth_pct": -4.35, "trend_direction": "cayendo" }, { "tema": "Performance", - "menciones": 58, - "menciones_previas": 50, - "delta_menciones": 8, - "growth_pct": 16.0, - "trend_direction": "creciendo" + "menciones": 56, + "menciones_previas": 58, + "delta_menciones": -2, + "growth_pct": -3.45, + "trend_direction": "cayendo" }, { - "tema": "Seguridad", + "tema": "Cloud", "menciones": 46, "menciones_previas": 41, "delta_menciones": 5, @@ -60,60 +60,60 @@ "trend_direction": "creciendo" }, { - "tema": "Cloud", - "menciones": 41, - "menciones_previas": 31, - "delta_menciones": 10, - "growth_pct": 32.26, - "trend_direction": "creciendo" + "tema": "Seguridad", + "menciones": 45, + "menciones_previas": 46, + "delta_menciones": -1, + "growth_pct": -2.17, + "trend_direction": "cayendo" }, { "tema": "DevOps", - "menciones": 39, - "menciones_previas": 33, - "delta_menciones": 6, - "growth_pct": 18.18, - "trend_direction": "creciendo" + "menciones": 36, + "menciones_previas": 39, + "delta_menciones": -3, + "growth_pct": -7.69, + "trend_direction": "cayendo" }, { "tema": "Testing", - "menciones": 30, - "menciones_previas": 21, - "delta_menciones": 9, - "growth_pct": 42.86, + "menciones": 31, + "menciones_previas": 30, + "delta_menciones": 1, + "growth_pct": 3.33, "trend_direction": "creciendo" }, { "tema": "Python", "menciones": 21, - "menciones_previas": 11, - "delta_menciones": 10, - "growth_pct": 90.91, - "trend_direction": "creciendo" + "menciones_previas": 21, + "delta_menciones": 0, + "growth_pct": 0.0, + "trend_direction": "estable" }, { "tema": "TypeScript", - "menciones": 21, - "menciones_previas": 18, - "delta_menciones": 3, - "growth_pct": 16.67, - "trend_direction": "creciendo" + "menciones": 19, + "menciones_previas": 21, + "delta_menciones": -2, + "growth_pct": -9.52, + "trend_direction": "cayendo" }, { "tema": "Microservicios", - "menciones": 7, - "menciones_previas": 5, - "delta_menciones": 2, - "growth_pct": 40.0, + "menciones": 13, + "menciones_previas": 7, + "delta_menciones": 6, + "growth_pct": 85.71, "trend_direction": "creciendo" }, { "tema": "Web3/Blockchain", "menciones": 6, - "menciones_previas": 5, - "delta_menciones": 1, - "growth_pct": 20.0, - "trend_direction": "creciendo" + "menciones_previas": 6, + "delta_menciones": 0, + "growth_pct": 0.0, + "trend_direction": "estable" } ], "snapshots": [ @@ -293,6 +293,65 @@ "participacion_pct": 1.47 } ] + }, + { + "date": "2026-04-20", + "path": "datos/history/reddit_temas/year=2026/month=04/day=20/reddit_temas_emergentes.csv", + "source_type": "history", + "row_count": 10, + "total_menciones": 405, + "top_topics": [ + { + "tema": "IA/Machine Learning", + "menciones": 132, + "participacion_pct": 32.59 + }, + { + "tema": "Performance", + "menciones": 56, + "participacion_pct": 13.83 + }, + { + "tema": "Cloud", + "menciones": 46, + "participacion_pct": 11.36 + }, + { + "tema": "Seguridad", + "menciones": 45, + "participacion_pct": 11.11 + }, + { + "tema": "DevOps", + "menciones": 36, + "participacion_pct": 8.89 + }, + { + "tema": "Testing", + "menciones": 31, + "participacion_pct": 7.65 + }, + { + "tema": "Python", + "menciones": 21, + "participacion_pct": 5.19 + }, + { + "tema": "TypeScript", + "menciones": 19, + "participacion_pct": 4.69 + }, + { + "tema": "Microservicios", + "menciones": 13, + "participacion_pct": 3.21 + }, + { + "tema": "Web3/Blockchain", + "menciones": 6, + "participacion_pct": 1.48 + } + ] } ], "series": [ @@ -313,6 +372,11 @@ "date": "2026-04-13", "menciones": 138, "participacion_pct": 33.91 + }, + { + "date": "2026-04-20", + "menciones": 132, + "participacion_pct": 32.59 } ] }, @@ -333,46 +397,61 @@ "date": "2026-04-13", "menciones": 58, "participacion_pct": 14.25 + }, + { + "date": "2026-04-20", + "menciones": 56, + "participacion_pct": 13.83 } ] }, { - "tema": "Seguridad", + "tema": "Cloud", "points": [ { "date": "2026-03-30", - "menciones": 41, - "participacion_pct": 10.96 + "menciones": 27, + "participacion_pct": 7.22 }, { "date": "2026-04-06", - "menciones": 41, - "participacion_pct": 11.48 + "menciones": 31, + "participacion_pct": 8.68 }, { "date": "2026-04-13", + "menciones": 41, + "participacion_pct": 10.07 + }, + { + "date": "2026-04-20", "menciones": 46, - "participacion_pct": 11.3 + "participacion_pct": 11.36 } ] }, { - "tema": "Cloud", + "tema": "Seguridad", "points": [ { "date": "2026-03-30", - "menciones": 27, - "participacion_pct": 7.22 + "menciones": 41, + "participacion_pct": 10.96 }, { "date": "2026-04-06", - "menciones": 31, - "participacion_pct": 8.68 + "menciones": 41, + "participacion_pct": 11.48 }, { "date": "2026-04-13", - "menciones": 41, - "participacion_pct": 10.07 + "menciones": 46, + "participacion_pct": 11.3 + }, + { + "date": "2026-04-20", + "menciones": 45, + "participacion_pct": 11.11 } ] }, @@ -393,6 +472,11 @@ "date": "2026-04-13", "menciones": 39, "participacion_pct": 9.58 + }, + { + "date": "2026-04-20", + "menciones": 36, + "participacion_pct": 8.89 } ] }, @@ -413,6 +497,11 @@ "date": "2026-04-13", "menciones": 30, "participacion_pct": 7.37 + }, + { + "date": "2026-04-20", + "menciones": 31, + "participacion_pct": 7.65 } ] }, @@ -433,6 +522,11 @@ "date": "2026-04-13", "menciones": 21, "participacion_pct": 5.16 + }, + { + "date": "2026-04-20", + "menciones": 21, + "participacion_pct": 5.19 } ] }, @@ -453,6 +547,11 @@ "date": "2026-04-13", "menciones": 21, "participacion_pct": 5.16 + }, + { + "date": "2026-04-20", + "menciones": 19, + "participacion_pct": 4.69 } ] }, @@ -473,6 +572,11 @@ "date": "2026-04-13", "menciones": 7, "participacion_pct": 1.72 + }, + { + "date": "2026-04-20", + "menciones": 13, + "participacion_pct": 3.21 } ] }, @@ -493,6 +597,11 @@ "date": "2026-04-13", "menciones": 6, "participacion_pct": 1.47 + }, + { + "date": "2026-04-20", + "menciones": 6, + "participacion_pct": 1.48 } ] }