{% extends "base.html" %} {% block title %}Panel Audytu IT - Norda Biznes Partner{% endblock %} {% block extra_css %} {% endblock %} {% block content %}

Panel Audytu IT

Przeglad infrastruktury IT i potencjalu wspolpracy firm czlonkowskich

Dane z formularzy Audytu IT wypelnionych przez czlonkow Norda Biznes
Nowy audyt Eksport
{{ stats.total_audits }} Przeprowadzonych audytow z {{ stats.total_companies }} firm
{{ stats.avg_overall_score|default('-', true) }}{% if stats.avg_overall_score %}/100{% endif %} Sredni wynik ogolny
{{ stats.avg_security_score|default('-', true) }}{% if stats.avg_security_score %}/100{% endif %} Sredni wynik bezpieczenstwa
{{ stats.avg_collaboration_score|default('-', true) }}{% if stats.avg_collaboration_score %}/100{% endif %} Sredni wynik wspolpracy
{{ stats.companies_without_audit }} Firm bez audytu

Poziom dojrzalosci IT

{% if stats.total_audits > 0 %}
{{ stats.maturity_basic }}
Podstawowy
< 40 pkt
{{ stats.maturity_developing }}
Rozwijajacy sie
40-59 pkt
{{ stats.maturity_established }}
Ugruntowany
60-79 pkt
{{ stats.maturity_advanced }}
Zaawansowany
≥ 80 pkt
{% else %}

Brak danych o poziomie dojrzalosci. Wypelnij pierwszy audyt IT.

{% endif %}

Statystyki technologii

{% if stats.total_audits > 0 %}
{{ stats.has_azure_ad }}
Azure AD / Entra ID
{{ stats.has_m365 }}
Microsoft 365
{{ stats.has_proxmox_pbs }}
Proxmox Backup Server
{{ stats.has_zabbix }}
Zabbix Monitoring
{{ stats.has_edr }}
EDR / XDR
{{ stats.has_dr_plan }}
Plan DR
{% else %}

Brak danych o technologiach. Wypelnij pierwszy audyt IT.

{% endif %}

Gotowość do wspolpracy

{% if stats.total_audits > 0 %}
Wspoldzielone licencje
{{ stats.open_to_shared_licensing }}
Replikacja backupow
{{ stats.open_to_backup_replication }}
Federacja Teams
{{ stats.open_to_teams_federation }}
Wspolny monitoring
{{ stats.open_to_shared_monitoring }}
Zakupy grupowe
{{ stats.open_to_collective_purchasing }}
Wymiana wiedzy
{{ stats.open_to_knowledge_sharing }}
{% else %}

Brak danych o gotowosci do wspolpracy. Wypelnij pierwszy audyt IT.

{% endif %}

Macierz wspolpracy

{% if collaboration_matches %}
{% set m365_matches = collaboration_matches|selectattr('match_type', 'equalto', 'shared_licensing')|list %} {% if m365_matches %}

Wspoldzielone licencje M365 {{ m365_matches|length }}

{% for match in m365_matches %} {% endfor %}
{% endif %} {% set backup_matches = collaboration_matches|selectattr('match_type', 'equalto', 'backup_replication')|list %} {% if backup_matches %}

Replikacja backupow {{ backup_matches|length }}

{% for match in backup_matches %} {% endfor %}
{% endif %} {% set teams_matches = collaboration_matches|selectattr('match_type', 'equalto', 'teams_federation')|list %} {% if teams_matches %}

Federacja Teams {{ teams_matches|length }}

{% for match in teams_matches %} {% endfor %}
{% endif %} {% set monitoring_matches = collaboration_matches|selectattr('match_type', 'equalto', 'shared_monitoring')|list %} {% if monitoring_matches %}

Wspolny monitoring {{ monitoring_matches|length }}

{% for match in monitoring_matches %} {% endfor %}
{% endif %} {% set purchasing_matches = collaboration_matches|selectattr('match_type', 'equalto', 'collective_purchasing')|list %} {% if purchasing_matches %}

Zakupy grupowe {{ purchasing_matches|length }}

{% for match in purchasing_matches %} {% endfor %}
{% endif %} {% set knowledge_matches = collaboration_matches|selectattr('match_type', 'equalto', 'knowledge_sharing')|list %} {% if knowledge_matches %}

Wymiana wiedzy {{ knowledge_matches|length }}

{% for match in knowledge_matches %} {% endfor %}
{% endif %}
{% else %}

Brak dopasowan wspolpracy

Dopasowania pojawia sie automatycznie, gdy firmy z podobna infrastruktura IT wypelnia audyty.

{% endif %}

Lista firm

80-100 (dobry)
40-79 (sredni)
0-39 (slaby)
{% if companies %}
{% for company in companies %} {# company object has flat audit data (overall_score, security_score, etc.) directly on it #} {% set has_audit = company.overall_score is not none %} {% set maturity_level = 'none' %} {% if has_audit %} {% if company.overall_score < 40 %} {% set maturity_level = 'basic' %} {% elif company.overall_score < 60 %} {% set maturity_level = 'developing' %} {% elif company.overall_score < 80 %} {% set maturity_level = 'established' %} {% else %} {% set maturity_level = 'advanced' %} {% endif %} {% endif %} {% endfor %}
Firma Wynik ogolny Bezpieczenstwo Wspolpraca Dojrzalosc Technologie Akcje
{{ company.name }} {% if has_audit %} {{ company.overall_score }} {% else %} Brak audytu {% endif %} {% if has_audit %} {{ company.security_score }} {% else %} - {% endif %} {% if has_audit %} {{ company.collaboration_score }} {% else %} - {% endif %} {% if has_audit %} {% if maturity_level == 'basic' %}Podstawowy {% elif maturity_level == 'developing' %}Rozwijający {% elif maturity_level == 'established' %}Ugruntowany {% elif maturity_level == 'advanced' %}Zaawansowany {% endif %} {% else %} Brak audytu {% endif %} {% if has_audit %}
Az M3 PB Zb ED DR
{% else %} - {% endif %}
{% if current_user.can_access_admin_panel() %} {% if has_audit %} {% else %} {% endif %} {% endif %}
{% else %}

Brak firm do wyswietlenia

Nie znaleziono firm z danymi audytu IT.

{% endif %}
{% endblock %} {% block extra_js %} // Sorting state let currentSort = { column: 'overall', direction: 'desc' }; // Sort table function sortTable(column) { const tbody = document.getElementById('auditTableBody'); if (!tbody) return; const rows = Array.from(tbody.querySelectorAll('tr')); const headers = document.querySelectorAll('.audit-table th[data-sort]'); // Toggle direction if same column if (currentSort.column === column) { currentSort.direction = currentSort.direction === 'asc' ? 'desc' : 'asc'; } else { currentSort.column = column; currentSort.direction = 'desc'; } // Update header classes headers.forEach(h => { h.classList.remove('sorted', 'sorted-asc', 'sorted-desc'); if (h.dataset.sort === column) { h.classList.add('sorted', 'sorted-' + currentSort.direction); } }); // Maturity order for sorting const maturityOrder = { 'none': 0, 'basic': 1, 'developing': 2, 'established': 3, 'advanced': 4 }; // Sort rows rows.sort((a, b) => { let aVal, bVal; if (column === 'name') { aVal = a.dataset.name || ''; bVal = b.dataset.name || ''; } else if (column === 'maturity') { aVal = maturityOrder[a.dataset.maturity] || 0; bVal = maturityOrder[b.dataset.maturity] || 0; } else { aVal = parseFloat(a.dataset[column]) || -1; bVal = parseFloat(b.dataset[column]) || -1; } if (aVal < bVal) return currentSort.direction === 'asc' ? -1 : 1; if (aVal > bVal) return currentSort.direction === 'asc' ? 1 : -1; return 0; }); // Re-append rows rows.forEach(row => tbody.appendChild(row)); } // Setup sorting click handlers document.querySelectorAll('.audit-table th[data-sort]').forEach(th => { th.addEventListener('click', () => sortTable(th.dataset.sort)); }); // Filtering function applyFilters() { const maturity = document.getElementById('filterMaturity').value; const score = document.getElementById('filterScore').value; const search = document.getElementById('filterSearch').value.toLowerCase(); const rows = document.querySelectorAll('#auditTableBody tr'); rows.forEach(row => { let show = true; // Maturity filter if (maturity && row.dataset.maturity !== maturity) { show = false; } // Score filter if (score && show) { const overallScore = parseFloat(row.dataset.overall); if (score === 'good' && (overallScore < 80 || overallScore < 0)) show = false; else if (score === 'medium' && (overallScore < 40 || overallScore >= 80)) show = false; else if (score === 'poor' && (overallScore < 0 || overallScore >= 40)) show = false; else if (score === 'none' && overallScore >= 0) show = false; } // Search filter if (search && show) { if (!row.dataset.name.includes(search)) { show = false; } } row.style.display = show ? '' : 'none'; }); } function resetFilters() { document.getElementById('filterMaturity').value = ''; document.getElementById('filterScore').value = ''; document.getElementById('filterSearch').value = ''; applyFilters(); } {% endblock %}