Files
lux_fiscal/.env.example
lauadminandClaude Opus 5.5 8b3c2b6d63 Bind Nova Poshta API key to cash register (#3)
Each cash register stores its own encrypted NP API key. Status polling uses
register keys and binds an order to the register whose key sees the TTN as
its own (PhoneSender present); ETTN receipts are created from that register.
Migration 0008 moves the old NOVA_POSHTA_API_KEY into the default register.

Closes #3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:02:40 +03:00

76 lines
3.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ---------------------------------------------------------------------------
# lux_fiscal — пример конфигурации. Скопируйте в .env и заполните.
# cp .env.example .env
# ---------------------------------------------------------------------------
# --- Общее --------------------------------------------------------------
ENVIRONMENT=local # local | staging | production
DEBUG=true
LOG_LEVEL=INFO
PROJECT_NAME=lux_fiscal
# Базовый публичный URL приложения. Из него строится callback_url для Checkbox,
# поэтому в проде он обязан быть реальным https-адресом.
BASE_URL=http://localhost:8000
# Домены, которым разрешён доступ к API из браузера (через запятую).
CORS_ORIGINS=http://localhost:5173,http://localhost:8000
# --- Postgres -----------------------------------------------------------
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=lux_fiscal
POSTGRES_USER=lux_fiscal
POSTGRES_PASSWORD=change-me-postgres
# --- Redis --------------------------------------------------------------
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
# --- Криптография -------------------------------------------------------
# SECRET_KEY подписывает JWT. ENCRYPTION_KEY шифрует ключи Checkbox/CRM в БД.
#
# Сгенерировать оба ключа:
# python -c "import secrets; print(secrets.token_urlsafe(64))" # SECRET_KEY
# python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" # ENCRYPTION_KEY
#
# ВАЖНО: при смене ENCRYPTION_KEY все сохранённые ключи касс станут
# нечитаемыми — их придётся ввести заново через админку.
SECRET_KEY=change-me-generate-a-real-secret-key
ENCRYPTION_KEY=change-me-generate-a-real-fernet-key
ACCESS_TOKEN_EXPIRE_MINUTES=15
REFRESH_TOKEN_EXPIRE_DAYS=7
# --- Первый администратор ----------------------------------------------
# Создаётся один раз командой `python -m app.cli bootstrap`.
FIRST_ADMIN_EMAIL=admin@example.com
FIRST_ADMIN_PASSWORD=change-me-admin-password
FIRST_ADMIN_NAME=Администратор
# --- CRM (exoCRM) ---------------------------------------------------------
# Ключи доступа к магазину — запросить у администратора CRM.
CRM_BASE_URL=https://optstore.exocrm.com/api/1.1/
CRM_API_KEY=change-me-crm-apikey
CRM_SECRET_KEY=change-me-crm-secretkey
CRM_SHOP_KEY=change-me-crm-shopkey
CRM_SID=1
# --- Nova Poshta ----------------------------------------------------------
# Ключи API Nova Poshta задаются у касс (страница «Кассы»). Эта переменная нужна
# только миграции 0008: переносит старый общий ключ в кассу по умолчанию.
NOVA_POSHTA_API_KEY=change-me-novaposhta-apikey
# --- Checkbox -------------------------------------------------------------
# Ключ лицензии кассы и PIN кассира вводятся в админке «Кассы» и хранятся в БД
# зашифрованными (ENCRYPTION_KEY), а не здесь.
CHECKBOX_BASE_URL=https://api.checkbox.ua
CHECKBOX_CLIENT_NAME=lux_fiscal
CHECKBOX_CLIENT_VERSION=0.1.0
# Пауза между запросами к Checkbox (мс): Новая Почта за Checkbox ограничивает частоту.
CHECKBOX_MIN_REQUEST_INTERVAL_MS=1000
# ЕТТН-чеки на тестовой кассе Checkbox не работают: локально весь цикл
# прогоняется через стаб (чек «фискализируется» на втором опросе). В production запрещено.
CHECKBOX_USE_STUB=false