# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

BACH PATHS — Центральное управление путями
=====================================

bach_paths.py — это «единый источник истины» для всех путей в BACH.
Больше никаких жестко запрограммированных путей — все централизованно в одном месте.

LOCATION
--------
system/hub/bach_paths.py

ОСНОВНАЯ ФУНКЦИЯ: get_path(name)
-----------------------------
Самая важная функция – возвращает путь к именованному каталогу.

Примеры:
    из bach_paths импортируйте get_path

    tools_dir = get_path("инструменты") # система/инструменты/
    template = get_path("report_template") # Шаблон для отчетов
    db = get_path("db") # база данных bach.db
    report = get_path("reports") # Каталог отчетов

ИМПОРТ ИЗ ВЕЗДЕ
-------------------
Метод 1 – если Hub/ находится в sys.path (например, в Hub/_services/):
    из bach_paths import BACH_ROOT, get_path

Метод 2 – универсальный (работает откуда угодно):
    импортировать систему
    из пути импорта Pathlib

    # Автоматически находим bach_paths.py
    _current = Путь(__file__).resolve()
    для _parent в [_current] + list(_current.parents):
        _hub = _parent/"система"/"хаб"
        если _hub.exists():
            если str(_hub) нет в sys.path:
                sys.path.insert(0, str(_hub))
            перерыв

    из bach_paths import BACH_ROOT, get_path

ДОСТУПНЫЕ ПУТИ
-----------------
Иерархия: root, bach, system, Hub
Система: данные, графический интерфейс, навыки, расстояние
Навыки: инструменты, помощь, агенты, эксперты, рабочие процессы, партнеры, услуги, шаблоны.
Данные: логи, резервные копии, архивы, мусор, сообщения.
Корень: пользователь, документы, экспорт, расширения.
Базы данных: db, bach_db, archive_db
Пользователь: user_documents, личный
Налог: налог, налог_2025, квитанции, пакеты
Партнеры: Близнецы, Клод, Оллама.
Отчеты: планирование финансирования, отчеты, отчеты_выход, отчеты_клиенты, отчеты_данные, отчеты_пакеты, клиенты, карантин
Шаблоны: report_template
Внешний: база данных знаний

ПРИМЕР: Импорт инструментов
---------------------
Проблема: Инструменты находятся в папке system/tools/
Решение с bach_paths:

    попробуйте:
        из c_ocr_engine импорт ocr_pdf
    кроме ImportError:
        из bach_paths импортировать get_path
        tool_dir = get_path("инструменты")
        если str(tools_dir) нет в sys.path:
            sys.path.insert(0, str(tools_dir))
        из c_ocr_engine import ocr_pdf

ПРИМЕР: путь к шаблону
-----------------------
    из bach_paths импортируйте get_path

    путь_шаблона = путь_get_path("шаблон_отчета")
    # -> C:/Users/.../BACH/system/skills/_templates/bericht_template_geiger_universal.docx

ДРУГИЕ ФУНКЦИИ
------------------
list_paths() — все доступные пути в виде Dict
get_tool_path(name) — найти инструмент в инструментах/или подпапках.
get_partner_dir(partner) — каталог партнеров (gemini, claude, ollama)
get_belege_path(provider) — путь квитанций с дополнительным поставщиком
solve(relpath) — разрешить относительный путь
validate() — проверить все критические пути

DB-OVERRIDES
------------
Пути могут быть перезаписаны в БД:

    из bach_paths импортируйте set_path_override, get_path_with_override

    # Установить переопределение
    set_path_override("база знаний", "D:/My/Database")

    # Использовать переопределение
    path = get_path_with_override("база знаний")

ИСПОЛЬЗОВАНИЕ CLI
-----------
    python bach_paths.py templates # Получить один путь
    python bach_paths.py --list # Перечислить все пути
    python bach_paths.py --validate # Проверить пути
    python bach_paths.py --set PATH name # установить переопределение (с именем)
    python bach_paths.py --overrides # Показать переопределения БД
    python bach_paths.py --json # Вывод в формате JSON

ПЕРЕМЫЕ (для прямого импорта)
--------------------------------
    из импорта bach_paths (
        BACH_ROOT, # корень репозитория
        СИСТЕМА_ROOT, #система/
        HUB_DIR, # система/хаб/
        DATA_DIR, # система/данные/
        SKILLS_DIR, # система/навыки/
        ИНСТРУМЕНТЫ_DIR, # система/инструменты/
        BACH_DB, # система/данные/bach.db
        USER_DIR, #user/
        REPORTS_DIR, # пользователь/документы/foerderplaner/Reports/
    )

САМОИСПРАВЛЕНИЕ
------------
bach_paths вычисляет все пути относительно вашего собственного местоположения.
Если БАК переместить, все равно все будет работать -
никаких ручных настроек не требуется.

ИСПРАВЛЕНИЕ ПУТИ: НЕ НУЖНО
--------------------------
bach_paths.py делает ненужным ручное лечение путей!
Все пути выполнения рассчитываются динамически.

Только для обновлений документации (тексты справки, Wiki, Markdown):
  bach --maintain docs-paths

СМОТРИ ТАКЖЕ
----------
- проверка пути Баха. Проверка путей.
- bach --help path документация обработчика пути
- bach --help Tools/path_healer Средство обновления пути к документации
