Base
This commit is contained in:
commit
70de427e7e
|
@ -0,0 +1,127 @@
|
|||
### Flask specific ###
|
||||
instance/
|
||||
.webassets-cache
|
||||
flask_session/
|
||||
# SQLite database files
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
*.db
|
||||
|
||||
### Project specific ###
|
||||
# Storage directory - contains all user data
|
||||
/storage/
|
||||
# Allow keeping the directory structure with .gitkeep
|
||||
!storage/.gitkeep
|
||||
!storage/schemas/.gitkeep
|
||||
!storage/users/.gitkeep
|
||||
!storage/projects/.gitkeep
|
||||
!storage/schemas/templates/.gitkeep
|
||||
|
||||
# Local configuration
|
||||
.env
|
||||
config.local.py
|
||||
*.local.py
|
||||
|
||||
### Python ###
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# Environments
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
*.log
|
||||
|
||||
# IDE specific files
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
.DS_Store
|
||||
|
||||
# Ruff stuff:
|
||||
.ruff_cache/
|
||||
|
||||
# Package management
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
.pypirc
|
||||
__pypackages__/
|
||||
|
||||
# Type checkers
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
.pyre/
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
|
@ -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
|
|
@ -0,0 +1,14 @@
|
|||
Flask==2.3.3
|
||||
Werkzeug==2.3.7
|
||||
Jinja2==3.1.2
|
||||
itsdangerous==2.1.2
|
||||
click==8.1.3
|
||||
python-dateutil==2.8.2
|
||||
python-dotenv==1.0.0
|
||||
Flask-WTF==1.2.1
|
||||
WTForms==3.0.1
|
||||
Flask-Session==0.5.0
|
||||
urllib3==2.0.4
|
||||
requests==2.31.0
|
||||
boto3==1.28.16
|
||||
pytz==2023.3
|
Loading…
Reference in New Issue