Referencia · S-PLAN

Evidencias

Ningún avance del PDI vale por sí solo: se sustenta con archivos cargados en la acción concreta que ejecutó el trabajo, dentro del ciclo abierto. Esta página documenta cómo se cargan, dónde quedan, cómo se validan y cómo se conversa sobre ellas.

Evidencias por ciclo EN VIVO

CicloMetasAccionesArchivos AprobadosParcialesRechazadosEn validación
Cargando…

El asistente de carga, paso a paso

La carga vive en /s-plan/cargar y es un asistente de 5 pasos. Puedes entrar directo a una meta con /s-plan/cargar?m=E1M7: el asistente arranca en el paso 3.

1

Bienvenida y verificación del ciclo

El asistente lee S-PLAN/config/ciclo_carga y muestra si el ciclo está abierto. Si está cerrado o estás fuera de la ventana de fechas, el formulario queda bloqueado desde aquí.

2

Selección de meta y acción

Eliges la meta y, dentro de ella, la acción concreta. Esta es la decisión que más se equivoca: el archivo queda colgado de la acción, no de la meta.

3

Archivos y descripción

Arrastras o seleccionas los archivos y escribes la descripción que los identificará en la ficha de meta. El límite es de 80 MB en total por envío.

4

Confirmación

Resumen de lo que se va a subir: ciclo, meta, acción, archivos y peso. Última oportunidad de corregir antes de escribir.

5

Carga y notificación

Los archivos suben a Firebase Storage, se indexan en la base de datos con estado en_validacion y se dispara una notificación global "Nueva evidencia cargada".

Asistente de carga de evidencias
Paso 3 del asistente: selección de meta y acción, zona de arrastre y descripción del soporte.
Captura pendiente

Dónde queda cada archivo

Una evidencia vive en dos sitios a la vez: el binario en Storage y su ficha en la base de datos.

// Firebase Storage — el archivo
PlanItOne/S-PLAN/evidencias/{ciclo}/{metaId}/{accionId}/{fileKey}

// Realtime Database — la ficha
S-PLAN/evidencias/{ciclo}/{metaId}/{accionId}/{fileKey} = {
  nombre:      "Informe de Avance E1M1 --50%.pdf",
  url:         "https://firebasestorage.googleapis.com/…",
  descripcion: "INFORME DE AVANCE DEL SISTEMA DE AUTOEVALUACIÓN",
  estado:      "en_validacion",
  fecha:       "2026-07-10T13:55:25.093Z",
  correo:      "siac@unitropico.edu.co",   // quién cargó
  responsable: "R79",                       // código de responsable
  formato:     "pdf",
  peso:        805814
}
Trampa conocida — no partas la fileKey por __. La clave se deriva del nombre del archivo saneado, y ese saneamiento convierte ". " en __: una clave legítima puede contener dobles guiones bajos. Partirla por ahí escribe el estado en un nodo sombra …/{base}/uploads/{x}/estado en lugar del real, lo que genera tarjetas fantasma y pierde la decisión de validación. Usa siempre el fileId que arma el aplanado de archivos.

Claves de ciclo

El ciclo es AAAA_S (2026_1, 2026_2). El "Año 1…4" que muestra la ficha de meta se infiere del ciclo tomando 2024 como año base: 2026_1 → año 3. Existen claves heredadas con el formato añoN, que el código sigue leyendo por compatibilidad.

Los cuatro estados

Una evidencia siempre está en uno de estos estados. Los fija Planeación desde la ficha de meta.

En validación en_validacion

Estado inicial de toda carga. También es el destino de normalización de los valores heredados "Sin revisión" o vacío.

Aprobado aprobado

El soporte sustenta el avance reportado. Cuenta como evidencia válida del ciclo.

Parcial parcial

Sirve, pero no cubre todo lo reportado: falta soporte adicional o precisión.

Rechazado rechazado

No sustenta lo reportado —archivo equivocado, ilegible o fuera de alcance—. Debe reemplazarse.

El estado se guarda en el nodo del archivo, no en un índice aparte. Cambiar el estado es una escritura puntual en S-PLAN/evidencias/{ciclo}/{meta}/{accion}/{fileKey}/estado.

Conversación sobre una evidencia

Cada evidencia tiene su propio hilo de observaciones, pensado para resolver dudas sin salir del sistema ("falta la firma", "este es el anexo correcto"):

S-PLAN/evidencias/{ciclo}/{meta}/{accion}/{fileKey}/observaciones/{msgKey} = {
  texto, fromUid, fromNombre, ts, read
}

Al publicar un mensaje se crea además una notificación personal para cada destinatario en notificaciones/s-plan/personal/{correoSaneado}/{msgKey} con type: "chat". A diferencia de las notificaciones globales, estas son individuales: marcarlas como leídas no afecta a nadie más. Detalle en Notificaciones y alertas.

Buenas prácticas

Un soporte, un archivo

Evita los ZIP con todo adentro: la validación es por archivo y un ZIP obliga a aprobar o rechazar en bloque.

Nombra por contenido

“Acta comité curricular 2026-03-15.pdf” se audita; “documento final v3 (1).pdf” no.

Verifica la acción

El error más común es cargar en la meta correcta pero en la acción equivocada. Revísalo en el paso 4.

No esperes al último día

El cierre del ciclo bloquea la carga en el instante configurado, sin prórroga automática.