feat: mantenimiento cierra Fase 1; sin Flows, todo en chat
Mantenimiento no abre ni cierra ciclos porque no tiene tabla de ciclos: se registra avance sobre lotes que ya tienen cantidad pendiente de asignar. Va como flujo aparte y no dentro de ciclos, con la cantidad faltante en la etiqueta para poder decidir sin salir de la lista. Se descarta el camino de WhatsApp Flows: pluviometria y ciclos se quedan en chat, que ya funcionan. Se quitan del menu las descripciones que prometian formulario. FLOWS-META.txt se conserva como referencia por si la decision cambia. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
e3399cca9e
commit
356c157811
+49
-4
@@ -247,8 +247,9 @@ $configJson = [
|
||||
'title' => 'Opciones',
|
||||
'rows' => [
|
||||
['id' => 'registrar_ausentismo', 'modulo' => 'ausentismos', 'title' => '👥 Ausentismo', 'description' => 'Registrar falta, incapacidad o permiso'],
|
||||
['id' => 'registrar_pluviometria','modulo' => 'pluviometria', 'title' => '🌧️ Pluviometría', 'description' => 'Milímetros por finca · pronto formulario'],
|
||||
['id' => 'registrar_ciclo', 'modulo' => 'ciclos', 'title' => '🔄 Ciclos', 'description' => 'Abrir o cerrar lotes · pronto formulario'],
|
||||
['id' => 'registrar_pluviometria','modulo' => 'pluviometria', 'title' => '🌧️ Pluviometría', 'description' => 'Milímetros de lluvia por finca'],
|
||||
['id' => 'registrar_ciclo', 'modulo' => 'ciclos', 'title' => '🔄 Ciclos', 'description' => 'Abrir o cerrar lotes'],
|
||||
['id' => 'registrar_mantenimiento','modulo' => 'mantenimiento', 'title' => '🔧 Mantenimiento', 'description' => 'Avance sobre lotes pendientes'],
|
||||
],
|
||||
],
|
||||
],
|
||||
@@ -551,6 +552,46 @@ $configJson = [
|
||||
],
|
||||
],
|
||||
|
||||
// Mantenimiento no abre ni cierra ciclos —no tiene tabla de ciclos—:
|
||||
// se registra avance sobre lotes que ya tienen cantidad pendiente.
|
||||
'registrar_mantenimiento' => [
|
||||
'type' => 'collect_and_post',
|
||||
'endpoint_key' => 'labores_up',
|
||||
'header' => '🔧 Mantenimiento',
|
||||
'confirm' => true,
|
||||
'success_text' => '✅ Enviado a Palmas360.',
|
||||
'back' => 'enviar_informacion',
|
||||
'requires' => ['grupo_mant' => 'grupo_id'],
|
||||
'resolver' => 'ciclo_mantenimiento',
|
||||
'nlu_description' => 'Registrar avance de mantenimiento: plateo, corona, poda',
|
||||
'fields' => [
|
||||
[
|
||||
'key' => 'fecha',
|
||||
'label' => 'Fecha',
|
||||
'type' => 'date_quick',
|
||||
'prompt' => '📅 ¿De qué fecha?',
|
||||
'other_validate' => 'date',
|
||||
'other_prompt' => 'Escribe la fecha (YYYY-MM-DD):',
|
||||
],
|
||||
[
|
||||
'key' => 'lote_id',
|
||||
'label' => 'Lote',
|
||||
'type' => 'select',
|
||||
'prompt' => 'Elige el lote (entre paréntesis va lo que falta):',
|
||||
'source_endpoint_key' => 'lotes_mantenimiento_dn',
|
||||
'value_field' => 'id',
|
||||
'label_field' => 'label',
|
||||
'empty_text' => '⚠️ No hay lotes con cantidad pendiente para ese grupo.',
|
||||
],
|
||||
[
|
||||
'key' => 'cantidad',
|
||||
'label' => 'Cantidad',
|
||||
'type' => 'text',
|
||||
'prompt' => '¿Qué cantidad avanzaste?',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Upload
|
||||
'enviar_informacion' => ['type' => 'menu', 'menu' => 'submenu_subir_ciclos', 'nlu_skip' => true, 'back' => 'show_main_menu'],
|
||||
|
||||
@@ -581,8 +622,9 @@ $configJson = [
|
||||
'title' => 'Opciones',
|
||||
'rows' => [
|
||||
['id' => 'registrar_ausentismo', 'modulo' => 'ausentismos', 'title' => '👥 Ausentismo', 'description' => 'Registrar falta, incapacidad o permiso'],
|
||||
['id' => 'registrar_pluviometria','modulo' => 'pluviometria', 'title' => '🌧️ Pluviometría', 'description' => 'Milímetros por finca · pronto formulario'],
|
||||
['id' => 'registrar_ciclo', 'modulo' => 'ciclos', 'title' => '🔄 Ciclos', 'description' => 'Abrir o cerrar lotes · pronto formulario'],
|
||||
['id' => 'registrar_pluviometria','modulo' => 'pluviometria', 'title' => '🌧️ Pluviometría', 'description' => 'Milímetros de lluvia por finca'],
|
||||
['id' => 'registrar_ciclo', 'modulo' => 'ciclos', 'title' => '🔄 Ciclos', 'description' => 'Abrir o cerrar lotes'],
|
||||
['id' => 'registrar_mantenimiento','modulo' => 'mantenimiento', 'title' => '🔧 Mantenimiento', 'description' => 'Avance sobre lotes pendientes'],
|
||||
],
|
||||
],
|
||||
],
|
||||
@@ -699,6 +741,9 @@ $endpoints = [
|
||||
['key' => 'lotes_apertura_todos_dn', 'dir' => 'download', 'url' => $BASE . '?peticion=lotes_apertura_dn&ciclo={ciclo}&finca_id={finca_id}&todos=1'],
|
||||
['key' => 'lotes_cierre_todos_dn', 'dir' => 'download', 'url' => $BASE . '?peticion=lotes_abiertos_dn&ciclo={ciclo}&finca_id={finca_id}&todos=1'],
|
||||
['key' => 'ciclos_up', 'dir' => 'upload', 'url' => $BASE . '?peticion=ciclos_{ciclo}_up'],
|
||||
// Mantenimiento: lotes con cantidad pendiente de asignar, no apertura/cierre
|
||||
['key' => 'lotes_mantenimiento_dn', 'dir' => 'download', 'url' => $BASE . '?peticion=lotes_mantenimiento_dn&grupo={grupo_id}&finca_id={finca_id}'],
|
||||
['key' => 'lotes_mantenimiento_todos_dn', 'dir' => 'download', 'url' => $BASE . '?peticion=lotes_mantenimiento_dn&grupo={grupo_id}&finca_id={finca_id}&todos=1'],
|
||||
// Todos los lotes (PDF) por ciclo
|
||||
['key' => 'cosecha_todos_dn', 'dir' => 'download', 'url' => $BASE . '?peticion=ciclos_cosecha_dn&finca_id={finca_id}'],
|
||||
['key' => 'polinizacion_todos_dn', 'dir' => 'download', 'url' => $BASE . '?peticion=ciclos_polinizacion_dn&finca_id={finca_id}'],
|
||||
|
||||
@@ -542,6 +542,26 @@ $filas = function (int $total, bool $verTodos): int {
|
||||
check('la lista corta entra en el límite de WhatsApp', $filas(10, true) <= 10, true);
|
||||
check('el listado completo también', $filas(40, false) <= 10, true);
|
||||
|
||||
echo "\nMantenimiento (POST)\n";
|
||||
|
||||
$mto = $flows['registrar_mantenimiento'] ?? [];
|
||||
$mf = array_column($mto['fields'] ?? [], null, 'key');
|
||||
|
||||
check('pide fecha, lote y cantidad', array_keys($mf), ['fecha', 'lote_id', 'cantidad']);
|
||||
check('los lotes salen de los que tienen pendiente',
|
||||
$mf['lote_id']['source_endpoint_key'] ?? null, 'lotes_mantenimiento_dn');
|
||||
check('endpoint registrado', isset($eps['lotes_mantenimiento_dn']), true);
|
||||
check('postea como labor diaria', $mto['endpoint_key'] ?? null, 'labores_up');
|
||||
|
||||
// El grupo se pide antes, con la misma intencion pendiente de los informes
|
||||
check('pide el grupo si falta', $mto['requires'] ?? null, ['grupo_mant' => 'grupo_id']);
|
||||
check('y lo resuelve con el selector', $mto['resolver'] ?? null, 'ciclo_mantenimiento');
|
||||
|
||||
// No va en el flujo de ciclos: no tiene apertura ni cierre
|
||||
$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 "\nAlcance de fincas por número\n";
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user