Files
mono/components/controller/.env-example
T
coopops e6090d9200
Typecheck / desktop (pull_request) Failing after 8m33s
Typecheck / controller (pull_request) Failing after 8m2s
[C28-34][@ant] feat: фоновый напоминатель об отчёте по авансу под отчёт — зачем: закрыть момент, когда пайщик получил аванс и не отчитался. @Interval-воркер в extensions/expenses сканирует зеркало расходов, находит ADVANCE-позиции в PAID без отчёта, шлёт пайщику-получателю недельный агрегированный дайджест (workflow ExpenseAdvanceReportReminder) со ссылкой на сам расход (/:coopname/expenses/:hash) или список «Мои авансы»; только получателю, кассиру/совету ничего, ORG пропускаются. Троттлинг раз в неделю — через идемпотентность Центра уведомлений (поле period=ISO-неделя в payload), без своей таблицы. Грейс до первого письма и интервал тика — env (EXPENSE_ADVANCE_REMINDER_*, дефолты 3 дня / 6 ч). Точка отсчёта — proposal.updated_at; deadline из формы пока не персистится в цепи — отмечено follow-up в README
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 05:52:04 +00:00

101 lines
3.5 KiB
Plaintext

NODE_ENV=development
# Публичный URL контроллера (API): на деве обычно порт 2998; на проде может быть https://домен/backend
BACKEND_URL=http://127.0.0.1:2998
# Публичный URL рабочего стола (SPA): письма, приглашения, deep links в ICS
FRONTEND_URL=http://127.0.0.1:2999
# Port number
PORT=2998
SERVER_SECRET=SECRET
SOCKET_SERVER=http://localhost:2222
# URL of the Mongo DB
MONGODB_URL=mongodb://127.0.0.1:27017/cooperative-x
COOPNAME=voskhod
# JWT
# JWT secret key
JWT_SECRET=thisissecret
# Number of minutes after which an access token expires
JWT_ACCESS_EXPIRATION_MINUTES=864000
# Number of days after which a refresh token expires
JWT_REFRESH_EXPIRATION_DAYS=365
# Number of minutes after which a reset password token expires
JWT_RESET_PASSWORD_EXPIRATION_MINUTES=10
# Number of minutes after which a verify email token expires
JWT_VERIFY_EMAIL_EXPIRATION_MINUTES=10
# SMTP configuration options for the email service
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
EMAIL_FROM="'КО-ПОЧТАЛЬОН' <mail@coopenomics.world>"
# Напоминатель об отчёте по авансу под отчёт (extensions/expenses).
# Интервал тика сканера зеркала расходов (мс). Дефолт 6 ч. Письмо пайщику —
# не чаще раза в неделю (троттлит идемпотентность Центра уведомлений).
EXPENSE_ADVANCE_REMINDER_INTERVAL_MS=21600000
# Сколько дней аванс может висеть без отчёта до первого напоминания. Дефолт 3.
EXPENSE_ADVANCE_REMINDER_GRACE_DAYS=3
# BLOCKHAIN
BLOCKCHAIN_RPC=http://127.0.0.1:8888
CHAIN_ID=cae86058a6d8698833afb474ab8a5ad8599c6cf54f9ebcf275dbac7055c16fe1
# Пауза перед чтением таблиц после мутации (мс); 0 — без ожидания
POST_TRANSACT_CHAIN_READ_DELAY_MS=1000
# HISTORY API
SIMPLE_EXPLORER_API=http://127.0.0.1:4000
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DATABASE=voskhod
TIMEZONE=Europe/Moscow
NOVU_APP_ID=BTaPV0bRL0dz
NOVU_BACKEND_URL=https://novu.coopenomics.world/api
NOVU_SOCKET_URL=https://novu.coopenomics.world/ws
NOVU_API_KEY=201a45fa0d7493a3d53fa309bfb01c4fd
# MATRIX
MATRIX_HOMESERVER_URL=https://chat.coopenomics.world
MATRIX_CLIENT_URL=https://chatcoop.coopenomics.world
MATRIX_ADMIN_USERNAME=admin
MATRIX_COMMON_ROOM_ID=
MATRIX_ADMIN_PASSWORD=
SENTRY_DSN=
GITHUB_TOKEN=
LIVEKIT_URL=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
OPENAI_API_KEY=
OPENAI_BASE_URL=
WHISPER_MODEL=whisper-1
WHISPER_LANGUAGE=ru
# FILE STORAGE (MinIO в dev compose; на prod подменяется плейбуком).
# Endpoint S3-совместимого бэкенда. В dev compose service name = minio.
# Для запуска контроллера на хосте (вне docker) — http://127.0.0.1:9000.
MINIO_ENDPOINT=http://minio:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
# Имя физического бакета. По умолчанию `coop-${COOPNAME}`, можно перекрыть.
MINIO_BUCKET=
# HMAC-секрет для подписи URL отдачи. Если пусто — берётся SERVER_SECRET.
FILE_STORAGE_SIGNING_SECRET=
# База публичного URL контроллера для read-URL. Если пусто — берётся BACKEND_URL.
FILE_STORAGE_PUBLIC_BASE_URL=