final_project / app /memory.py
Ana2012's picture
Update app/memory.py
90a7c8d verified
Raw
History Blame Contribute Delete
2.17 kB
import csv
import os
import tempfile
from datetime import datetime, timezone
from pathlib import Path
DEFAULT_LOGS_DIR = Path(os.getenv("LOGS_DIR", "/data/logs"))
FALLBACK_LOGS_DIR = Path(tempfile.gettempdir()) / "tcc2_agent" / "logs"
def _resolve_logs_dir():
preferred_dir = os.environ.get("LOGS_DIR", "").strip()
candidates = [Path(preferred_dir)] if preferred_dir else []
candidates.extend([DEFAULT_LOGS_DIR, FALLBACK_LOGS_DIR])
for directory in candidates:
try:
directory.mkdir(parents=True, exist_ok=True)
return directory
except OSError:
continue
raise OSError(
"Nao foi possivel criar um diretorio para armazenar a memoria negativa. "
"Defina LOGS_DIR para um caminho gravavel."
)
def caminho_memoria_negativa():
return str(_resolve_logs_dir() / "negative_memory.csv")
def inicializar_memoria_negativa():
memory_file = caminho_memoria_negativa()
if not os.path.exists(memory_file):
with open(memory_file, "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow([
"timestamp",
"search_id",
"rank",
"query",
"product_id",
"product_name",
"rating",
"motivo",
])
def salvar_memoria_negativa(
query,
product_id,
product_name,
rating,
motivo="feedback_negativo",
search_id=None,
rank=None,
):
inicializar_memoria_negativa()
memory_file = caminho_memoria_negativa()
row = [
datetime.now(timezone.utc).isoformat(),
search_id or "",
rank if rank is not None else "",
query or "",
product_id or "",
product_name or "",
rating if rating is not None else "",
motivo or "feedback_negativo",
]
try:
with open(memory_file, "a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(row)
except Exception as e:
print("Erro ao salvar memoria negativa:", e)
return {"status": "ok"}