Feat: dashboard con gráficos, estructura CBS/Portafolios, semáforo de proyectos y cartera de especialistas

This commit is contained in:
Nachou-u
2026-08-20 18:54:58 -04:00
parent 8c0b435555
commit b692614857
25 changed files with 1717 additions and 159 deletions
+24 -11
View File
@@ -1,8 +1,13 @@
{% extends 'base.html' %}
{% load humanize %}
{% block content %}
<div style="margin-bottom: 2rem;">
<h1>Proyectos</h1>
<div class="view-header">
<div class="view-title">
<h2>Proyectos</h2>
<p>Monitoreo de Centros de Costo</p>
</div>
<a href="{% url 'project_create' %}" class="btn-primary">Nuevo Proyecto / Centro</a>
</div>
<div class="project-grid">
@@ -15,15 +20,23 @@
<strong>Gestor:</strong> {{ project.manager.username|default:"No asignado" }}
</div>
<div class="project-stats">
<div style="display: flex; flex-direction: column;">
<span style="font-size: 0.8rem; color: var(--text-secondary);">Gastos</span>
<span style="font-weight: 600; font-size: 1.1rem;">{{ project.expense_count|default:"0" }}</span>
</div>
<div style="display: flex; flex-direction: column; text-align: right;">
<span style="font-size: 0.8rem; color: var(--text-secondary);">Total</span>
<span style="font-weight: 600; font-size: 1.1rem; color: var(--accent-secondary);">
${{ project.total_expenses|default:"0.00" }}
</span>
<div style="display: flex; flex-direction: column; gap: 0.5rem; width: 100%;">
<div style="display: flex; justify-content: space-between;">
<span style="font-size: 0.8rem; color: var(--efintel-gray);">Presupuesto Asignado</span>
<span style="font-weight: 700; font-family: var(--font-mono); color: var(--efintel-petroleum);">
${{ project.assigned_budget_clp|floatformat:"0"|intcomma }}
</span>
</div>
<div style="display: flex; justify-content: space-between;">
<span style="font-size: 0.8rem; color: var(--efintel-gray);">Costo Real Acumulado</span>
<span style="font-weight: 700; font-family: var(--font-mono); color: var(--efintel-danger);">
${{ project.actual_cost_clp|floatformat:"0"|intcomma }}
</span>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 0.5rem; padding-top: 0.5rem; border-top: 1px solid var(--efintel-border);">
<span style="font-size: 0.8rem; color: var(--efintel-gray);">Nº Erogaciones (Facturas)</span>
<span style="font-weight: 700;">{{ project.expense_count|default:"0" }}</span>
</div>
</div>
</div>
</div>