Boka73's picture
Deploy Gradio app
dd6303a verified
"""Filesystem cache for parsed/generated tender summaries."""
from __future__ import annotations
import json
import pathlib
import time
BASE = pathlib.Path(__file__).resolve().parents[1]
CACHE_DIR = BASE / "cache"
TTL_SECONDS = 24 * 60 * 60
def _path(tender_id: str) -> pathlib.Path:
CACHE_DIR.mkdir(parents=True, exist_ok=True)
return CACHE_DIR / f"{tender_id}.json"
def save_cache(tender_id: str, data: dict) -> str:
payload = {"saved_at": time.time(), "tender_id": tender_id, "data": data}
p = _path(tender_id)
p.write_text(json.dumps(payload, indent=2, ensure_ascii=False), encoding="utf-8")
return str(p)
def load_cache(tender_id: str, ttl_seconds: int = TTL_SECONDS) -> dict | None:
p = _path(tender_id)
if not p.exists():
return None
payload = json.loads(p.read_text(encoding="utf-8"))
if time.time() - payload.get("saved_at", 0) > ttl_seconds:
return None
return payload.get("data")
def list_cached_tenders() -> list[dict]:
CACHE_DIR.mkdir(parents=True, exist_ok=True)
rows = []
for p in sorted(CACHE_DIR.glob("*.json")):
try:
payload = json.loads(p.read_text(encoding="utf-8"))
rows.append({"tender_id": payload.get("tender_id", p.stem), "saved_at": payload.get("saved_at", 0)})
except Exception:
continue
return rows