каркас: домен, генерация типов фронта, стенд и карточки задач
Контракт в коде: КИО по нормативу, 43 события WS по шести союзам направлений,
таймеры ГОСТ, таксономия E1–E6, шесть компетенций радара. make types гоняет
их через JSON Schema в generated.ts, тест ловит забытую регенерацию.
Стенд: docker compose postgres + backend, health отвечает, база досягаема
из контейнера бэкенда. Makefile не врёт — нереализованные цели падают
и называют карточку, которая их закроет.
frontend/.npmrc: под WSL2 npm install зависает на дефолтных 15 сокетах.
2026-09-15 19:35:03 +03:00
|
|
|
|
# Скопировать в .env. Файл в .gitignore: ключи в репозиторий не едут.
|
2026-09-24 01:10:49 +03:00
|
|
|
|
BIND_HOST=127.0.0.1
|
|
|
|
|
|
POSTGRES_PORT=5432
|
|
|
|
|
|
BACKEND_PORT=8000
|
|
|
|
|
|
FRONTEND_PORT=5173
|
|
|
|
|
|
TLS_PORT=5443
|
|
|
|
|
|
TLS_CERT_DIR=./.local/tls
|
|
|
|
|
|
SIP_PORT=5060
|
|
|
|
|
|
SIPS_PORT=5061
|
|
|
|
|
|
SIP_WS_PORT=8088
|
|
|
|
|
|
RTP_PORT_START=10000
|
|
|
|
|
|
RTP_PORT_END=10099
|
|
|
|
|
|
SIP_TLS_DIR=./.local/sip-tls
|
|
|
|
|
|
# Если пусто, Asterisk создаст стойкие случайные пароли в volume sipdata.
|
|
|
|
|
|
SIP_6001_PASSWORD=
|
|
|
|
|
|
SIP_6002_PASSWORD=
|
|
|
|
|
|
SIP_6003_PASSWORD=
|
|
|
|
|
|
SIP_6101_PASSWORD=
|
|
|
|
|
|
SIP_6102_PASSWORD=
|
|
|
|
|
|
# IP/DNS сервера, который WebRTC-клиенты видят в локальной сети. При запуске
|
|
|
|
|
|
# только на той же машине оставьте 127.0.0.1; RTP-порты должны отображаться 1:1.
|
|
|
|
|
|
SIP_EXTERNAL_MEDIA_ADDRESS=127.0.0.1
|
каркас: домен, генерация типов фронта, стенд и карточки задач
Контракт в коде: КИО по нормативу, 43 события WS по шести союзам направлений,
таймеры ГОСТ, таксономия E1–E6, шесть компетенций радара. make types гоняет
их через JSON Schema в generated.ts, тест ловит забытую регенерацию.
Стенд: docker compose postgres + backend, health отвечает, база досягаема
из контейнера бэкенда. Makefile не врёт — нереализованные цели падают
и называют карточку, которая их закроет.
frontend/.npmrc: под WSL2 npm install зависает на дефолтных 15 сокетах.
2026-09-15 19:35:03 +03:00
|
|
|
|
DATABASE_URL=postgresql+asyncpg://lct:lct@localhost:5432/lct
|
|
|
|
|
|
|
2026-09-24 01:10:49 +03:00
|
|
|
|
# Два локальных OpenAI-совместимых сервера (например, llama-server).
|
|
|
|
|
|
# Адреса должны быть loopback: OFFLINE=true не допускает внешний API.
|
|
|
|
|
|
LLM_PROVIDER=local
|
|
|
|
|
|
LLM_BASE_URL=http://127.0.0.1:18080/v1
|
|
|
|
|
|
# Адреса тех же процессов из backend-контейнера Docker Desktop (macOS/Windows).
|
|
|
|
|
|
DOCKER_LLM_BASE_URL=http://host.docker.internal:18080/v1
|
каркас: домен, генерация типов фронта, стенд и карточки задач
Контракт в коде: КИО по нормативу, 43 события WS по шести союзам направлений,
таймеры ГОСТ, таксономия E1–E6, шесть компетенций радара. make types гоняет
их через JSON Schema в generated.ts, тест ловит забытую регенерацию.
Стенд: docker compose postgres + backend, health отвечает, база досягаема
из контейнера бэкенда. Makefile не врёт — нереализованные цели падают
и называют карточку, которая их закроет.
frontend/.npmrc: под WSL2 npm install зависает на дефолтных 15 сокетах.
2026-09-15 19:35:03 +03:00
|
|
|
|
LLM_API_KEY=
|
2026-09-24 01:10:49 +03:00
|
|
|
|
LLM_MODEL_CALLER=Qwen3-1.7B
|
|
|
|
|
|
LLM_CONTROL_BASE_URL=http://127.0.0.1:18081/v1
|
|
|
|
|
|
DOCKER_LLM_CONTROL_BASE_URL=http://host.docker.internal:18081/v1
|
|
|
|
|
|
LLM_MODEL_CONTROL=Vikhr-1B
|
|
|
|
|
|
GRAMMAR_LLM_ENABLED=true
|
|
|
|
|
|
DIALOGUE_MODEL_MODE=dialogue
|
каркас: домен, генерация типов фронта, стенд и карточки задач
Контракт в коде: КИО по нормативу, 43 события WS по шести союзам направлений,
таймеры ГОСТ, таксономия E1–E6, шесть компетенций радара. make types гоняет
их через JSON Schema в generated.ts, тест ловит забытую регенерацию.
Стенд: docker compose postgres + backend, health отвечает, база досягаема
из контейнера бэкенда. Makefile не врёт — нереализованные цели падают
и называют карточку, которая их закроет.
frontend/.npmrc: под WSL2 npm install зависает на дефолтных 15 сокетах.
2026-09-15 19:35:03 +03:00
|
|
|
|
JUDGE_TEMPERATURE=0
|
|
|
|
|
|
|
|
|
|
|
|
# Голосовой контур
|
|
|
|
|
|
MODELS_DIR=models
|
2026-09-24 01:10:49 +03:00
|
|
|
|
STT_MODEL=whisper-small
|
|
|
|
|
|
WHISPER_MODEL_PATH=models/whisper-small
|
|
|
|
|
|
WHISPER_SERVER_URL=http://127.0.0.1:18082
|
|
|
|
|
|
VOICE_ENABLED=false
|
|
|
|
|
|
RECORD_CALLS=true
|
|
|
|
|
|
RECORDINGS_DIR=recordings
|
|
|
|
|
|
BACKUP_INTERVAL_SECONDS=86400
|
|
|
|
|
|
BACKUP_RETRY_SECONDS=300
|
|
|
|
|
|
BACKUP_KEEP=14
|
каркас: домен, генерация типов фронта, стенд и карточки задач
Контракт в коде: КИО по нормативу, 43 события WS по шести союзам направлений,
таймеры ГОСТ, таксономия E1–E6, шесть компетенций радара. make types гоняет
их через JSON Schema в generated.ts, тест ловит забытую регенерацию.
Стенд: docker compose postgres + backend, health отвечает, база досягаема
из контейнера бэкенда. Makefile не врёт — нереализованные цели падают
и называют карточку, которая их закроет.
frontend/.npmrc: под WSL2 npm install зависает на дефолтных 15 сокетах.
2026-09-15 19:35:03 +03:00
|
|
|
|
ENDPOINTING_MS=600
|
2026-09-24 01:10:49 +03:00
|
|
|
|
OFFLINE=true
|
|
|
|
|
|
SECURE_COOKIES=false
|
|
|
|
|
|
# Необязательно для Compose: если пусто, стойкий случайный ключ создаётся в
|
|
|
|
|
|
# volume securitydata. На управляемом стенде можно задать свой 48+ байтный ключ.
|
|
|
|
|
|
SESSION_SECRET=
|