52 lines
3.3 KiB
Python
52 lines
3.3 KiB
Python
import os
|
||
import sys
|
||
from pathlib import Path
|
||
from dotenv import load_dotenv
|
||
|
||
load_dotenv()
|
||
|
||
BOT_TOKEN: str = os.environ["MAX_BOT_TOKEN"]
|
||
|
||
# ── Dry-run режим ─────────────────────────────────────────────────────────────
|
||
# Включается флагом --dry-run при запуске или переменной DRY_RUN=true в .env.
|
||
# В этом режиме все записывающие вызовы к Intradesk НЕ выполняются —
|
||
# вместо этого их payload печатается в консоль.
|
||
DRY_RUN: bool = (
|
||
"--dry-run" in sys.argv
|
||
or os.environ.get("DRY_RUN", "").lower() in ("1", "true", "yes")
|
||
)
|
||
|
||
_project_root = Path(__file__).parent
|
||
_db_path_raw = os.environ.get("DB_PATH", "data/support.db")
|
||
DB_PATH: str = str(
|
||
Path(_db_path_raw) if Path(_db_path_raw).is_absolute() else _project_root / _db_path_raw
|
||
)
|
||
ADMIN_USERNAME: str = os.environ.get("ADMIN_USERNAME", "admin")
|
||
ADMIN_PASSWORD: str = os.environ.get("ADMIN_PASSWORD", "changeme")
|
||
ADMIN_HOST: str = os.environ.get("ADMIN_HOST", "0.0.0.0")
|
||
ADMIN_PORT: int = int(os.environ.get("ADMIN_PORT", "8080"))
|
||
|
||
# ── Intradesk API ──────────────────────────────────────────────────────────────
|
||
INTRADESK_BASE_URL: str = os.environ.get("INTRADESK_BASE_URL", "https://apigw.intradesk.ru")
|
||
# Ключ для /settings/odata (клиенты, пользователи)
|
||
INTRADESK_API_KEY: str = os.environ.get("INTRADESK_API_KEY", "")
|
||
# Ключ для /tasklist/odata (чтение заявок) и /taskhistory (история/комментарии)
|
||
INTRADESK_TASKS_API_KEY: str = os.environ.get("INTRADESK_TASKS_API_KEY", "")
|
||
# Ключ для /changes/v3/tasks (создание и изменение заявок)
|
||
INTRADESK_CHANGES_API_KEY: str = os.environ.get("INTRADESK_CHANGES_API_KEY", "")
|
||
# Путь сервиса для новых заявок (Настройки → Сервисы → «Путь сервиса», напр. "84681/84683/")
|
||
INTRADESK_DEFAULT_SERVICE: str = os.environ.get("INTRADESK_DEFAULT_SERVICE", "")
|
||
# ID типа заявки по умолчанию (Настройки → Заявки → Типы заявок → ID)
|
||
INTRADESK_DEFAULT_TASK_TYPE: str = os.environ.get("INTRADESK_DEFAULT_TASK_TYPE", "")
|
||
# ID статуса «Выполнена» для кнопки «Закрыть заявку» (Настройки → Справочники → Статусы → ID)
|
||
INTRADESK_CLOSE_STATUS_ID: str = os.environ.get("INTRADESK_CLOSE_STATUS_ID", "")
|
||
# Интервал опроса Intradesk для push-уведомлений, секунды (0 — отключить)
|
||
NOTIFICATION_POLL_INTERVAL: int = int(os.environ.get("NOTIFICATION_POLL_INTERVAL", "120"))
|
||
# ID группы исполнителей для фильтрации заявок
|
||
INTRADESK_EXECUTOR_GROUP: str = os.environ.get("INTRADESK_EXECUTOR_GROUP", "")
|
||
# Список ID исполнителей через запятую (доп. фильтр)
|
||
INTRADESK_EXECUTORS: list[str] = [
|
||
e.strip()
|
||
for e in os.environ.get("INTRADESK_EXECUTORS", "").split(",")
|
||
if e.strip()
|
||
]
|