feat: labores diarias fase 2; el bot repite lo que responde el ERP

Quinto flujo de carga: fecha, labor, lote, trabajadores y cantidad. El catalogo
de novedades lo filtra el ERP por fase, asi que el bot no decide cual
corresponde. El trabajador vinculado se pre-llena y el supervisor elige.

Ademas, collect_and_post descartaba la respuesta del POST y decia "listo" aunque
el ERP hubiera rechazado parte. Ahora repite lo que contesta: cuantos entraron,
quien ya tenia jornal, que quedo afuera.

Y from_phone respeta el tipo del campo: multi_select espera un arreglo aunque el
perfil traiga un solo tercero.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-19 20:32:42 -05:00
co-authored by Claude Sonnet 4.6
parent 356c157811
commit 8399a86972
3 changed files with 107 additions and 4 deletions
+18
View File
@@ -562,6 +562,24 @@ $cic = array_column($flows['registrar_ciclo']['fields'], null, 'key');
check('mantenimiento no está entre los ciclos',
in_array('mantenimiento', array_column($cic['ciclo']['options'], 'id'), true), false);
echo "\nLabores diarias (POST)\n";
$lab = $flows['registrar_labor'] ?? [];
$lf = array_column($lab['fields'] ?? [], null, 'key');
check('pide fecha, labor, lote, trabajadores y cantidad',
array_keys($lf), ['fecha', 'novedad_id', 'lote_id', 'empleados', 'cantidad']);
check('el catálogo lo filtra el ERP por fase',
$lf['novedad_id']['source_endpoint_key'] ?? null, 'novedades_labor_dn');
check('los trabajadores se eligen de a varios',
$lf['empleados']['type'] ?? null, 'multi_select');
check('y el vinculado se pre-llena',
$lf['empleados']['from_phone'] ?? null, 'tercero_id');
check('postea a labores_up', $lab['endpoint_key'] ?? null, 'labores_up');
foreach (['novedades_labor_dn', 'lotes_finca_dn', 'empleados_labor_dn', 'labores_up'] as $k) {
check("endpoint {$k} registrado", isset($eps[$k]), true);
}
echo "\nAlcance de fincas por número\n";
/**