import logging import os from datetime import datetime from config import config logger = logging.getLogger(__name__) def _sanitize_filename(name: str) -> str: if not name: return "untitled" invalid = '<>:"/\\|?*' for char in invalid: name = name.replace(char, "") name = name.replace(" ", "_").strip("._") return name or "untitled" class RawMeetingStore: def __init__(self): self.raw_dir = config.storage.raw_dir os.makedirs(self.raw_dir, exist_ok=True) def save(self, text: str, title: str = "", date: str = "") -> str: date_str = date or datetime.now().strftime("%Y-%m-%d") safe_title = _sanitize_filename(title)[:60] filename = f"{date_str}_{safe_title}.md" filepath = os.path.join(self.raw_dir, filename) content = "\n".join( [ "---", f'title: "{title}"', f'date: "{date_str}"', "status: archived", "---", "", f"# {title or 'Untitled Meeting'}", "", text, "", ] ) with open(filepath, "w", encoding="utf-8") as f: f.write(content) logger.info("Saved raw meeting text: %s", filepath) return filepath raw_meeting_store = RawMeetingStore()