e6e6d17b72
PR Checks / test-and-build (pull_request) Successful in 3m12s
- Добавлена абстракция ISystemClock + SystemClock / FakeSystemClock для тестируемого scheduling. - Добавлена миграция V014: confirmation_sent_at в sessions. - Обновлен SendConfirmationHandler: записывает confirmation_sent_at. - Обновлен SessionSchedulerService: - выделен ISessionTriggerStore / DbSessionTriggerStore - SQL-запросы используют параметр @Now вместо now() - добавлен публичный TickAsync для тестов - защита от дублей через confirmation_sent_at IS NULL - Обновлен RescheduleVotingDeadlineService: использует ISystemClock. - Добавлены интерфейсы ISendConfirmationHandler, ISendOneHourReminderHandler, ISendJoinLinkHandler для unit-тестируемости. - Добавлены 8 unit-тестов SessionSchedulerService: - все 3 триггера (T-24h, T-1h, T-5min) - идемпотентность при повторном запуске - ошибки handler не падают и не блокируют другие сессии - ошибки store логируются без падения worker-а Bump version -> 1.13.0 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
59 lines
1.7 KiB
YAML
59 lines
1.7 KiB
YAML
services:
|
|
db:
|
|
image: postgres:17-alpine
|
|
restart: always
|
|
environment:
|
|
POSTGRES_USER: gmrelay
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
|
|
POSTGRES_DB: gmrelay_db
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
networks:
|
|
- gmrelay
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -U gmrelay -d gmrelay_db" ]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 10
|
|
|
|
bot:
|
|
image: git.codeanddice.ru/toutsu/gmrelay-bot:1.13.0
|
|
restart: always
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
- "ConnectionStrings__gmrelaydb=Host=db;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}"
|
|
- "Telegram__BotToken=${TELEGRAM_BOT_TOKEN:?Set TELEGRAM_BOT_TOKEN in .env}"
|
|
- "Telegram__MiniAppUrl=${TELEGRAM_MINI_APP_URL:-}"
|
|
networks:
|
|
- gmrelay
|
|
|
|
web:
|
|
image: git.codeanddice.ru/toutsu/gmrelay-web:1.13.0
|
|
restart: always
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
- "ConnectionStrings__gmrelaydb=Host=db;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}"
|
|
- "Telegram__BotToken=${TELEGRAM_BOT_TOKEN:?Set TELEGRAM_BOT_TOKEN in .env}"
|
|
- "Telegram__BotUsername=${TELEGRAM_BOT_USERNAME:?Set TELEGRAM_BOT_USERNAME in .env}"
|
|
- "Telegram__MiniAppUrl=${TELEGRAM_MINI_APP_URL:-}"
|
|
ports:
|
|
- "${GMRELAY_WEB_PORT:-8080}:8080"
|
|
volumes:
|
|
- web_keys:/app/dataprotection-keys
|
|
networks:
|
|
- gmrelay
|
|
|
|
volumes:
|
|
pgdata:
|
|
name: ${POSTGRES_VOLUME_NAME:-game_pgdata}
|
|
web_keys:
|
|
name: ${WEB_KEYS_VOLUME_NAME:-gmrelay_web_keys}
|
|
|
|
networks:
|
|
gmrelay:
|
|
driver: bridge
|