def verificar_timeouts():
    """Verifica atendimentos inativos e aplica timeouts."""
    log("Verificando timeouts...", "DEBUG")

    configs = carregar_configuracoes()
    timeout_alerta_min = int(configs.get('timeout_primeiro_alerta', '30'))
    timeout_encerramento_min = int(configs.get('timeout_encerramento', '30'))

    conn = get_db()
    cursor = conn.cursor(dictionary=True)
    cursor.execute("""
        SELECT a.id, a.cliente_numero, a.contexto_robot,
               (SELECT MAX(created_at) FROM mensagens_atendimento WHERE atendimento_id = a.id AND origem = 'cliente') as ultima_msg
        FROM atendimentos a
        WHERE a.status = 'robot'
    """)
    atendimentos = cursor.fetchall()
    cursor.close()
    conn.close()

    agora = datetime.now()
    for at in atendimentos:
        if not at['ultima_msg']:
            continue

        ultima = at['ultima_msg']
        if isinstance(ultima, str):
            ultima = datetime.strptime(ultima, '%Y-%m-%d %H:%M:%S')

        diff = (agora - ultima).total_seconds() / 60
        ctx = json.loads(at['contexto_robot']) if at['contexto_robot'] else {}
        alerta_enviado = ctx.get('timeout_alerta_enviado', False)

        if diff >= timeout_alerta_min + timeout_encerramento_min:
            msg_encerramento = configs.get('mensagem_timeout_encerramento',
                                          'Seu atendimento será encerrado por inatividade. Até logo!')
            enviar_mensagem_whatsapp(at['cliente_numero'], msg_encerramento)
            salvar_mensagem_robot(at['id'], msg_encerramento)

            conn2 = get_db()
            cur2 = conn2.cursor()
            cur2.execute("UPDATE atendimentos SET status = 'encerrado', encerrado_em = NOW() WHERE id = %s", (at['id'],))
            cur2.execute("DELETE FROM fila_robot WHERE atendimento_id = %s", (at['id'],))
            conn2.commit()
            cur2.close()
            conn2.close()
            log(f"Atendimento {at['id']} encerrado por inatividade", "INFO")

        elif diff >= timeout_alerta_min and not alerta_enviado:
            msg_alerta = configs.get('mensagem_timeout_alerta',
                                    'Olá! Ainda estou por aqui. Posso lhe ajudar em algo mais?')
            enviar_mensagem_whatsapp(at['cliente_numero'], msg_alerta)
            salvar_mensagem_robot(at['id'], msg_alerta)

            ctx['timeout_alerta_enviado'] = True
            conn2 = get_db()
            cur2 = conn2.cursor()
            cur2.execute("UPDATE atendimentos SET contexto_robot = %s WHERE id = %s",
                        (json.dumps(ctx), at['id']))
            conn2.commit()
            cur2.close()
            conn2.close()
            log(f"Alerta de inatividade enviado para atendimento {at['id']}", "INFO")