{% extends "network/base.html" %} {% block title %}Project Portfolio — Network Design Canvas{% endblock %} {% block content %}
{{ portfolio.total_projects }}
Projects
{{ portfolio.by_status.get('deployed', 0) }}
Deployed
{{ portfolio.by_status.get('in_review', 0) }}
In Review
${{ portfolio.total_cost|round(0)|int }}/mo
Total Circuit Cost
{{ portfolio.total_findings }}
Open Findings
{% set statuses = ['draft', 'in_review', 'approved', 'deployed', 'archived'] %} {% set status_labels = {'draft': 'Draft', 'in_review': 'In Review', 'approved': 'Approved', 'deployed': 'Deployed', 'archived': 'Archived'} %} {% set status_colors = {'draft': '#7a8cb0', 'in_review': '#f39c12', 'approved': '#27ae60', 'deployed': '#3498db', 'archived': '#555'} %} {% for status in statuses %}
{{ status_labels[status] }} {{ projects|selectattr('status', 'equalto', status)|list|length }}
{% for p in projects if p.status == status %}
{% if p.customer_name %}
{{ p.customer_name }}
{% endif %}
{{ p.topo_count }} topos {{ p.total_nodes }} nodes
{% if p.compliance_pct is not none %} {{ p.compliance_pct }}% {% endif %} {% if p.open_findings > 0 %} {{ p.open_findings }} findings {% endif %} {% if p.monthly_cost > 0 %} ${{ p.monthly_cost|round(0)|int }}/mo {% endif %}
{% if p.owner %}
{{ p.owner }}
{% endif %}
🔍
{% endfor %}
{% endfor %}
{% if activity %}

Recent Activity (All Projects)

{% for a in activity %}
{{ a.action }} {{ a.entity_type }}
{% if a.details %}
{{ a.details[:80] }}
{% endif %}
{% if a.user_id %}{{ a.user_id[:20] }}{% endif %} {{ (a.ts or '')[:16] }}
{% endfor %}
{% endif %} {% endblock %} {% block scripts %} {% endblock %}