# scripts/memory_store.py import json from pathlib import Path from config import MEMORY_DIR from datetime import datetime, timezone def load_logs(date_str=None): if date_str is None: date_str = datetime.now().strftime("%Y-%m-%d") path = MEMORY_DIR / f"{date_str}.json" if path.exists(): with open(path, "r") as f: return json.load(f) return [] def save_message(sender, message): date_str = datetime.now().strftime("%Y-%m-%d") path = MEMORY_DIR / f"{date_str}.json" logs = load_logs(date_str) now = datetime.now(timezone.utc).isoformat() logs.append({"timestamp": now, "sender": sender, "message": message}) with open(path, "w") as f: json.dump(logs, f, indent=2, ensure_ascii=False) def search_memory(query: str): from glob import glob all_logs = [] for file_path in sorted(MEMORY_DIR.glob("*.json")): with open(file_path, "r") as f: logs = json.load(f) matched = [entry for entry in logs if query in entry["message"]] all_logs.extend(matched) return all_logs[-5:] # 最新5件だけ返す # scripts/memory_store.py import json from datetime import datetime from pathlib import Path from config import MEMORY_DIR # ログを読み込む(指定日または当日) def load_logs(date_str=None): if date_str is None: date_str = datetime.now().strftime("%Y-%m-%d") path = MEMORY_DIR / f"{date_str}.json" if path.exists(): with open(path, "r") as f: return json.load(f) return [] # メッセージを保存する def save_message(sender, message): date_str = datetime.now().strftime("%Y-%m-%d") path = MEMORY_DIR / f"{date_str}.json" logs = load_logs(date_str) #now = datetime.utcnow().isoformat() + "Z" now = datetime.now(timezone.utc).isoformat() logs.append({"timestamp": now, "sender": sender, "message": message}) with open(path, "w") as f: json.dump(logs, f, indent=2, ensure_ascii=False) # キーワードで過去のメモリを検索する(最新5件を返す) def search_memory(query: str): all_logs = [] for file_path in sorted(MEMORY_DIR.glob("*.json")): try: with open(file_path, "r") as f: logs = json.load(f) matched = [entry for entry in logs if query.lower() in entry["message"].lower()] all_logs.extend(matched) except Exception as e: print(f"⚠️ 読み込み失敗: {file_path} ({e})") return all_logs[-5:] # 最新5件を返す