# -*- coding: utf-8 -*- """Zentrale Pfade für den lokalen AzA-Office-Ordner unter Dokumente. Parallel zu der bestehenden KG_Diktat_Ablage (aza_persistence._ablage_base_path). Keine Migration, kein Sync, keine Änderung an ablage.json oder Ordnerfenster. Nächste Blöcke können diese Funktionen importieren (Desktop-Hülle, Ordner-UI, Export). """ from __future__ import annotations import os from typing import Iterable, List, Tuple # Ziel-Unterordner (physische Verzeichnisse; Inhaltsindex folgt in späteren Blöcken) AZA_OFFICE_SUBFOLDERS: Tuple[str, ...] = ( "Chat-Briefe", "Chat-Aufgaben", "Krankengeschichten", "Transkriptionen", "Diktate", "Briefe", "Rezepte", "KOGU", "OP-Berichte", "Exporte", "Anhänge", ) AZA_OFFICE_FOLDER_NAME = "AzA Office" # Geplante item_types (noch nicht in ablage.json / synced_user_items) ITEM_TYPE_CHAT_LETTER = "chat_letter" ITEM_TYPE_CHAT_TASK = "chat_task" def get_user_documents_folder() -> str: """Windows-Dokumente; Fallback Home, analog zu aza_persistence._ablage_base_path.""" docs = os.path.join(os.path.expanduser("~"), "Documents") if os.path.isdir(docs): return docs return os.path.expanduser("~") def get_aza_office_folder() -> str: """Basis: Dokumente\\AzA Office""" return os.path.join(get_user_documents_folder(), AZA_OFFICE_FOLDER_NAME) def get_aza_office_subfolder(name: str) -> str: """Voller Pfad zu einem Unterordner; name muss in AZA_OFFICE_SUBFOLDERS sein.""" sub = (name or "").strip() if sub not in AZA_OFFICE_SUBFOLDERS: raise ValueError(f"Unbekannter AzA-Office-Unterordner: {name!r}") return os.path.join(get_aza_office_folder(), sub) def ensure_aza_office_subfolders( subfolders: Iterable[str] | None = None, ) -> str: """Legt AzA Office und alle Unterordner an (idempotent). Rückgabe: Basisordner.""" base = get_aza_office_folder() os.makedirs(base, exist_ok=True) for sub in subfolders or AZA_OFFICE_SUBFOLDERS: os.makedirs(os.path.join(base, sub), exist_ok=True) return base def list_aza_office_subfolder_paths() -> List[str]: """Alle konfigurierten Unterordnerpfade (ohne ensure).""" base = get_aza_office_folder() return [os.path.join(base, s) for s in AZA_OFFICE_SUBFOLDERS]