Añadir Home
commit
2efef822f8
|
@ -0,0 +1,267 @@
|
||||||
|
# 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
|
||||||
|
1. El usuario inicia sesión con sus credenciales
|
||||||
|
2. Utiliza la barra de búsqueda con filtros avanzados
|
||||||
|
3. El sistema muestra los proyectos que cumplen con los criterios
|
||||||
|
4. El usuario selecciona un proyecto para ver sus detalles y documentos
|
||||||
|
|
||||||
|
### Gestión de Documentos
|
||||||
|
1. Dentro de un proyecto, el usuario visualiza la lista de documentos según el esquema
|
||||||
|
2. Puede descargar documentos si tiene el nivel mínimo requerido
|
||||||
|
3. Si tiene permisos suficientes, puede subir nuevas versiones
|
||||||
|
4. El sistema mantiene un historial completo de todas las versiones
|
||||||
|
|
||||||
|
### Administración del Sistema
|
||||||
|
1. Usuarios con nivel ≥ 5000 pueden crear y gestionar proyectos
|
||||||
|
2. Usuarios con nivel ≥ 9000 pueden administrar usuarios y tipos de archivo
|
||||||
|
3. 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
|
||||||
|
1. Usuario se autentica
|
||||||
|
2. Crea nuevo proyecto y define metadatos básicos
|
||||||
|
3. Opcionalmente personaliza el esquema del proyecto o eligue un esquema ya definido
|
||||||
|
4. Completa la información requerida según el esquema
|
||||||
|
5. Sistema asigna permisos iniciales
|
||||||
|
|
||||||
|
### Gestión de Documentos
|
||||||
|
1. Usuario accede a un proyecto
|
||||||
|
2. Realiza Carga/Descarga de un documento (opcional)
|
||||||
|
3. Sistema registra nueva versión manteniendo historial
|
||||||
|
|
||||||
|
### Actualización de Datos del Proyecto
|
||||||
|
1. Usuario accede a un proyecto con permisos de escritura
|
||||||
|
2. Edita la información a través de formularios
|
||||||
|
3. Sistema valida los datos según las reglas del esquema
|
||||||
|
4. Se guardan los cambios manteniendo registro de modificaciones
|
Loading…
Reference in New Issue