Files
agent_v0/storage.py
2026-03-05 00:20:23 +01:00

49 lines
1.3 KiB
Python

# storage.py
"""
Gestion du stockage "avancé" pour agent_v0.
v0 :
- création d'une archive ZIP pour une session donnée
"""
from __future__ import annotations
import os
import zipfile
from config import SESSIONS_ROOT
from raw_session import RawSession
def create_session_zip(session: RawSession, base_dir: str | None = None) -> str:
"""
Crée un ZIP contenant tout le dossier de la session :
sessions/<session_id>/
- <session_id>.json
- shots/*.png
Le ZIP est créé dans SESSIONS_ROOT :
sessions/<session_id>.zip
Retourne le chemin absolu du ZIP.
"""
base_dir = base_dir or SESSIONS_ROOT
session_dir = os.path.join(base_dir, session.session_id)
if not os.path.isdir(session_dir):
raise FileNotFoundError(f"Dossier de session introuvable : {session_dir}")
zip_path = os.path.join(base_dir, f"{session.session_id}.zip")
# On crée/écrase le zip
with zipfile.ZipFile(zip_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
for root, _, files in os.walk(session_dir):
for name in files:
full_path = os.path.join(root, name)
# chemin relatif dans l'archive (à partir de SESSIONS_ROOT)
arcname = os.path.relpath(full_path, base_dir)
zf.write(full_path, arcname)
return os.path.abspath(zip_path)