fix: el NLU respeta los modulos del perfil
Los menus se filtraban por modulo pero el texto libre no: un perfil limitado a pluviometria podia escribir "registrar ausentismo" y el NLU lo llevaba igual. El mismo agujero que ya cerramos con las fincas. moduloDeFlow() decide por convencion de nombre a que modulo pertenece cada flow —'modulo' explicito manda— y se aplica en dos puntos: el catalogo que ve el modelo llega filtrado, y el ruteo verifica igual la clave devuelta por si el modelo alucina una que no le ofrecieron. Lo permitido sigue directo: "subir pluviometria" cae en la fecha con un solo mensaje, "subir labores diarias" arranca el flujo. Cinco casos nuevos. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
9ae4b0dee3
commit
6c524a39ed
@@ -153,8 +153,11 @@ class AiBot
|
||||
/** Cola de respuestas para routeOrChat; vacía = chat vacío (cae al fallback). */
|
||||
public static array $respuestas = [];
|
||||
|
||||
public static function routeOrChat(array $company, array $context, string $input): array
|
||||
public static array $modulosRecibidos = [];
|
||||
|
||||
public static function routeOrChat(array $company, array $context, string $input, array $modulosPermitidos = []): array
|
||||
{
|
||||
self::$modulosRecibidos = $modulosPermitidos;
|
||||
return array_shift(self::$respuestas) ?? ['action' => 'chat', 'text' => ''];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user