def executar_fluxo_suporte(ctx: dict, mensagem: str, atendimento_id: int = None) -> dict:
    """Fluxo de suporte técnico completo com reboot, verificação online, LEDs e Wi-Fi"""
    
    import time
    from datetime import datetime
    
    log("[FLUXO_SUPORTE] Executando suporte técnico", "DEBUG")
    
    # ============================================
    # FUNÇÃO AUXILIAR PARA TRANSFERIR
    # ============================================
    def transferir_para_suporte(motivo: str, solicitar_midia: bool = False) -> dict:
        adicionar_fila_humana(atendimento_id, 2)
        conn = get_db()
        cur = conn.cursor()
        cur.execute("UPDATE atendimentos SET status = 'fila', setor_id = 2 WHERE id = %s", (atendimento_id,))
        cur.execute("DELETE FROM fila_robot WHERE atendimento_id = %s", (atendimento_id,))
        conn.commit()
        cur.close()
        conn.close()
        log(f"[FLUXO_SUPORTE] Transferido para Suporte. Motivo: {motivo}", "INFO")
        
        resposta = "✅ Vou transferir você para o setor de Suporte Técnico. Um atendente irá te ajudar em breve."
        if solicitar_midia:
            resposta += " Por favor, tire uma FOTO e um VÍDEO dos LEDs do modem para agilizar o atendimento."
        
        template = MENSAGEM_ENCAMINHAMENTO_HUMANO if 'MENSAGEM_ENCAMINHAMENTO_HUMANO' in dir() else "✅ Entendido! Vou encaminhar seu atendimento para o setor {setor}."
        resposta = template.replace("{setor}", "Suporte Técnico").replace("{protocolo}", ctx.get("protocolo", "N/A"))
        return {"resposta": resposta, "acao": "transferir", "setor_id": 2}
    
    # ============================================
    # ESTADO 1: Aguardando confirmação de resolução
    # ============================================
    if ctx.get("aguardando_confirmacao_resolucao"):
        msg_lower = mensagem.lower().strip()
        
        if msg_lower in ["sim", "s", "yes", "funcionou", "resolveu", "voltou", "normalizou", "ok"]:
            ctx["aguardando_confirmacao_resolucao"] = False
            ctx["reinicializacao_orientada"] = False
            ctx["intencao_definida"] = None
            ctx["aguardando_pronto"] = False
            ctx["aguardando_status_los"] = False
            ctx["aguardando_status_pon"] = False
            ctx["aguardando_teste_wifi"] = False
            return {"resposta": "✅ Que bom que o problema foi resolvido! Fico feliz em ter ajudado. Em que mais posso ajudá-lo hoje?"}
        elif msg_lower in ["nao", "não", "n", "no", "ainda não", "continua", "persiste", "nada"]:
            ctx["aguardando_confirmacao_resolucao"] = False
            if ctx.get("veio_do_online"):
                ctx["aguardando_teste_wifi"] = True
                return {"resposta": "Vamos testar a conexão Wi-Fi. Desative o Wi-Fi do seu smartphone, aguarde 5 segundos e ative novamente. Conecte na sua rede Wi-Fi e teste se a internet está funcionando.\n\nA internet voltou a funcionar? (responda SIM ou NÃO)"}
            else:
                ctx["aguardando_status_los"] = True
                return {
                    "resposta": "Vamos verificar os LEDs do seu modem para entender melhor o problema.",
                    "acao": "enviar_imagem",
                    "url": "https://bot.altavistatelecom.com.br/atendimento/imagens/los.jpg",
                    "legenda": "Identifique o LED LOS no seu modem",
                    "mensagem_sequencia": "O LED LOS está: VERMELHO, VERMELHO PISCANDO, APAGADO ou NÃO TEM? (responda com uma destas opções)"
                }
        else:
            return {"resposta": "O problema foi resolvido? (responda SIM ou NÃO)"}
    
    # ============================================
    # ESTADO 2: Aguardando PRONTO após reboot
    # ============================================
    if ctx.get("aguardando_pronto"):
        msg_upper = mensagem.upper().strip()
        msg_lower = mensagem.lower().strip()
        
        palavras_pronto = ["PRONTO", "PRONT", "PRON", "FIZ", "REINICIEI", "TERMINEI"]
        if msg_upper in palavras_pronto or msg_lower in ["pronto", "pront", "fiz", "reiniciei", "terminei"]:
            login = ctx.get("login_cliente")
            if not login:
                cadastros = ctx.get("ultima_consulta_cpf", [])
                id_cliente = ctx.get("id_cliente")
                for cad in cadastros:
                    if cad.get("id_cliente") == id_cliente:
                        planos_ativos = filtrar_planos_ativos(cad.get("planos", []))
                        if planos_ativos:
                            login = planos_ativos[0].get("login")
                            ctx["login_cliente"] = login
                        break
            
            if login:
                resultado = chamar_api_radiusnet("verificar_status_online", login=login)
                log(f"[FLUXO_SUPORTE] Status online para login {login}: {resultado}", "DEBUG")
                
                if resultado.get("success"):
                    dados = resultado.get("data", [])
                    # CORREÇÃO: usar status_conexao, não status_online
                    online = dados[0].get("status_conexao") == "online" if dados else False
                    log(f"[FLUXO_SUPORTE] Cliente está online: {online}", "DEBUG")
                    
                    if online:
                        ctx["aguardando_pronto"] = False
                        ctx["aguardando_confirmacao_resolucao"] = True
                        ctx["veio_do_online"] = True
                        return {"resposta": "Sistema indica que seu modem está online. A internet voltou a funcionar? (responda SIM ou NÃO)"}
                    else:
                        ctx["aguardando_pronto"] = False
                        ctx["aguardando_status_los"] = True
                        return {
                            "resposta": "Sistema indica que seu modem está offline. Vamos verificar os LEDs.",
                            "acao": "enviar_imagem",
                            "url": "https://bot.altavistatelecom.com.br/atendimento/imagens/los.jpg",
                            "legenda": "Identifique o LED LOS no seu modem",
                            "mensagem_sequencia": "O LED LOS está: VERMELHO, VERMELHO PISCANDO, APAGADO ou NÃO TEM? (responda com uma destas opções)"
                        }
                else:
                    log(f"[FLUXO_SUPORTE] Erro na consulta: {resultado.get('error')}", "WARNING")
                    ctx["aguardando_pronto"] = False
                    ctx["aguardando_status_los"] = True
                    return {
                        "resposta": "Vamos verificar os LEDs do seu modem.",
                        "acao": "enviar_imagem",
                        "url": "https://bot.altavistatelecom.com.br/atendimento/imagens/los.jpg",
                        "legenda": "Identifique o LED LOS no seu modem",
                        "mensagem_sequencia": "O LED LOS está: VERMELHO, VERMELHO PISCANDO, APAGADO ou NÃO TEM? (responda com uma destas opções)"
                    }
            else:
                ctx["aguardando_pronto"] = False
                ctx["aguardando_status_los"] = True
                return {
                    "resposta": "Vamos verificar os LEDs do seu modem.",
                    "acao": "enviar_imagem",
                    "url": "https://bot.altavistatelecom.com.br/atendimento/imagens/los.jpg",
                    "legenda": "Identifique o LED LOS no seu modem",
                    "mensagem_sequencia": "O LED LOS está: VERMELHO, VERMELHO PISCANDO, APAGADO ou NÃO TEM? (responda com uma destas opções)"
                }
        else:
            return {"resposta": "Digite PRONTO quando terminar o procedimento de reinicialização."}
    
    # ============================================
    # ESTADO 3: Aguardando status do LED LOS
    # ============================================
    if ctx.get("aguardando_status_los"):
        msg_lower = mensagem.lower().strip()
        
        los_problema = ["vermelho", "red", "piscando", "blinking", "vermelho piscando", "pisca"]
        los_normal = ["apagado", "off", "desligado", "não tem", "nao tem", "sem led", "nao possui", "não possui"]
        
        if any(p in msg_lower for p in los_problema):
            ctx["aguardando_status_los"] = False
            ctx["intencao_definida"] = None
            return transferir_para_suporte("LED LOS com problema (vermelho/piscando)", False)
        elif any(p in msg_lower for p in los_normal):
            ctx["aguardando_status_los"] = False
            ctx["aguardando_status_pon"] = True
            return {
                "resposta": "O LED LOS está apagado ou seu modem não tem este LED. Vamos verificar o LED PON.",
                "acao": "enviar_imagem",
                "url": "https://bot.altavistatelecom.com.br/atendimento/imagens/pon.jpg",
                "legenda": "Identifique o LED PON no seu modem",
                "mensagem_sequencia": "O LED PON está: VERDE FIXO, VERDE PISCANDO, APAGADO ou VERMELHO? (responda com uma destas opções)"
            }
        else:
            return {"resposta": "O LED LOS está: VERMELHO, VERMELHO PISCANDO, APAGADO ou NÃO TEM? (responda com uma destas opções)"}
    
    # ============================================
    # ESTADO 4: Aguardando status do LED PON
    # ============================================
    if ctx.get("aguardando_status_pon"):
        msg_lower = mensagem.lower().strip()
        
        pon_problema = ["apagado", "off", "desligado", "vermelho", "red"]
        pon_normal = ["verde", "green", "verde fixo", "verde piscando", "piscando verde", "fixo"]
        
        if any(p in msg_lower for p in pon_problema):
            ctx["aguardando_status_pon"] = False
            ctx["intencao_definida"] = None
            return transferir_para_suporte("LED PON com problema (apagado/vermelho)", False)
        elif any(p in msg_lower for p in pon_normal):
            ctx["aguardando_status_pon"] = False
            ctx["aguardando_teste_wifi"] = True
            return {"resposta": "O LED PON está verde, indicando que o sinal de fibra está OK. Vamos testar a conexão Wi-Fi.\n\nDesative o Wi-Fi do seu smartphone, aguarde 5 segundos e ative novamente. Conecte na sua rede Wi-Fi e teste se a internet está funcionando.\n\nA internet voltou a funcionar? (responda SIM ou NÃO)"}
        else:
            return {"resposta": "O LED PON está: VERDE FIXO, VERDE PISCANDO, APAGADO ou VERMELHO? (responda com uma destas opções)"}
    
    # ============================================
    # ESTADO 5: Aguardando teste de Wi-Fi
    # ============================================
    if ctx.get("aguardando_teste_wifi"):
        msg_lower = mensagem.lower().strip()
        
        if msg_lower in ["sim", "s", "yes", "funcionou", "resolveu", "voltou", "normalizou", "ok"]:
            ctx["aguardando_teste_wifi"] = False
            ctx["intencao_definida"] = None
            return {"resposta": "✅ Que bom que o problema foi resolvido! Fico feliz em ter ajudado. Em que mais posso ajudá-lo hoje?"}
        else:
            ctx["aguardando_teste_wifi"] = False
            ctx["intencao_definida"] = None
            return transferir_para_suporte("Cliente testou Wi-Fi e continua sem internet", True)
    
    # ============================================
    # INÍCIO: Primeira vez que entra no fluxo
    # ============================================
    if not ctx.get("id_cliente"):
        return {"resposta": "Preciso identificar seu cadastro primeiro. Informe seu CPF."}
    
    cadastros = ctx.get("ultima_consulta_cpf", [])
    id_cliente = ctx.get("id_cliente")
    
    cad = None
    for c in cadastros:
        if c.get("id_cliente") == id_cliente:
            cad = c
            break
    
    if not cad:
        return {"resposta": "Não localizei seus dados. Informe o CPF novamente."}
    
    status_cliente = cad.get("status_cliente", "Ativo")
    
    if status_cliente in ["Avisado", "Bloqueado"]:
        return {"resposta": f"Seu plano está com status *{status_cliente}* devido a atraso no pagamento. Deseja regularizar agora com um desbloqueio em confiança? (responda SIM ou NÃO)"}
    
    # Extrair login do cliente
    planos_ativos = filtrar_planos_ativos(cad.get("planos", []))
    if planos_ativos:
        login = planos_ativos[0].get("login")
        if login:
            ctx["login_cliente"] = login
            log(f"[FLUXO_SUPORTE] Login salvo: {login}", "DEBUG")
    
    ctx["reinicializacao_orientada"] = True
    ctx["aguardando_pronto"] = True
    
    return {
        "resposta": "Devido a oscilações na rede elétrica, muitas vezes o modem perde a sincronia. O procedimento abaixo já resolve a maioria dos casos de lentidão ou falta de internet.",
        "acao": "enviar_imagem",
        "url": "https://bot.altavistatelecom.com.br/atendimento/imagens/procedimento_reboot.jpg",
        "legenda": "Siga os passos para reiniciar o modem",
        "mensagem_sequencia": "Após realizar o procedimento, digite PRONTO."
    }