Se modifico management y models de tasks
This commit is contained in:
122
docs/commands/AUDITOR_COMMAND.md
Normal file
122
docs/commands/AUDITOR_COMMAND.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# Comando de Auditoría de Pedimentos
|
||||
|
||||
## 📝 Descripción
|
||||
El comando `auditor` es una herramienta flexible para ejecutar tareas de auditoría y verificación de datos relacionados con pedimentos de una organización específica. Permite ejecutar todas las tareas o seleccionar específicamente cuáles ejecutar.
|
||||
|
||||
## 🔍 Tareas Disponibles
|
||||
|
||||
- **remesas**: Auditoría de remesas y procesamiento de COVEs
|
||||
- **partidas**: Creación y validación de partidas faltantes
|
||||
- **coves**: Auditoría de COVEs y su estado
|
||||
- **acuse-cove**: Verificación de acuses de COVEs
|
||||
- **edocs**: Auditoría de E-documents
|
||||
- **acuses**: Verificación de acuses generales
|
||||
|
||||
## 💻 Uso
|
||||
|
||||
### Ver Tareas Disponibles
|
||||
```bash
|
||||
python manage.py auditor --list
|
||||
```
|
||||
|
||||
### Ejecutar Todas las Tareas
|
||||
```bash
|
||||
python manage.py auditor <organizacion_id>
|
||||
# o explícitamente
|
||||
python manage.py auditor <organizacion_id> --tareas todas
|
||||
```
|
||||
|
||||
### Ejecutar Tareas Específicas
|
||||
```bash
|
||||
# Ejecutar solo auditoría de remesas y COVEs
|
||||
python manage.py auditor <organizacion_id> --tareas remesas coves
|
||||
|
||||
# Ejecutar partidas y acuses
|
||||
python manage.py auditor <organizacion_id> --tareas partidas acuses
|
||||
|
||||
# Ejecutar E-documents y acuses de COVEs
|
||||
python manage.py auditor <organizacion_id> --tareas edocs acuse-cove
|
||||
```
|
||||
|
||||
### Ejecución en Docker
|
||||
```bash
|
||||
docker exec -it EFC_backend_dev python manage.py auditor <organizacion_id> [opciones]
|
||||
```
|
||||
|
||||
### Ejemplos
|
||||
```bash
|
||||
# Listar tareas disponibles
|
||||
python manage.py auditor --list
|
||||
|
||||
# Auditar todo para una organización
|
||||
python manage.py auditor 9d705e97-d3f2-4b6c-8d92-9f1af2b2d4b4
|
||||
|
||||
# Auditar solo remesas y COVEs
|
||||
python manage.py auditor 9d705e97-d3f2-4b6c-8d92-9f1af2b2d4b4 --tareas remesas coves
|
||||
```
|
||||
|
||||
## 📊 Monitoreo y Resultados
|
||||
|
||||
### Indicadores de Estado
|
||||
- ✓ Tarea iniciada correctamente
|
||||
- ✗ Error en la ejecución
|
||||
|
||||
### Información Mostrada
|
||||
- ID de la organización
|
||||
- Número total de pedimentos
|
||||
- Task ID de cada tarea iniciada
|
||||
- Tiempo total de ejecución
|
||||
- Estado de cada tarea
|
||||
|
||||
## ⚠️ Consideraciones Importantes
|
||||
|
||||
### Requisitos Previos
|
||||
- Acceso al servidor/contenedor
|
||||
- Permisos de Django
|
||||
- ID válido de organización
|
||||
- Celery en ejecución
|
||||
|
||||
### Recomendaciones
|
||||
1. **Antes de Ejecutar**
|
||||
- Realizar respaldo de datos
|
||||
- Verificar disponibilidad de recursos
|
||||
- Comprobar conexión con servicios
|
||||
|
||||
2. **Durante la Ejecución**
|
||||
- Monitorear logs de Celery
|
||||
- Verificar uso de recursos
|
||||
- No interrumpir el proceso
|
||||
|
||||
3. **Después de la Ejecución**
|
||||
- Verificar logs
|
||||
- Validar resultados
|
||||
- Documentar incidencias
|
||||
|
||||
## 🔧 Solución de Problemas
|
||||
|
||||
### Errores Comunes
|
||||
1. **Organización no encontrada**
|
||||
- Verificar ID de organización
|
||||
- Confirmar existencia de pedimentos
|
||||
|
||||
2. **Tareas no inician**
|
||||
- Verificar estado de Celery
|
||||
- Comprobar permisos
|
||||
- Revisar conexiones
|
||||
|
||||
3. **Errores de ejecución**
|
||||
- Consultar logs detallados
|
||||
- Verificar disponibilidad de servicios
|
||||
- Comprobar estado de la base de datos
|
||||
|
||||
## 📝 Notas Adicionales
|
||||
- Las tareas se ejecutan de forma asíncrona
|
||||
- El tiempo mostrado corresponde solo a la inicialización
|
||||
- Las tareas continúan en segundo plano
|
||||
- Se recomienda ejecutar en horarios de bajo tráfico
|
||||
|
||||
## 🔍 Logs y Monitoreo
|
||||
Para un seguimiento detallado, revisar:
|
||||
- Logs de Celery
|
||||
- Logs de Django
|
||||
- Monitor de tareas de Celery
|
||||
138
docs/commands/ELIMINAR_PEDIMENTOS_DUPLICADOS.md
Normal file
138
docs/commands/ELIMINAR_PEDIMENTOS_DUPLICADOS.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Guía del Comando eliminar_pedimentos_duplicados
|
||||
|
||||
## 📝 Descripción
|
||||
El comando `eliminar_pedimentos_duplicados` es una herramienta de mantenimiento que identifica y elimina pedimentos duplicados dentro de una organización, conservando automáticamente el pedimento que tenga más documentos y relaciones asociadas.
|
||||
|
||||
## ⚙️ Funcionalidad
|
||||
|
||||
### Criterios de Duplicación
|
||||
- Pedimentos con el mismo número dentro de una organización
|
||||
- Solo se consideran duplicados dentro de la misma organización
|
||||
- Se mantiene el pedimento con más:
|
||||
- Documentos (Documents)
|
||||
- COVEs
|
||||
- E-documents
|
||||
- Partidas
|
||||
|
||||
## 💻 Uso
|
||||
|
||||
### Comando Básico
|
||||
```bash
|
||||
python manage.py eliminar_pedimentos_duplicados
|
||||
```
|
||||
|
||||
### Con Argumentos Opcionales
|
||||
```bash
|
||||
# Procesar organización específica
|
||||
python manage.py eliminar_pedimentos_duplicados --organizacion="uuid-organizacion"
|
||||
|
||||
# Ajustar tamaño del lote
|
||||
python manage.py eliminar_pedimentos_duplicados --batch-size=50
|
||||
|
||||
# Combinar opciones
|
||||
python manage.py eliminar_pedimentos_duplicados --organizacion="uuid" --batch-size=50
|
||||
```
|
||||
|
||||
## 🔧 Argumentos Disponibles
|
||||
|
||||
| Argumento | Descripción | Tipo | Default |
|
||||
|-----------|-------------|------|---------|
|
||||
| --organizacion | UUID de la organización a procesar | string | None |
|
||||
| --batch-size | Número de pedimentos por lote | integer | 100 |
|
||||
|
||||
## 📊 Proceso de Ejecución
|
||||
|
||||
1. **Inicio**
|
||||
- Validación de argumentos
|
||||
- Conexión a base de datos
|
||||
- Cálculo de duplicados totales
|
||||
|
||||
2. **Procesamiento por Lotes**
|
||||
- Identificación de duplicados
|
||||
- Análisis de documentos asociados
|
||||
- Selección de pedimento a mantener
|
||||
|
||||
3. **Eliminación**
|
||||
- Eliminación de COVEs asociados
|
||||
- Eliminación de E-documents
|
||||
- Eliminación de Partidas
|
||||
- Eliminación de Documents
|
||||
- Eliminación del pedimento duplicado
|
||||
|
||||
4. **Reporte**
|
||||
- Total de grupos procesados
|
||||
- Tiempo de ejecución
|
||||
- Detalles de errores (si existen)
|
||||
|
||||
## ⚠️ Precauciones
|
||||
|
||||
### Antes de Ejecutar
|
||||
- [x] Realizar respaldo de la base de datos
|
||||
- [x] Verificar espacio en disco
|
||||
- [x] Revisar carga del servidor
|
||||
- [x] Confirmar permisos de usuario
|
||||
|
||||
### Durante la Ejecución
|
||||
- No interrumpir el proceso
|
||||
- Monitorear uso de recursos
|
||||
- Revisar logs en tiempo real
|
||||
|
||||
### Después de la Ejecución
|
||||
- Verificar integridad de datos
|
||||
- Revisar logs de errores
|
||||
- Documentar cambios realizados
|
||||
|
||||
## 🔍 Monitoreo
|
||||
|
||||
### Logs y Salidas
|
||||
- Progreso por lote
|
||||
- Errores encontrados
|
||||
- Resumen de operaciones
|
||||
- Tiempo total de ejecución
|
||||
|
||||
### Mensajes de Estado
|
||||
- ✓ Operación exitosa
|
||||
- ✗ Error en la operación
|
||||
- ℹ️ Información de progreso
|
||||
|
||||
## 🚨 Solución de Problemas
|
||||
|
||||
### Errores Comunes
|
||||
1. **Timeout de Base de Datos**
|
||||
- Reducir tamaño del lote
|
||||
- Verificar conexión a BD
|
||||
- Revisar índices de la tabla
|
||||
|
||||
2. **Memoria Insuficiente**
|
||||
- Ajustar batch-size
|
||||
- Verificar recursos del servidor
|
||||
- Liberar memoria cache
|
||||
|
||||
3. **Errores de Permisos**
|
||||
- Verificar permisos de usuario
|
||||
- Confirmar acceso a tablas
|
||||
- Revisar configuración de BD
|
||||
|
||||
## 📌 Notas Importantes
|
||||
- La eliminación es permanente
|
||||
- El proceso es transaccional por lote
|
||||
- Se puede reanudar si se interrumpe
|
||||
- Los cambios afectan a relaciones en cascada
|
||||
|
||||
## 🔄 Mantenimiento
|
||||
|
||||
### Recomendaciones
|
||||
1. Ejecutar periódicamente
|
||||
2. Mantener respaldos actualizados
|
||||
3. Revisar logs regularmente
|
||||
4. Ajustar parámetros según necesidad
|
||||
|
||||
### Mejor Momento para Ejecutar
|
||||
- Durante horas de bajo tráfico
|
||||
- Después de respaldos programados
|
||||
- Cuando el sistema está menos cargado
|
||||
|
||||
## 📚 Referencias
|
||||
- Documentación de Django Management Commands
|
||||
- Logs del sistema
|
||||
- Documentación de la base de datos
|
||||
184
docs/commands/MEDIA_CLEANUP_GUIDE.md
Normal file
184
docs/commands/MEDIA_CLEANUP_GUIDE.md
Normal file
@@ -0,0 +1,184 @@
|
||||
# Comando de Limpieza de Archivos Media
|
||||
|
||||
Este documento explica cómo utilizar los comandos de limpieza de archivos media huérfanos en el proyecto Django.
|
||||
|
||||
## ¿Qué son los archivos huérfanos?
|
||||
|
||||
Los archivos huérfanos son archivos que existen físicamente en el directorio `/media/` pero que no están referenciados en ningún campo de archivo (`FileField` o `ImageField`) de la base de datos. Esto puede ocurrir por:
|
||||
|
||||
- Eliminación de registros sin eliminar sus archivos asociados
|
||||
- Errores en procesos de carga de archivos
|
||||
- Archivos temporales que nunca se limpiaron
|
||||
- Migraciones de datos incorrectas
|
||||
|
||||
## Comandos Disponibles
|
||||
|
||||
### 1. cleanup_media (Comando Original)
|
||||
```bash
|
||||
python manage.py cleanup_media [opciones]
|
||||
```
|
||||
|
||||
### 2. cleanup_media_fast (Comando Optimizado)
|
||||
```bash
|
||||
python manage.py cleanup_media_fast [opciones]
|
||||
```
|
||||
|
||||
## Opciones Disponibles
|
||||
|
||||
### Opciones Comunes (ambos comandos):
|
||||
- `--dry-run`: Muestra qué archivos se eliminarían sin eliminarlos realmente
|
||||
- `--verbose`: Muestra información detallada del proceso
|
||||
- `--help`: Muestra ayuda del comando
|
||||
|
||||
### Opciones del cleanup_media:
|
||||
- `--batch-size N`: Tamaño del lote para procesar archivos (default: 10000)
|
||||
|
||||
### Opciones del cleanup_media_fast:
|
||||
- `--limit N`: Limitar el número de archivos huérfanos a procesar
|
||||
- `--sample-size N`: Tamaño de muestra para análisis rápido (default: 10000)
|
||||
- `--quick-scan`: Hacer un escaneo rápido con muestra limitada
|
||||
|
||||
## Uso Recomendado
|
||||
|
||||
### 1. Análisis Inicial (Siempre hacer primero)
|
||||
```bash
|
||||
# Escaneo rápido para obtener una estimación
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan --dry-run --verbose"
|
||||
|
||||
# O escaneo completo para números exactos (puede tomar tiempo)
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --dry-run --verbose"
|
||||
```
|
||||
|
||||
### 2. Limpieza por Lotes (Recomendado para grandes volúmenes)
|
||||
```bash
|
||||
# Limpiar muestra de 10,000 archivos
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan --verbose"
|
||||
|
||||
# Limpiar hasta 5,000 archivos específicos
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --limit 5000 --verbose"
|
||||
```
|
||||
|
||||
### 3. Limpieza Completa
|
||||
```bash
|
||||
# Eliminar todos los archivos huérfanos (CUIDADO: puede tomar mucho tiempo)
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --verbose"
|
||||
```
|
||||
|
||||
## Ejemplos de Salida
|
||||
|
||||
### Dry Run (Modo Prueba):
|
||||
```
|
||||
Iniciando análisis en: /app/media
|
||||
Modo escaneo rápido - muestra de 10000 archivos
|
||||
Obteniendo muestra de archivos...
|
||||
Muestra obtenida: 10000 archivos
|
||||
Encontrados 5 modelos con campos de archivo
|
||||
Procesando Document...
|
||||
Document: 2059405 registros procesados
|
||||
Archivos huérfanos encontrados: 2763 (72.57 MB) - Tiempo: 7.81s
|
||||
|
||||
--- MODO PRUEBA: Los siguientes archivos se eliminarían ---
|
||||
- documents/vu_AC_0101_230_1703_3004804_4.pdf
|
||||
- documents/vu_AC_0101_300_3172_4001419_2.pdf
|
||||
... y 2743 archivos más
|
||||
```
|
||||
|
||||
### Eliminación Real:
|
||||
```
|
||||
¿Estás seguro de que quieres eliminar 2763 archivos? (s/N): s
|
||||
Progreso: 36.2% (1000 eliminados)
|
||||
Progreso: 72.4% (2000 eliminados)
|
||||
Eliminados 2763 archivos huérfanos (51.32 MB)
|
||||
```
|
||||
|
||||
## Casos de Uso
|
||||
|
||||
### Caso 1: Primera vez ejecutando el comando
|
||||
```bash
|
||||
# 1. Hacer análisis inicial
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan --dry-run"
|
||||
|
||||
# 2. Si hay pocos archivos (<5000), eliminar todos
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan"
|
||||
|
||||
# 3. Si hay muchos archivos, eliminar por lotes
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --limit 10000"
|
||||
```
|
||||
|
||||
### Caso 2: Mantenimiento regular
|
||||
```bash
|
||||
# Escaneo rápido y limpieza
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan"
|
||||
```
|
||||
|
||||
### Caso 3: Limpieza masiva después de migración de datos
|
||||
```bash
|
||||
# 1. Análisis completo primero
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --dry-run"
|
||||
|
||||
# 2. Limpieza por lotes grandes
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --limit 50000"
|
||||
```
|
||||
|
||||
## Consideraciones de Seguridad
|
||||
|
||||
### ⚠️ IMPORTANTE - Hacer Backup
|
||||
Siempre haz un backup de tu directorio `/media/` antes de ejecutar eliminaciones masivas:
|
||||
```bash
|
||||
# Backup del directorio media
|
||||
docker exec backend tar -czf /tmp/media_backup.tar.gz /app/media/
|
||||
|
||||
# Copiar backup al host
|
||||
docker cp backend:/tmp/media_backup.tar.gz ./media_backup_$(date +%Y%m%d_%H%M%S).tar.gz
|
||||
```
|
||||
|
||||
### ✅ Buenas Prácticas
|
||||
1. **Siempre usar `--dry-run` primero** para ver qué se va a eliminar
|
||||
2. **Empezar con lotes pequeños** (`--limit`) en lugar de eliminar todo de una vez
|
||||
3. **Verificar la aplicación** después de cada limpieza para asegurar que no se rompió nada
|
||||
4. **Ejecutar en horarios de bajo tráfico** para grandes volúmenes
|
||||
5. **Monitorear el espacio en disco** antes y después
|
||||
|
||||
### 🚨 Advertencias
|
||||
- Los archivos eliminados **NO SE PUEDEN RECUPERAR** fácilmente
|
||||
- El comando solo verifica referencias en la BD, no enlaces desde código o templates
|
||||
- Archivos muy recientes podrían estar en proceso de ser referenciados
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Error: "Too many open files"
|
||||
```bash
|
||||
# Aumentar límite de archivos abiertos
|
||||
docker exec -it backend bash -c "ulimit -n 65536 && cd /app && python manage.py cleanup_media_fast --quick-scan"
|
||||
```
|
||||
|
||||
### Proceso muy lento
|
||||
```bash
|
||||
# Usar modo quick-scan en lugar de escaneo completo
|
||||
docker exec -it backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan --dry-run"
|
||||
```
|
||||
|
||||
### Verificar que el comando existe
|
||||
```bash
|
||||
# Listar comandos disponibles
|
||||
docker exec -it backend bash -c "cd /app && python manage.py help"
|
||||
```
|
||||
|
||||
## Automatización
|
||||
|
||||
Para automatizar la limpieza regular, puedes crear un cron job:
|
||||
```bash
|
||||
# Ejecutar limpieza semanal los domingos a las 2 AM
|
||||
0 2 * * 0 docker exec backend bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan" >> /var/log/media_cleanup.log 2>&1
|
||||
```
|
||||
|
||||
## Monitoreo
|
||||
|
||||
Para monitorear el efecto de la limpieza:
|
||||
```bash
|
||||
# Antes de limpiar
|
||||
docker exec backend du -sh /app/media/
|
||||
|
||||
# Después de limpiar (verificar el cambio)
|
||||
docker exec backend du -sh /app/media/
|
||||
```
|
||||
Reference in New Issue
Block a user