# Plan de Implementación: Contabilización de Activos (Producidos, Recuperados y Perdidos)

Este documento detalla la lógica matemática y los pasos técnicos necesarios para implementar la visualización y el cálculo de estadísticas de activos en la pantalla de resumen de la aplicación **Colaborando**.

---

## 📋 Resumen del Enfoque

Para evitar desincronizaciones de datos y la necesidad de alterar la base de datos o los esquemas JSON de persistencia de sesión, utilizaremos un **cálculo dinámico en el cliente** (JavaScript). Toda la información necesaria ya existe dentro del arreglo global `proyectos` y el objeto `arregloGeneral`, que se guardan y cargan automáticamente con la sesión.

---

## 🧮 Lógica de Cálculo de Métricas

Para cada tipo de activo (p. ej., *Personal Calificado*, *Analistas*, *Flujo de Efectivo*, etc.), los valores se calculan recorriendo el arreglo global `proyectos` buscando proyectos con `estatus === 'Completado'`:

### 1. Activos Producidos (Total)
* **Definición:** Activos que fueron creados/asignados para completar los proyectos finalizados.
* **Lógica:** Suma de los requerimientos originales de todos los proyectos completados.
* **Fórmula:** 
  $$\text{Producidos}(c) = \sum_{p \in \text{Completados}} p[c]$$
  *(Donde $c$ es el campo de requerimiento del activo, como `amarillo`, `naranjas`, etc.)*

### 2. Activos Recuperados
* **Definición:** Activos que se arrastraron exitosamente desde los proyectos terminados hacia los departamentos (lo cual resta del proyecto y suma al departamento).
* **Lógica:** La diferencia entre el requerimiento original del proyecto completado y su valor de asignación actual (que disminuye al ser arrastrado).
* **Fórmula:** 
  $$\text{Recuperados}(c) = \sum_{p \in \text{Completados}} (p[c] - p['activoAsignado' + (i+1)])$$
  *(Donde $i$ es el índice del slot correspondiente al tipo de activo en el proyecto)*

### 3. Activos Perdidos
* **Definición:** Activos que no se pudieron recuperar de proyectos finalizados por falta de recursos o de espacio antes de cambiar de periodo.
* **Lógica:** Suma de los activos remanentes (`activoAsignadoX`) en proyectos completados que pertenecen a trimestres anteriores (ya que en el trimestre actual todavía es posible recuperarlos).
* **Fórmula:**
  $$\text{Perdidos}(c) = \sum_{p \in \text{Completados}, p.\text{trimestreCompletado} < \text{trimestreActual}} p['activoAsignado' + (i+1)]$$

---

## 🛠️ Archivos y Cambios Requeridos

Todo el cambio se centraliza en el archivo **[resumen.php](file:///C:/CHV/ludotecaLocal/Colaborando/resumen.php)**.

### Paso 1: Interfaz de Usuario (HTML)
Modificar la estructura de la tabla `#tablaActivos` (líneas ~308-348) para cambiar sus encabezados a:
1. **Activo**
2. **Producidos**
3. **Recuperados**
4. **Perdidos**

Asignar identificadores de celda descriptivos para inyectar los datos, por ejemplo:
* Para Personal Calificado: `producidosPersonalCalificado`, `recuperadosPersonalCalificado`, `perdidosPersonalCalificado`.
* Para Analistas: `producidosAnalistas`, `recuperadosAnalistas`, `perdidosAnalistas`.
* *(Repetir para los 6 tipos de activos)*.

### Paso 2: Motor de Cálculo (JavaScript)
Dentro de la función `actualizarResumenUI()` (línea ~720):
1. **Inicializar:** Crear un objeto local para llevar las cuentas por tipo de activo e indicador (ej. `const stats = { PersonalCalificado: { producidos: 0, recuperados: 0, perdidos: 0 }, ... }`).
2. **Procesar:** Iterar sobre el arreglo `proyectos` y clasificar según las fórmulas explicadas.
3. **Renderizar:** Actualizar el contenido de las celdas del HTML utilizando jQuery (ej. `$('#producidosPersonalCalificado').text(stats.PersonalCalificado.producidos)`).

---

## 🎯 Beneficios de esta Solución
* **Integridad de datos:** No requiere modificar la estructura JSON del archivo de datos (`datos.json` / `cheve.json`).
* **Sincronización total:** Si el usuario recarga la página o arrastra activos, la tabla se vuelve a calcular en tiempo real reflejando el estado real del juego.
* **Mantenibilidad:** El código queda autocontenido en la vista de resumen.
