diff --git a/pxy_dashboard/apps/views.py b/pxy_dashboard/apps/views.py index 475106a..1e5209f 100644 --- a/pxy_dashboard/apps/views.py +++ b/pxy_dashboard/apps/views.py @@ -10,6 +10,8 @@ from django.utils import timezone from datetime import timedelta import json from pxy_whatsapp.models import Message, WhatsAppBot +from datetime import timedelta +from django.db.models import Count logger = logging.getLogger(__name__) @@ -407,3 +409,63 @@ def apps_telegram_bot(request): 'bots_info': bots_info, 'weekly_data_json': json.dumps(weekly_data), }) + + + + +from pxy_meta_pages.models import FacebookPageAssistant, FacebookEvent + +@login_required +def apps_facebook_pages_bot(request): + """ + Dashboard de Facebook Pages Bots: + - KPIs de páginas y eventos (comentarios/compartidos). + - Tabla de bots configurados. + - Scatter semanal de eventos por página. + """ + # — KPIs básicos — + total_pages = FacebookPageAssistant.objects.count() + total_events = FacebookEvent.objects.count() + total_comments = FacebookEvent.objects.filter(event_type__code="comment").count() + total_shares = FacebookEvent.objects.filter(event_type__code="share").count() + + stats = { + "total_pages": total_pages, + "total_events": total_events, + "comments": total_comments, + "shares": total_shares, + } + + # — Información de cada bot — + bots_info = [] + for bot in FacebookPageAssistant.objects.all(): + bots_info.append({ + "page_name": bot.page_name, + "page_id": bot.page_id, + "assistant": bot.assistant.name, + "is_subscribed": bot.is_subscribed, + "created_at": bot.created_at.strftime("%Y-%m-%d"), + }) + + # — Datos semanales: contar eventos por día y por página — + today = timezone.now().date() + start_date = today - timedelta(days=6) + weekly_data = {} + for bot in FacebookPageAssistant.objects.all(): + series = [] + for i in range(7): + day = start_date + timedelta(days=i) + cnt = FacebookEvent.objects.filter( + page=bot, + timestamp__date=day + ).count() + series.append({"x": day.strftime("%Y-%m-%d"), "y": cnt}) + weekly_data[bot.page_name] = series + + return render(request, + "pxy_dashboard/apps/apps-facebook-pages-bot.html", + { + "stats": stats, + "bots_info": bots_info, + "weekly_data_json": json.dumps(weekly_data), + }) diff --git a/pxy_dashboard/templates/pxy_dashboard/apps/apps-facebook-pages-bot.html b/pxy_dashboard/templates/pxy_dashboard/apps/apps-facebook-pages-bot.html index e599fda..24c16de 100644 --- a/pxy_dashboard/templates/pxy_dashboard/apps/apps-facebook-pages-bot.html +++ b/pxy_dashboard/templates/pxy_dashboard/apps/apps-facebook-pages-bot.html @@ -1,5 +1,113 @@ {% extends "pxy_dashboard/partials/base.html" %} +{% load static %} + {% block content %} -

Facebook Pages Bot

-

This is a placeholder page for apps-facebook-pages-bot.html

+ {% include "pxy_dashboard/partials/dashboard/kpi_row.html" %} + + +
+
+
+
+

{{ stats.total_pages|default:"–" }}

+

Páginas registradas

+
+
+
+
+
+
+

{{ stats.total_events|default:"–" }}

+

Eventos totales

+
+
+
+
+
+
+

{{ stats.comments|default:"–" }}

+

Comentarios

+
+
+
+
+
+
+

{{ stats.shares|default:"–" }}

+

Compartidos

+
+
+
+
+ + +
+
Bots de Facebook Pages
+
+
+ + + + + + + + + + + + {% for bot in bots_info %} + + + + + + + + {% empty %} + + + + {% endfor %} + +
PáginaID de PáginaAsistente AISuscritoCreado
{{ bot.page_name }}{{ bot.page_id }}{{ bot.assistant }} + {% if bot.is_subscribed %} + + {% else %} + No + {% endif %} + {{ bot.created_at }}
+ No hay bots configurados +
+
+
+
+ + +
+
Eventos Semanales por Página
+
+
+
+
+{% endblock %} + +{% block extra_js %} + + {% endblock %}