feat: Fase 3 con campos condicionales; fix del monitor del ERP
Cosecha, polinizacion y fertilizacion en un solo flujo en vez de tres: skip_if muestra el producto solo a las dos que lo llevan y el pase solo a polinizacion. El lote se pregunta antes que el producto porque la dosis depende de los dos — sale de la fertilizacion que se autorizo en su modulo, no la elige el usuario. ErpMonitor construia api_base_url + /health, que no existe en el ERP: la ruta correcta es ?peticion=ping y la URL sale de company_endpoints como el resto. Por eso el panel mostraba el ERP caido. Tampoco mandaba el Bearer. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
8399a86972
commit
42adeb64d0
+19
-3
@@ -17,9 +17,24 @@ class ErpMonitor
|
||||
|
||||
public static function check(array $company): array
|
||||
{
|
||||
$baseUrl = rtrim($company['api_base_url'] ?? '', '/');
|
||||
$healthUrl = $baseUrl !== '' ? $baseUrl . '/health' : '';
|
||||
// El ERP no expone /health sino ?peticion=ping, y la URL sale de
|
||||
// company_endpoints como el resto de las llamadas: api_base_url no
|
||||
// sirve para esto. Sin esto el panel mostraba el ERP siempre caído.
|
||||
$apiKey = $company['api_key'] ?? '';
|
||||
$healthUrl = '';
|
||||
try {
|
||||
$stmt = db()->prepare(
|
||||
"SELECT url FROM company_endpoints WHERE company_id = ? AND endpoint_key = ? AND is_active = 1 LIMIT 1"
|
||||
);
|
||||
$stmt->execute([(int)$company['id'], 'numeros_dn']);
|
||||
$url = (string)($stmt->fetchColumn() ?: '');
|
||||
if ($url !== '') {
|
||||
// Cualquier endpoint sirve de referencia; se reemplaza por ping
|
||||
$healthUrl = preg_replace('/peticion=[^&]*/', 'peticion=ping', $url);
|
||||
}
|
||||
} catch (\PDOException $e) {
|
||||
$healthUrl = '';
|
||||
}
|
||||
|
||||
if ($healthUrl === '') {
|
||||
return [
|
||||
@@ -27,7 +42,7 @@ class ErpMonitor
|
||||
'company_name' => $company['name'] ?? '',
|
||||
'status' => 'unknown',
|
||||
'latency_ms' => null,
|
||||
'error' => 'Sin URL configurada',
|
||||
'error' => 'Sin endpoint registrado para esta empresa',
|
||||
'last_check' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
}
|
||||
@@ -40,6 +55,7 @@ class ErpMonitor
|
||||
CURLOPT_TIMEOUT => 10,
|
||||
CURLOPT_CONNECTTIMEOUT => 5,
|
||||
CURLOPT_HTTPHEADER => [
|
||||
'Authorization: Bearer ' . $apiKey,
|
||||
'X-API-Key: ' . $apiKey,
|
||||
'User-Agent: bot-palmas360-monitor/1.0',
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user