diff --git a/blueprints/__init__.py b/blueprints/__init__.py index 890701f..e96de3f 100644 --- a/blueprints/__init__.py +++ b/blueprints/__init__.py @@ -330,7 +330,6 @@ def register_blueprints(app): 'admin_status': 'admin.admin_status', 'admin_health': 'admin.admin_health', # Social Media (Phase 6.2e) - 'admin_social_media': 'admin.admin_social_media', 'admin_social_audit': 'admin.admin_social_audit', # Digital Maturity & KRS Audit (Phase 6.2f) 'digital_maturity_dashboard': 'admin.digital_maturity_dashboard', diff --git a/blueprints/admin/routes_social.py b/blueprints/admin/routes_social.py index 9a7283f..7957c55 100644 --- a/blueprints/admin/routes_social.py +++ b/blueprints/admin/routes_social.py @@ -181,98 +181,6 @@ def _compute_social_health_score(platform_details): # ============================================================ # SOCIAL MEDIA ANALYTICS DASHBOARD -# ============================================================ - -@bp.route('/social-media') -@login_required -@role_required(SystemRole.OFFICE_MANAGER) -def admin_social_media(): - """Admin dashboard for social media analytics""" - db = SessionLocal() - try: - # Total counts per platform - platform_stats = db.query( - CompanySocialMedia.platform, - func.count(CompanySocialMedia.id).label('count'), - func.count(distinct(CompanySocialMedia.company_id)).label('companies') - ).filter( - CompanySocialMedia.is_valid == True - ).group_by(CompanySocialMedia.platform).all() - - # Companies with each platform combination - company_platforms = db.query( - Company.id, - Company.name, - Company.slug, - func.array_agg(distinct(CompanySocialMedia.platform)).label('platforms') - ).outerjoin( - CompanySocialMedia, - (Company.id == CompanySocialMedia.company_id) & (CompanySocialMedia.is_valid == True) - ).group_by(Company.id, Company.name, Company.slug).all() - - # Analysis - total_companies = len(company_platforms) - companies_with_sm = [c for c in company_platforms if c.platforms and c.platforms[0] is not None] - companies_without_sm = [c for c in company_platforms if not c.platforms or c.platforms[0] is None] - - # Platform combinations - platform_combos_raw = {} - for c in companies_with_sm: - platforms = sorted([p for p in c.platforms if p]) if c.platforms else [] - key = ', '.join(platforms) if platforms else 'Brak' - if key not in platform_combos_raw: - platform_combos_raw[key] = [] - platform_combos_raw[key].append({'id': c.id, 'name': c.name, 'slug': c.slug}) - - # Sort by number of companies (descending) - platform_combos = dict(sorted(platform_combos_raw.items(), key=lambda x: len(x[1]), reverse=True)) - - # Only Facebook - only_facebook = [c for c in companies_with_sm if set(c.platforms) == {'facebook'}] - # Only LinkedIn - only_linkedin = [c for c in companies_with_sm if set(c.platforms) == {'linkedin'}] - # Only Instagram - only_instagram = [c for c in companies_with_sm if set(c.platforms) == {'instagram'}] - # Has all major (FB + LI + IG) - has_all_major = [c for c in companies_with_sm if {'facebook', 'linkedin', 'instagram'}.issubset(set(c.platforms or []))] - - # Get all social media entries with company info for detailed view - all_entries = db.query( - CompanySocialMedia, - Company.name.label('company_name'), - Company.slug.label('company_slug') - ).join(Company).order_by( - Company.name, CompanySocialMedia.platform - ).all() - - # Freshness analysis - now = datetime.now() - fresh_30d = db.query(func.count(CompanySocialMedia.id)).filter( - CompanySocialMedia.verified_at >= now - timedelta(days=30) - ).scalar() - stale_90d = db.query(func.count(CompanySocialMedia.id)).filter( - CompanySocialMedia.verified_at < now - timedelta(days=90) - ).scalar() - - return render_template('admin/social_media.html', - platform_stats=platform_stats, - total_companies=total_companies, - companies_with_sm=len(companies_with_sm), - companies_without_sm=companies_without_sm, - platform_combos=platform_combos, - only_facebook=only_facebook, - only_linkedin=only_linkedin, - only_instagram=only_instagram, - has_all_major=has_all_major, - all_entries=all_entries, - fresh_30d=fresh_30d, - stale_90d=stale_90d, - now=now - ) - finally: - db.close() - - # ============================================================ # SOCIAL MEDIA AUDIT DASHBOARD # ============================================================ diff --git a/blueprints/admin/routes_status.py b/blueprints/admin/routes_status.py index 155fb62..f3f05da 100644 --- a/blueprints/admin/routes_status.py +++ b/blueprints/admin/routes_status.py @@ -637,7 +637,7 @@ def admin_health(): ('/health', 'Health check', 'api'), ('/admin/security', 'Bezpieczeństwo', 'admin'), ('/admin/seo', 'SEO Audit', 'admin'), - ('/admin/social-media', 'Social Media', 'admin'), + ('/admin/social-audit', 'Audyt social media', 'admin'), ('/admin/analytics', 'Analityka', 'admin'), ('/admin/forum', 'Forum', 'admin'), ('/admin/kalendarz', 'Kalendarz', 'admin'), diff --git a/templates/admin/social_audit_dashboard.html b/templates/admin/social_audit_dashboard.html index 6806e8e..121344d 100644 --- a/templates/admin/social_audit_dashboard.html +++ b/templates/admin/social_audit_dashboard.html @@ -524,12 +524,6 @@ Uruchom audyt - - - Szczegóły - diff --git a/templates/admin/social_media.html b/templates/admin/social_media.html deleted file mode 100755 index 45211cc..0000000 --- a/templates/admin/social_media.html +++ /dev/null @@ -1,537 +0,0 @@ -{% extends "base.html" %} - -{% block title %}Social Media Analytics - Norda Biznes Partner{% endblock %} - -{% block extra_css %} - -{% endblock %} - -{% block content %} -
Pelny przeglad kont social media firm czlonkowskich
-Te firmy wymagaja uzupelnienia danych o kontach social media.
-| Firma | -Platforma | -URL | -Zrodlo | -Zweryfikowano | -Status | -
|---|---|---|---|---|---|
| {{ entry.company_name }} | -{{ sm.platform|upper }} | -{{ sm.url[:50] }}{% if sm.url|length > 50 %}...{% endif %} | -{{ sm.source or '-' }} | -- {% set days_ago = (now - sm.verified_at).days if sm.verified_at else 999 %} - - {{ sm.verified_at.strftime('%Y-%m-%d') if sm.verified_at else '-' }} - | -- {% if sm.check_status == 'needs_verification' %} - Do weryfikacji - {% elif not sm.is_valid %} - Nieaktywny - {% else %} - OK - {% endif %} - | -