Archivar
Los documentos autorizados pueden archivarse cuando ya no están en uso activo, moviéndolos a un storage secundario con características distintas al repositorio principal. Cuando un documento archivado vuelve a necesitarse, puede desarchivarse para devolverlo al repositorio activo.
Ejemplo: una resolución firmada hace tres años sigue siendo válida, pero ya no se consulta con frecuencia. Al archivarla, se traslada a un storage de menor costo, liberando espacio en el repositorio principal, sin perder el acceso al documento. Es decir, el documento continúa disponible para su consulta cuando sea necesario. Si en algún momento se requiere utilizarlo nuevamente con mayor frecuencia, puede desarchivarse y volver a estar disponible como cualquier otro documento activo.
Archivar documentos
La solicitud de archivado puede realizarse via API de forma individual o masiva:
Individual:
PUT /backend/documentos/{uid_documento}/transicion/archivar
Masivo:
POST /backend/transiciones-documentos/archivar
{
"uids":[
"uid1",
"uid2",
"uid3",
"uid4"
]
}
La operación masiva devuelve el resultado por cada documento:
{
"uid1": { "status": "OK" },
"uid2": { "status": "OK" },
"uid3": { "status": "ERROR", "detalle": "No se puede archivar un documento pendiente de autorización" }
}
IMPORTANTE: El endpoint masivo admite como máximo 200 identificadores de documentos. El proceso consta de dos etapas:
1. Solicitud y autorización
Al invocar el endpoint no se ejecuta inmediatamente la acción, sino que se registra la solicitud. A continuación, el sistema consulta de manera asíncrona a los demás módulos del ecosistema para determinar si el documento puede efectivamente archivarse. Una vez que todos los módulos autorizan la operación, el documento queda en estado archivado y se persiste la fecha de archivado.
Nota: Actualmente esta consulta de autorización es síncrona y siempre responde afirmativamente, por lo que toda solicitud de archivado queda autorizada de forma inmediata. La arquitectura asíncrona queda prevista para cuando el resto de los módulos provean los endpoints de validación de la operación.
2. Preparación y movimiento vía comandos
Mediante el comando ./bin/docs documentos:archivar, el sistema busca los documentos con solicitudes pendientes y autorizadas y genera los lotes correspondientes en función de las estrategias configuradas, persistiéndolos en la base de datos. Este comando no ejecuta el archivado, sino que únicamente prepara los lotes. Para esta operación debe existir una estrategia activa de tipo documento_archivado.
Posteriormente, el dispatcher procesa dichos lotes y los encola en Redis, desde donde ./bin/docs worker:lotes ejecuta finalmente el movimiento físico de los binarios al storage de archivado.
Desarchivar documentos
La solicitud de desarchivado puede realizarse vía API de forma individual o masiva:
Individual:
PUT /backend/documentos/{uid_documento}/transicion/desarchivar
Masivo:
POST /backend/transiciones-documentos/desarchivar
{
"uids":[
"uid1",
"uid2",
"uid3",
"uid4"
]
}
IMPORTANTE: El endpoint masivo admite como máximo 200 identificadores de documentos. A diferencia del archivado, el desarchivado no requiere autorización de otros módulos: al invocar el endpoint se registra directamente la solicitud. El sistema aplica las estrategias activas para determinar en qué storage activo debe quedar el documento.
Mediante el comando ./bin/docs documentos:desarchivar, el sistema prepara los lotes correspondientes en base de datos. El dispatcher los encola en Redis y ./bin/docs worker:lotes realiza el movimiento físico al storage destino según la estrategia configurada.
Una vez que el worker finaliza el movimiento, el documento pasa a estado desarchivado y se limpia la fecha de archivado (ya que el documento deja de estar archivado).
Comandos de movimiento
Parámetro --modo (común a ambos procesos)
./bin/docs worker:lotes puede ejecutarse de forma completa o limitarse a una etapa específica:
--modo=mover: solo realiza el movimiento sin eliminar el origen--modo=limpiar: elimina los binarios del storage origen ya movidos