[
  {
    "type": "function",
    "function": {
      "name": "consultar_productos_whatsapp",
      "description": "Busca medicamentos y productos en el inventario real del POS con precios y stock disponible (ej. 'acetaminofen', 'dolex', 'ibuprofeno', 'antigripal', 'jarabe tos', 'diarrea', 'antiacido', 'bloqueador'). PROHIBIDO ejecutar esta función si el cliente está pidiendo el total de la cuenta/factura/pedido, saludando o despidiéndose.",
      "parameters": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token privado de WhatsApp de la tienda / base de datos."
          },
          "nombre": {
            "type": "string",
            "description": "Marca comercial o principio activo farmacéutico. Si el cliente tiene un error de digitación (ej. 'acvil'/'abvil' -> 'Advil'; 'carmelu' -> 'Carmelub, Carboximetilcelulosa, Systane'; 'bolex' -> 'Dolex'; 'sevedool' -> 'Sevedol'; 'vuscapina' -> 'Buscapina'; 'hils' -> 'Hills'), envía tanto el término original como la MARCA FARMACÉUTICA corregida separados por coma. PROHIBIDO cambiar nombres de medicamentos por sabores o comidas como 'caramelo', 'fresa' o 'menta'. PROHIBIDO buscar palabras genéricas ambiguas solas como 'lubricante' sin especificar la categoría (ej. para ojos busca 'Carmelub, Carboximetilcelulosa, Systane, Refresh, Freegen, Humylub, Lagrimas'; para uso íntimo busca 'Ludika, Lubricante intimo, Durex')."
          },
          "codigo": {
            "type": "string",
            "description": "Código SKU o de barras exacto si se conoce."
          },
          "bodega": {
            "type": "integer",
            "description": "ID de la bodega donde se despachará el pedido (por defecto 1)."
          },
          "limit": {
            "type": "integer",
            "description": "Máximo número de productos a retornar (por defecto 15)."
          }
        },
        "required": ["token"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "identificar_cliente_whatsapp",
      "description": "Busca un cliente en el sistema POS usando su número de celular / WhatsApp o cédula para saludarlo por su nombre y conocer su dirección de entrega registrada.",
      "parameters": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token privado de WhatsApp."
          },
          "telefono": {
            "type": "string",
            "description": "Número de WhatsApp o celular del cliente (ej. '3101234567')."
          },
          "cedula": {
            "type": "string",
            "description": "Cédula o NIT del cliente si ya la proporcionó."
          }
        },
        "required": ["token"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "consultar_historial_cliente_whatsapp",
      "description": "Consulta el historial de compras recurrentes o anteriores del cliente para responder preguntas como '¿qué fue lo que compré la última vez?', 'mándame lo mismo de siempre', o medicamentos de su tratamiento habitual.",
      "parameters": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token privado de WhatsApp."
          },
          "telefono": {
            "type": "string",
            "description": "Número de teléfono o WhatsApp del cliente."
          },
          "cliente": {
            "type": "string",
            "description": "Cédula o identificación del cliente si se conoce."
          },
          "bodega": {
            "type": "integer",
            "description": "ID de la bodega (por defecto 1)."
          }
        },
        "required": ["token"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "registrar_cliente_whatsapp",
      "description": "Registra o actualiza un cliente en el POS con su nombre, teléfono de WhatsApp, dirección de entrega y barrio para poder enviarle su pedido.",
      "parameters": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token privado de WhatsApp."
          },
          "nombre": {
            "type": "string",
            "description": "Nombre completo del cliente."
          },
          "telefono": {
            "type": "string",
            "description": "Número de WhatsApp / Celular del cliente."
          },
          "direccion": {
            "type": "string",
            "description": "Dirección completa de entrega del domicilio."
          },
          "barrio": {
            "type": "string",
            "description": "Barrio o sector de la ciudad."
          },
          "cedula": {
            "type": "string",
            "description": "Cédula o documento (opcional, si no se tiene se usa el teléfono)."
          },
          "correo": {
            "type": "string",
            "description": "Correo electrónico (opcional)."
          }
        },
        "required": ["token", "nombre", "telefono"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "crear_pedido_whatsapp",
      "description": "Asienta el pedido confirmado en el POS. OBLIGATORIO: Debes incluir en 'productos' TODOS los ítems acumulados en el carrito de compras durante toda la conversación, no solo el último.",
      "parameters": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token privado de WhatsApp."
          },
          "cliente": {
            "type": "string",
            "description": "Número de cédula o teléfono del cliente."
          },
          "cedula": {
            "type": "string",
            "description": "Número de cédula o NIT del cliente para registrar la cotización en el POS."
          },
          "nombre": {
            "type": "string",
            "description": "Nombre completo del cliente."
          },
          "bodega": {
            "type": "integer",
            "description": "ID de la bodega que despachará el pedido (por defecto 1)."
          },
          "direccion_entrega": {
            "type": "string",
            "description": "Dirección exacta donde se entregará el pedido."
          },
          "correo": {
            "type": "string",
            "description": "Correo electrónico del cliente para facturación electrónica DIAN (OBLIGATORIO)."
          },
          "telefono": {
            "type": "string",
            "description": "Número de celular o teléfono de contacto del cliente (10 dígitos colombianos, ej. '3101234567')."
          },
          "metodo_pago": {
            "type": "string",
            "description": "Forma de pago acordada (ej. 'Contraentrega Efectivo', 'Nequi', 'Daviplata', 'Transferencia')."
          },
          "nota": {
            "type": "string",
            "description": "Observaciones especiales del cliente, valor o costo del domicilio acordado, instrucciones de entrega (ej. 'Llevar cambio de $50.000', 'Domicilio: $5.000', 'Timbrar en apto 201')."
          },
          "productos": {
            "type": "array",
            "description": "Lista con TODOS los productos acumulados en el carrito. Si el cliente pidió 3 productos, este array DEBE contener los 3 productos.",
            "items": {
              "type": "object",
              "properties": {
                "codigo": {
                  "type": "string",
                  "description": "Nombre exacto del producto tal como fue cotizado en el chat (o su código SKU)."
                },
                "cantidad_cajas": {
                  "type": "number",
                  "description": "Cantidad de cajas completas a pedir (por defecto 1 si no se especifica)."
                },
                "cantidad_fracciones": {
                  "type": "number",
                  "description": "Cantidad de unidades/fracciones sueltas/tabletas a pedir si aplica (por defecto 0)."
                }
              },
              "required": ["codigo"]
            }
          }
        },
        "required": ["token", "cliente", "direccion_entrega", "correo", "productos"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "solicitar_asesor_humano_whatsapp",
      "description": "Transfiere la conversación a un asesor humano de la droguería y pausa las respuestas automáticas del bot cuando el cliente solicita hablar con una persona.",
      "parameters": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token privado de WhatsApp."
          },
          "telefono": {
            "type": "string",
            "description": "Teléfono del cliente que solicita la atención humana."
          },
          "motivo": {
            "type": "string",
            "description": "Razón por la que solicita el asesor (ej. 'Cliente pidió hablar con una persona', 'Consulta médica especializada')."
          }
        },
        "required": ["token", "telefono"]
      }
    }
  }
]
