microservicios
This commit is contained in:
52
api/customs/management/commands/README_microservicios.md
Normal file
52
api/customs/management/commands/README_microservicios.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# Comando de Microservicios
|
||||||
|
|
||||||
|
Este comando permite disparar tareas de procesamiento masivo por organización o por pedimento en el sistema EFC.
|
||||||
|
|
||||||
|
## Uso básico
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python manage.py microservicios [--organizacion_id=<id>] [--procesamiento=<tipo>] [--todos]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Opciones
|
||||||
|
|
||||||
|
- `--organizacion_id <id>`: Ejecuta los procesamientos solo para la organización indicada. Si se omite, se procesan todas las organizaciones.
|
||||||
|
- `--procesamiento <tipo>`: Ejecuta solo el tipo de procesamiento indicado para la organización. Si se omite, se ejecutan todos los procesamientos.
|
||||||
|
- `--todos`: Ejecuta todos los procesos para todas las organizaciones.
|
||||||
|
|
||||||
|
## Tipos de procesamiento disponibles
|
||||||
|
|
||||||
|
- `coves`: Procesa COVEs por organización/pedimento
|
||||||
|
- `edocs`: Procesa E-Documents por organización/pedimento
|
||||||
|
- `acuses`: Procesa acuses por organización/pedimento
|
||||||
|
- `acuse_coves`: Procesa acuse de COVEs por organización/pedimento
|
||||||
|
- `partidas`: Procesa partidas por organización/pedimento
|
||||||
|
- `pedimentos_completos`: Procesa pedimentos completos por organización/pedimento
|
||||||
|
- `remesas`: Procesa remesas por organización/pedimento
|
||||||
|
|
||||||
|
## Ejemplos
|
||||||
|
|
||||||
|
### Procesar todos los tipos para todas las organizaciones
|
||||||
|
```bash
|
||||||
|
python manage.py microservicios --todos
|
||||||
|
```
|
||||||
|
|
||||||
|
### Procesar solo COVEs para una organización
|
||||||
|
```bash
|
||||||
|
python manage.py microservicios --organizacion_id=ID_ORG --procesamiento=coves
|
||||||
|
```
|
||||||
|
|
||||||
|
### Procesar todos los tipos para una organización
|
||||||
|
```bash
|
||||||
|
python manage.py microservicios --organizacion_id=ID_ORG
|
||||||
|
```
|
||||||
|
|
||||||
|
### Procesar todos los tipos para un pedimento específico
|
||||||
|
```bash
|
||||||
|
python manage.py microservicios --pedimento_id=ID_PEDIMENTO
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notas
|
||||||
|
- El comando dispara las tareas de Celery de forma asíncrona.
|
||||||
|
- Revisa los logs y el estado de las tareas en el panel de administración de Celery o en los logs del sistema.
|
||||||
|
- Si agregas nuevos tipos de procesamiento, actualiza la función `ejecutar_procesamiento_por_organizacion` en `microservice_v2.py`.
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
from api.customs.tasks.auditoria import (
|
from api.customs.tasks.auditoria import (
|
||||||
auditar_procesamiento_remesas,
|
|
||||||
auditar_coves,
|
auditar_coves,
|
||||||
auditar_acuse_cove,
|
auditar_acuse_cove,
|
||||||
auditar_edocuments,
|
auditar_edocuments,
|
||||||
|
|||||||
44
api/customs/management/commands/microservicios.py
Normal file
44
api/customs/management/commands/microservicios.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from api.customs.models import Organizacion
|
||||||
|
from api.customs.tasks import microservice_v2
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = 'Ejecuta tareas de microservicio por organización y procesamiento.'
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
parser.add_argument(
|
||||||
|
'--organizacion_id',
|
||||||
|
type=str,
|
||||||
|
help='ID de la organización a procesar (opcional, si no se envía se procesan todas)'
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--procesamiento',
|
||||||
|
type=str,
|
||||||
|
help='Tipo de procesamiento a ejecutar (opcional, si no se envía se ejecutan todos)'
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--todos',
|
||||||
|
type=bool,
|
||||||
|
help='Ejecutar todos los procesos (opcional)'
|
||||||
|
)
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
|
||||||
|
todos = options.get('todos', False)
|
||||||
|
organizacion_id = options.get('organizacion_id')
|
||||||
|
procesamiento = options.get('procesamiento')
|
||||||
|
if todos:
|
||||||
|
organizaciones = Organizacion.objects.all()
|
||||||
|
for org in organizaciones:
|
||||||
|
microservice_v2.ejecutar_todos_por_organizacion(org.id)
|
||||||
|
self.stdout.write(self.style.SUCCESS('Se ejecutaron todos los procesos para todas las organizaciones.'))
|
||||||
|
return
|
||||||
|
|
||||||
|
if organizacion_id:
|
||||||
|
if procesamiento:
|
||||||
|
microservice_v2.ejecutar_procesamiento_por_organizacion(organizacion_id, procesamiento)
|
||||||
|
self.stdout.write(self.style.SUCCESS(f'Se ejecutó el procesamiento {procesamiento} para la organización {organizacion_id}.'))
|
||||||
|
else:
|
||||||
|
microservice_v2.ejecutar_todos_por_organizacion(organizacion_id)
|
||||||
|
self.stdout.write(self.style.SUCCESS(f'Se ejecutaron todos los procesos para la organización {organizacion_id}.'))
|
||||||
|
|
||||||
@@ -427,6 +427,35 @@ def documentos_con_errores(organizacion_id):
|
|||||||
print(f"Documento con error: {doc.id} en organización {organizacion_id}")
|
print(f"Documento con error: {doc.id} en organización {organizacion_id}")
|
||||||
# Aquí puedes agregar lógica adicional para manejar documentos con errores
|
# Aquí puedes agregar lógica adicional para manejar documentos con errores
|
||||||
# como enviar notificaciones, registrar en un log, etc.
|
# como enviar notificaciones, registrar en un log, etc.
|
||||||
# documentos = Document.objects.all() --- IGNORE ---
|
|
||||||
|
|
||||||
|
def ejecutar_por_organizacion_y_procesamiento(organizacion_id, procesamiento):
|
||||||
|
if procesamiento == 'coves':
|
||||||
|
procesar_coves.delay(organizacion_id)
|
||||||
|
elif procesamiento == 'edocs':
|
||||||
|
procesar_edocs.delay(organizacion_id)
|
||||||
|
elif procesamiento == 'acuses':
|
||||||
|
procesar_acuses.delay(organizacion_id)
|
||||||
|
elif procesamiento == 'acuse_coves':
|
||||||
|
procesar_acuse_coves.delay(organizacion_id)
|
||||||
|
elif procesamiento == 'partidas':
|
||||||
|
procesar_partidas.delay(organizacion_id)
|
||||||
|
elif procesamiento == 'pedimentos_completos':
|
||||||
|
procesar_pedimentos_completos.delay(organizacion_id)
|
||||||
|
elif procesamiento == 'remesas':
|
||||||
|
procesar_remesas.delay(organizacion_id)
|
||||||
|
|
||||||
|
else:
|
||||||
|
# Procesamiento no reconocido
|
||||||
|
pass
|
||||||
|
|
||||||
|
def ejecutar_todos_por_organizacion(organizacion_id):
|
||||||
|
procesar_coves.delay(organizacion_id)
|
||||||
|
procesar_edocs.delay(organizacion_id)
|
||||||
|
procesar_acuses.delay(organizacion_id)
|
||||||
|
procesar_acuse_coves.delay(organizacion_id)
|
||||||
|
procesar_partidas.delay(organizacion_id)
|
||||||
|
procesar_pedimentos_completos.delay(organizacion_id)
|
||||||
|
procesar_remesas.delay(organizacion_id)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user