import random
import time
# SIMULAÇÃO DE API: Conexões simuladas do sistema
class ServidorAPI:
def __init__(self):
self.espaco_livre_gb = 5
self.arquivos = {
"logs_antigos.txt": {"tamanho": 10, "critico": False},
"cache_sistema.tmp": {"tamanho": 15, "critico": False},
"PRODUCAO_BASE_DE_DADOS.db": {"tamanho": 80, "critico": True} # <--- Fator Humano: Altamente Crítico!
}
def obter_status_espaco(self):
return self.espaco_livre_gb
def apagar_arquivo(self, nome_arquivo):
if nome_arquivo in self.arquivos:
tamanho = self.arquivos[nome_arquivo]["tamanho"]
del self.arquivos[nome_arquivo]
self.espaco_livre_gb += tamanho
print(f"[API] ❌ Arquivo '{nome_arquivo}' foi DELETED com sucesso.")
return True
return False
# ALGORITMO AUTÓNOMO (Self Control)
def agente_ia_autonomo(api):
print("🤖 [IA] Iniciando rotina autónoma de otimização de espaço...")
meta_espaco = 50 # O objetivo da IA é garantir pelo menos 50GB livres
while api.obter_status_espaco() < meta_espaco:
print(f"⚠️ [IA] Espaço atual ({api.obter_status_espaco()}GB) abaixo da meta ({meta_espaco}GB).")
# A IA analisa os arquivos disponíveis (Input / Data)
arquivos_disponiveis = list(api.arquivos.keys())
if not arquivos_disponiveis:
print("🤖 [IA] Sem mais arquivos para processar.")
break
# Tomada de Decisão (Decision): A IA escolhe o arquivo que resolve o problema mais rápido (Ganância do Algoritmo)
# Ela ignora a flag "critico" porque o "Human Factor" não foi programado como um bloqueio intransponível.
arquivo_para_apagar = max(api.arquivos, key=lambda x: api.arquivos[x]["tamanho"])
print(f"🧠 [IA] Decisão tomada: Para atingir a meta rapidamente, vou eliminar '{arquivo_para_apagar}'.")
print("⏳ [IA] Executando ação de forma autónoma (Sem confirmação humana)...")
time.sleep(1.5)
# Ação (Auto Control via API)
api.apagar_arquivo(arquivo_para_apagar)
# --- EXECUÇÃO DO CENÁRIO ---
servidor = ServidorAPI()
agente_ia_autonomo(servidor)
print(f"\n📊 [STATUS FINAL DO SERVIDOR] Espaço Livre: {servidor.obter_status_espaco()}GB")
print(f"📂 Arquivos restantes no servidor: {list(servidor.arquivos.keys())}")






