from __future__ import annotations import os from pathlib import Path from tempfile import gettempdir import streamlit as st SFM_SMB_BASE_PATH = "//sgo-fc01-r06/sfm/ОТЧЕТ_7081У" SFM_DEFAULT_INPUT_DIR = r"//sgo-fc01-r06/sfm/ОТЧЕТ_7081У" ACCESS_SUPPORT_CONTACT = "администратору СФМ" # TODO(BIQ-36593): подтвердить SPACE_ID для прода (сейчас — значение, # проверенное вручную на тестовом пространстве "AURORA"). ID составной # ("storageId$spaceId") — храним как есть, без разбора, через # env-переменную, чтобы не хардкодить прод-значение в коде. В проде # SPACE_ID личного пространства пользователя определяется динамически # через opencloud_access.resolve_personal_drive(access_token), это # значение используется только как тестовый дефолт (AURORA). OPENCLOUD_SPACE_ID = os.getenv( "SFM_OPENCLOUD_SPACE_ID", "28c0cecf-1e20-4664-b165-5c9d5515e70f$95e71bcd-3c89-4b77-b271-63c6d553f4fd", ) EDIT_PATH_OPEN_KEY = "edit_path_open" EDIT_PATH_VALUE_KEY = "edit_path_value" # Runtime-only user paths storage. In bank contour we use tmpfs. PATH_STORE_FILE = Path(gettempdir()) / "user_paths.json" def resolve_user_id() -> str: profile = st.session_state.get("user_profile", {}) if not isinstance(profile, dict): return "anonymous|anonymous" email = str( profile.get("email") or profile.get("preferred_username") or "anonymous" ) full_name = str(profile.get("name") or profile.get("full_name") or "anonymous") return f"{email}|{full_name}" def resolve_opencloud_access_token() -> str | None: """Достаёт access_token для OpenCloud из token_data в сессии. НЕ ПОДТВЕРЖДЕНО: в проде (raisa_streamlit_oauth) неизвестно, содержит ли token_data ключ "access_token" — в локальном mock_provider.py его нет (только email/preferred_username/name). Нужно проверить на проде через st.write(token_data.keys()). Для локального теста (LOCATION=local, mock-провайдер) — fallback на переменную окружения SFM_OPENCLOUD_ACCESS_TOKEN из .env. В проде эта переменная не задана, так что fallback не сработает и не помешает. """ token_data = st.session_state.get("token_data", {}) if isinstance(token_data, dict): value = token_data.get("access_token") if value: return str(value) return os.getenv("SFM_OPENCLOUD_ACCESS_TOKEN") or None