12 KiB
Sistema de Gestión de Documentos para Proyectos de Ingeniería - ARCH
Descripción General
Un sistema robusto de gestión documental destinado a equipos de ingeniería, diseñado para almacenar, organizar y versionar los archivos críticos de cada proyecto. El sistema utiliza una arquitectura basada en archivos JSON y sistema de ficheros para facilitar el mantenimiento y las copias de seguridad.
Estructura de Usuarios y Permisos
Niveles de Usuario
- Nivel 0: Usuario básico (solo lectura de documentos autorizados)
- Nivel 5000: Gestor de proyectos (creación y gestión de proyectos)
- Nivel 9000: Mantenimiento (configuración técnica y tipos de archivo)
- Nivel 9999: Administrador (acceso total al sistema)
Atributos de Usuario
- Nombre completo
- Nombre de usuario (username)
- Correo electrónico
- Nivel de permisos
- Idioma preferido
- Fecha de caducidad
- Empresa a la que pertenece
Componentes del Sistema
Gestión de Tipos de Archivo
- Extensiones aceptadas en el sistema
- Descripción de cada tipo de archivo
- Nivel mínimo requerido para administrar: 9000
Gestión de Esquemas
- Código único del esquema
- Descripción detallada
- Lista de documentos asociados con:
- Tipo de archivo permitido
- Nivel mínimo requerido para visualización
- Nivel mínimo requerido para cargar nuevas versiones
- Nivel mínimo requerido para gestionar: 5000
Gestión de Proyectos
- Código alfanumérico único (10 caracteres)
- Referencia a proyecto padre (estructura jerárquica)
- Esquema asociado (define qué documentos contiene)
- Descripción del proyecto
- Cliente
- Destinación/ubicación
- Año de creación
- Nivel mínimo requerido para crear/modificar: 5000
Estructura del Frontend
Frontend Sistema de Gestión de Documentos - ARCH
│
├── Página de Inicio/Login
│ ├── Formulario de inicio de sesión
│ └── Información básica del sistema
│
├── Panel Principal
│ │
│ ├── Cabecera
│ │ ├── Logo del sistema - ARCH
│ │ ├── Barra de búsqueda avanzada
│ │ │ └── Filtros por: tipo de proyecto, tipo de máquina, cliente, año
│ │ └── Menú de usuario (perfil, configuración, salir)
│ │
│ ├── Menú de Navegación
│ │ ├── Administración Proyectos (nivel ≥ 5000)
│ │ ├── Administración de usuarios (nivel ≥ 9000)
│ │ ├── Administración de esquemas (nivel ≥ 5000)
│ │ ├── Diagnóstico del sistema (nivel = 9999)
│ │ └── Copia de seguridad (nivel ≥ 9000)
│ │
│ └── Área de Contenido Principal
│ ├── Listado de Proyectos (resultados de búsqueda)
│ │ └── Tabla con columnas: código, descripción, cliente, destinación, año, acciones
│ └── Botón "Nuevo Proyecto" (visible si nivel ≥ 5000)
│
├── Gestión de Proyectos
│ │
│ └── Vista de Proyecto
│ ├── Información del proyecto
│ │ ├── Datos básicos (código, descripción, cliente, destinación, año)
│ │ └── Árbol de navegación de proyectos padre/hijo
│ │
│ └── Listado de Documentos
│ └── Tabla de documentos
│ ├── Columnas: nombre, tipo, última versión, fecha de actualización
│ └── Acciones: ver historial, descargar, subir nueva versión, editar descripción
│
├── Gestión de Documentos
│ │
│ ├── Subir Documento
│ │ ├── Selector de archivo (con validación de tipo permitido)
│ │ └── Campos de metadatos (descripción, etiquetas)
│ │
│ └── Historial de Versiones
│ ├── Información del documento
│ └── Lista cronológica de versiones
│ └── Detalle por versión: fecha, usuario, descripción, acciones
│
└── Módulos de Administración
│
├── Gestión de Usuarios (nivel ≥ 9000)
│ ├── Listado de usuarios
│ ├── Formulario de creación/edición
│ └── Gestión de niveles de acceso
│
├── Gestión de Esquemas (nivel ≥ 5000)
│ ├── Listado de esquemas
│ ├── Editor de esquemas
│ └── Asignación de tipos de documentos y niveles
│
├── Gestión de Tipos de Archivo (nivel ≥ 9000)
│ ├── Listado de extensiones permitidas
│ └── Configuración de nuevos tipos
│
└── Diagnóstico del Sistema (nivel = 9999)
├── Estado del almacenamiento
├── Logs de actividad
└── Herramientas de mantenimiento
Flujos de Trabajo Principales
Búsqueda y Acceso a Proyectos
- El usuario inicia sesión con sus credenciales
- Utiliza la barra de búsqueda con filtros avanzados
- El sistema muestra los proyectos que cumplen con los criterios
- El usuario selecciona un proyecto para ver sus detalles y documentos
Gestión de Documentos
- Dentro de un proyecto, el usuario visualiza la lista de documentos según el esquema
- Puede descargar documentos si tiene el nivel mínimo requerido
- Si tiene permisos suficientes, puede subir nuevas versiones
- El sistema mantiene un historial completo de todas las versiones
Administración del Sistema
- Usuarios con nivel ≥ 5000 pueden crear y gestionar proyectos
- Usuarios con nivel ≥ 9000 pueden administrar usuarios y tipos de archivo
- Administradores (nivel 9999) tienen acceso completo, incluyendo diagnóstico
Características Técnicas
- Arquitectura basada en archivos JSON para facilitar backups
- Sistema de versionado completo para cada documento
- Control de acceso granular basado en niveles de usuario
- Estructura jerárquica de proyectos con relaciones padre-hijo
- Validación de tipos de archivo según configuración del sistema
- Interfaz intuitiva con búsqueda avanzada y filtros contextuales
El sistema ARCH proporciona una solución completa para la gestión documental de proyectos de ingeniería, con un enfoque en la facilidad de mantenimiento, control de versiones y seguridad basada en niveles de acceso definidos.
Estructura de Archivos y Directorios
document_manager/ ├── app.py # Punto de entrada de la aplicación ├── requirements.txt # Dependencias del proyecto ├── services/ # Servicios del sistema ├── routes/ # Rutas de la aplicación ├── static/ # Archivos estáticos ├── templates/ # Plantillas HTML │ ├── projects/ # Plantillas de proyectos │ └── documents/ # Plantillas de documentos └── storage/ # Almacenamiento de datos ├── indices.json # Índices centralizados ├── schemas/ │ ├── schema.json # Lista de Esquemas ├── users/ │ ├── users.json # Usuarios regulares └── projects/ ├── @id_num_@project_name_dir/ │ ├── project_meta.json # Metadatos del proyecto │ ├── schema.json # Esquema usado en particular │ ├── permissions.json # Permisos de acceso │ └── documents/ # Documentos del proyecto │ ├── @id_num_@doc_name/ │ │ ├── v001_doc_name # Archivo versión 1 │ │ ├── v002_doc_name # Archivo versión 2 │ │ ├── meta.json # Lista de metadatos del documento y descripcion cada version │ ├── id_num_doc_name/ │ │ ├── v001_doc_name # Archivo versión 1 │ │ ├── meta.json # Lista de metadatos del documento y descripcion cada version │ └── ... └── ...
@id_num : numero consecutivo de proyecto o documento. Cada vez que se inicia la aplicación se busca el numero mas alto para usar el numero siguiente en un proyecto nuevo. @project_name : Codigo + "_" + Descripcion ( hasta 30 letras - filtrado de letras admitidas por el filesystem ) @doc_name : Descripcion ( hasta 30 letras - filtrado de letras admitidas por el filesystem )
Sistema de Gestión de Documentos para Proyectos de Ingeniería
Descripción General
El Sistema de Gestión de Documentos es una aplicación web desarrollada con Flask que permite almacenar y gestionar backups de archivos y documentos de proyectos de ingeniería. El sistema proporciona una organización jerárquica basada en proyectos, control de versiones de documentos, y esquemas dinámicos personalizables para diferentes tipos de proyectos.
Enfoque Técnico
Hemos optado por un enfoque simple y robusto basado completamente en JSON y sistema de archivos, eliminando la necesidad de una base de datos relacional tradicional. Esto simplifica la arquitectura, facilita los backups y permite una fácil inspección de datos. Para mantener un rendimiento óptimo, implementamos un sistema de caché e índices.
Decisiones Técnicas Clave
Almacenamiento basado en archivos: Toda la información se almacena en archivos JSON dentro de una estructura de directorios. Front-end con Bootstrap: Interface sencilla y responsive utilizando Bootstrap para una rápida implementación.
Estructura de Datos
Proyectos
- Cada proyecto tiene un directorio único identificado @id_num_@project_name_dir basado es un numero unico incremental. El nombre fisico en disco se establece como un numero consecutivo rellenado con 6 ceros a la izquierda segudido de un punto y luego el nombre del proyecto definido como @project_name. El numero consecutivo es irrepetible. El sistema al iniciar debe comprobar cual es el numero maximo actual. Este numero se incrementa cada vez que se crea un nuevo proyecto.
- Los proyectos contienen metadatos, permisos, un esquema y documentos.
- Al crear un proyecto se asocia a un esquema. Este esquema se copia en el directorio del proyecto. Luego se puede modificar dentro del proyecto.
- Los proyectos pueden tener proyectos padres.
Usuarios
- Almacenados en archivos JSON.
Documentos
- Organizados en directorios por proyecto. El nombre del directorio sigue el mismo formato que los nombres de directorios, inicia con un numero consecutivo y luego el nombre del documento hasta 30 caracteres segun definido en @doc_name.
- Sistema de versionado que mantiene todas las versiones anteriores.
- Cada versión incluye metadatos como autor, fecha y descripcion de la version en un archivo json.
Funcionalidades Principales
1. Gestión de Usuarios
- Registro y autenticación de usuarios
- Gestión de roles (administrador, usuario regular, mantenimiento)
- Perfiles de usuario con información personalizada
2. Gestión de Proyectos
- Creación y configuración de proyectos
- Asignación de usuarios con permisos granulares
- Búsqueda y filtrado de proyectos
- Esquemas personalizables por proyecto una vez creado el proyecto
3. Gestión de Documentos
- Sistema de Carga y Descarga para archivos. Cada documento es un unico archivo.
- Versionado completo de documentos
- Historial de cambios por documento
- Metadatos y comentarios por versión
4. Control de Acceso
- Permisos granulares por proyecto
- Registro de actividad (logs)
- Restricción de acceso a nivel de proyecto y documento
Flujos de Trabajo Principales
Creación de un Proyecto
- Usuario se autentica
- Crea nuevo proyecto y define metadatos básicos
- Opcionalmente personaliza el esquema del proyecto o eligue un esquema ya definido
- Completa la información requerida según el esquema
- Sistema asigna permisos iniciales
Gestión de Documentos
- Usuario accede a un proyecto
- Realiza Carga/Descarga de un documento (opcional)
- Sistema registra nueva versión manteniendo historial
Actualización de Datos del Proyecto
- Usuario accede a un proyecto con permisos de escritura
- Edita la información a través de formularios
- Sistema valida los datos según las reglas del esquema
- Se guardan los cambios manteniendo registro de modificaciones