commit 2efef822f8127812cd952af3b2cbd0b6cd6beb18 Author: Miguel Date: Mon Mar 3 14:40:36 2025 -0300 Añadir Home diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..6e902ea --- /dev/null +++ b/Home.md @@ -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 \ No newline at end of file