tecsas3 batch run ejecuta una secuencia de operaciones contra la API TecsaS3 desde un
archivo JSON. Es la vía oficial para ingestar datos en masa (migraciones, cargas iniciales,
sincronización con sistemas legados) sin escribir un script de bash que concatene
llamadas. Internamente cada item se enruta a una operación del CLI
(<recurso>.<acción>, ver cli/src/tecsas3_cli/resources/batch.py:141-201).
Formatos aceptados
_parse_batch() (batch.py:106-138) acepta tres variantes:
- JSON array — un array de objetos, uno por operación.
- JSON Lines (JSONL) — un objeto JSON por línea.
- JSON object con clave
operations— el resto del objeto se ignora.
tecsas3 por su legibilidad en git diffs. Los
otros dos son útiles cuando la fuente de datos ya emite JSONL (logs, exports de otros
sistemas).
Esquema de cada item
Cada operación es un objeto JSON con esta forma mínima:op también acepta la clave alternativa "operation". El payload se pasa tal cual al
endpoint HTTP subyacente. Las operaciones soportadas hoy (batch.py:151-161) son:
Ejemplo: 3 pacientes en un archivo
Guarda el siguiente contenido comopacientes.json:
Ejecución
Salida
La respuesta debatch run es siempre un objeto JSON con esta estructura
(batch.py:88-97):
--stop-on-error está activo y se produce un fallo:
Flags y comportamiento
El
exit_code del proceso es 0 si todos los items se ejecutaron sin error. Si hubo
al menos un fallo, se eleva TecsaError(code="BATCH_FAILED") con details.first_error
apuntando al primer fallo — útil para cortar pipelines en CI.
Patrones de uso
Carga inicial con conteo de progreso
Idempotencia con paciente.get previo
Cuando un batch es re-ejecutable, valida primero con un paciente.get por ID antes de
intentar paciente.create. Esto convierte la operación en idempotente:
Batch + Pipeline
Combinabatch run con pipe run para ingestar en un tenant y disparar notificaciones en
otro. El placeholder ${batch_run.results[0].result.id} propaga el ID creado.
Errores frecuentes
Próximos pasos
- Para workflows con dependencias entre steps (output de A alimenta a B), usa
pipe runen su lugar. - Versiona los archivos batch en git y valida el formato en CI con
jq . pacientes.json. - Para datasets grandes (>1k items), divide en chunks de 100 y usa
--continue-on-errorcon checkpoints por índice.
Referencias
cli/src/tecsas3_cli/resources/batch.py:26-103—batch_run(loop principal)cli/src/tecsas3_cli/resources/batch.py:106-138—_parse_batch()(formatos aceptados)cli/src/tecsas3_cli/resources/batch.py:141-201—_execute_op()(mapa recurso.acción)cli/src/tecsas3_cli/resources/paciente.py:260-312—paciente create(esquema del payload)