Se modifico management y models de tasks

This commit is contained in:
2025-10-08 21:15:39 -06:00
parent 113b25ee81
commit 3c9ef31b22
6 changed files with 164 additions and 1 deletions

View File

@@ -38,6 +38,7 @@ from api.logger.mixins import LoggingMixin
from mixins.filtrado_organizacion import OrganizacionFiltradaMixin, ProcesosPorOrganizacionMixin
import requests
from .tasks.microservice_v2 import *
from .tasks.auditoria import crear_partidas_por_pedimento

View File

@@ -0,0 +1,24 @@
# Generated by Django 5.2.3 on 2025-10-09 03:06
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('customs', '0016_alter_pedimento_unique_together'),
('tasks', '0002_task_organizacion'),
]
operations = [
migrations.RemoveField(
model_name='task',
name='result',
),
migrations.AddField(
model_name='task',
name='servicio',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='customs.servicio'),
),
]

View File

@@ -8,4 +8,4 @@ class Task(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
message = models.TextField()
status = models.CharField(max_length=50)
result = models.TextField(null=True, blank=True)
servicio = models.ForeignKey('customs.Servicio', on_delete=models.CASCADE, null=True, blank=True)

View 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