Se modifico management y models de tasks
This commit is contained in:
@@ -38,6 +38,7 @@ from api.logger.mixins import LoggingMixin
|
|||||||
from mixins.filtrado_organizacion import OrganizacionFiltradaMixin, ProcesosPorOrganizacionMixin
|
from mixins.filtrado_organizacion import OrganizacionFiltradaMixin, ProcesosPorOrganizacionMixin
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
||||||
from .tasks.microservice_v2 import *
|
from .tasks.microservice_v2 import *
|
||||||
from .tasks.auditoria import crear_partidas_por_pedimento
|
from .tasks.auditoria import crear_partidas_por_pedimento
|
||||||
|
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -8,4 +8,4 @@ class Task(models.Model):
|
|||||||
timestamp = models.DateTimeField(auto_now_add=True)
|
timestamp = models.DateTimeField(auto_now_add=True)
|
||||||
message = models.TextField()
|
message = models.TextField()
|
||||||
status = models.CharField(max_length=50)
|
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)
|
||||||
|
|||||||
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
|
||||||
Reference in New Issue
Block a user