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
|
||||
import requests
|
||||
|
||||
|
||||
from .tasks.microservice_v2 import *
|
||||
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)
|
||||
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)
|
||||
|
||||
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