Especificación · S-PLAN

Carga masiva por Excel

La estructura del PDI —ejes, programas, proyectos, metas y acciones— no se captura a mano: se carga desde un libro de Excel en /s-plan/actualizacion. Esta página documenta el formato exacto que espera el cargador y qué escribe en la base de datos.

Es la operación más destructiva de S-PLAN. El cargador hace un update multipath sobre todo el árbol: reemplaza campo por campo lo que traiga el archivo. Un archivo incompleto no borra nodos, pero sí puede dejar vacíos los campos que vengan en blanco. Respalda antes de cargar y usa siempre el archivo consolidado completo.

El libro y su hoja

Columnas de la hoja S-PLAN

Todas las columnas del cargador principal (pestaña Cargar Todo), en el orden jerárquico en que se aplican.

ColumnaNivelSe escribe en / observaciones
id_ejeEjeClave del nodo. Obligatoria: sin ella la fila se descarta.
titulo_ejeEjetitulo_eje
descripcion_ejeEjedescripcion_eje
avance_eje_100Ejeavance_eje — se guarda tal cual viene.
id_programaProgramaClave del nodo. Si viene vacía, no se baja a este nivel.
programaProgramaprograma (el nombre).
avance_programa_100Programaavance_programa
id_proyectoProyectoClave del nodo (código BPU).
nombre_proyectoProyectonombre_proyecto
avance_proyecto_100Proyectoavance_proyecto
id_metaMetaClave del nodo (E2M14).
titulo_metaMetatitulo_meta
ponderacion_metaMetaponderacion_meta — en este cargador se guarda sin normalizar.
valor_metaMetavalor_meta
tipo_programacionMetaporcentaje · cantidad
tipo_acumulacionMetaacumulado · no acumulado
proyeccion_año1proyeccion_año4MetaSe agrupan en proyeccion_anual = { año1..año4 }.
avance_año1avance_año4MetaSe agrupan en programacion_avance_anual = { año1..año4 }.
id_accionAcciónClave del nodo (A-001). Sin ella no se escribe la acción.
titulo_accionAccióntitulo_accion
ponderacion_accionAcciónponderacion_accion
evidenciaAcciónDescripción del soporte esperado.
responsableAcciónCódigo Rn. Evita espacios y saltos de línea al final.
avance_accionAcciónSe guarda como avance_accion/{fecha de hoy}. Por defecto "0".
avance_accion_año1avance_accion_año4AcciónSe guardan como avance_accion_anual/{fecha de hoy}/{añoN}.
inversion_realizadaAcciónSe guarda en la acción y se acumula en inversion_realizada de la meta.
El cronograma no se carga por aquí. cronograma_anual —los meses programados de cada acción— no tiene columna en esta hoja: se edita desde la ficha de meta. Una carga masiva no lo altera, lo cual es deliberado.

Qué hace exactamente el cargador

1

Lee la hoja completa en memoria

Convierte cada fila a objeto con las celdas vacías como cadena vacía, y arma un diccionario de rutas → valores.

2

Acumula la inversión por meta

Suma la inversion_realizada de todas las filas de una misma meta y la escribe como total de la meta.

3

Marca la fecha de actualización

Escribe S-PLAN/fecha_actualizacion con el timestamp de la carga: es el sello que muestran el dashboard y los informes.

4

Escribe todo en una sola operación

Un único update multipath desde la raíz. O entra todo, o no entra nada: si un solo valor es inválido, Firebase rechaza la escritura completa.

Lo que el cargador NO hace: no recalcula avance_meta ni metas_con_ponderacion (eso ocurre al abrir cada meta), no toca las evidencias, no crea entradas en indices_metas y no elimina metas que hayan desaparecido del archivo. Depurar el árbol es una tarea manual y deliberada.

Cargador de ponderaciones

La segunda pestaña actualiza solo el peso de cada meta. Es la vía correcta cuando se recalibra el plan sin tocar su estructura.

ColumnaRequeridaObservaciones
id_eje, id_programa, id_proyecto, id_meta Las cuatro son obligatorias: si falta alguna, la fila se omite con advertencia en consola.
ponderacion_meta Se normaliza: si el valor es mayor que 1 se divide entre 100 (35 → 0,35). Un valor no numérico se registra como 0.

Al terminar escribe S-PLAN/fecha_actualizacion_ponderaciones.

Verifica que la suma dé 1. Nada en el cargador lo comprueba, y si las 120 ponderaciones no suman 1 el avance general del PDI queda escalado incorrectamente —sin ningún mensaje de error—.

Pestaña “Seguimiento / Cargar Responsables”

Estado actual: no operativa. El formulario existe en la interfaz, pero no tiene lógica asociada: al enviarlo no ocurre nada. La asignación meta ↔ responsable se administra hoy desde S-PLAN/metas_responsables. Se documenta para evitar que alguien dé por hecho que su archivo se cargó.

Lista de verificación antes de cargar

  1. Respalda S-PLAN/ejes completo.
  2. Confirma que la hoja se llama S-PLAN y que los encabezados coinciden exactamente.
  3. Revisa que no haya ids con espacios finales ("E2M14 " crea una meta distinta).
  4. Comprueba que las ponderaciones de acciones sumen 1 dentro de cada meta.
  5. Comprueba que las ponderaciones de metas sumen 1 en todo el plan.
  6. Carga fuera del horario de mayor uso: la escritura es masiva y los usuarios verán los cambios al instante.
  7. Después de cargar, abre dos o tres metas conocidas y verifica avance, acciones e inversión.

Relacionado: Modelo de datos · Cálculo del avance · Manual de administrador.