Часовой пояс отображения захардкожен на фронте и не зависит от APP_TZ_OFFSET_HOURS (#68) #98

Merged
NotBigGhost merged 1 commits from issue-68-tz-offset into dev 2026-09-30 13:03:39 +03:00
Collaborator

Что сделано

Решение владельца: один пояс приложения из .env для всех, пояс устройства не учитывается.

  • Бэкенд. GET /api/auth/config отдаёт новое поле tz_offset_hours = APP_TZ_OFFSET_HOURS. Валидатор настроек ограничивает смещение диапазоном −12..14: опечатка в .env теперь даёт ошибку старта, а не время, сдвинутое на сутки.
  • Фронт. В format.ts константа +3 заменена переменной с setAppTzOffsetHours. App.tsx загружает конфиг и выставляет пояс до первой отрисовки страниц. Пока конфиг грузится, показывается спиннер; если конфиг недоступен, остаются запасные +3. В этом поясе теперь всё отображение времени (партии, уведомления, объявления, журнал) и ввод дат объявлений в админке — тот же пояс, в котором сервер считает «дату игры». Сигнатуры функций форматирования не менялись, поэтому компоненты не затронуты.
  • schema.d.ts сгенерирован через npm run gen:api. В .env.example пояснено, что задаёт APP_TZ_OFFSET_HOURS.

Коммиты

  • 8d4f7a9 Время: один пояс приложения из .env и на сервере, и на фронте

Проверки

  • pytest — 224 passed. Новые тесты:

    • /api/auth/config отдаёт смещение из настроек (5 → 5);
    • смещения −13 и 15 отклоняются.

    На старом коде все три падают.

  • npm run build — успешно.

  • /api/auth/config на dev-бэкенде: {"…","tz_offset_hours":3}.

Отклонения от плана

Нет.

Closes #68

🤖 Generated with Claude Code

https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd

## Что сделано Решение владельца: **один пояс приложения из `.env` для всех**, пояс устройства не учитывается. - **Бэкенд.** `GET /api/auth/config` отдаёт новое поле `tz_offset_hours` = `APP_TZ_OFFSET_HOURS`. Валидатор настроек ограничивает смещение диапазоном −12..14: опечатка в `.env` теперь даёт ошибку старта, а не время, сдвинутое на сутки. - **Фронт.** В `format.ts` константа +3 заменена переменной с `setAppTzOffsetHours`. `App.tsx` загружает конфиг и выставляет пояс **до** первой отрисовки страниц. Пока конфиг грузится, показывается спиннер; если конфиг недоступен, остаются запасные +3. В этом поясе теперь всё отображение времени (партии, уведомления, объявления, журнал) и ввод дат объявлений в админке — тот же пояс, в котором сервер считает «дату игры». Сигнатуры функций форматирования не менялись, поэтому компоненты не затронуты. - `schema.d.ts` сгенерирован через `npm run gen:api`. В `.env.example` пояснено, что задаёт `APP_TZ_OFFSET_HOURS`. ## Коммиты - `8d4f7a9` Время: один пояс приложения из .env и на сервере, и на фронте ## Проверки - `pytest` — 224 passed. Новые тесты: - `/api/auth/config` отдаёт смещение из настроек (5 → 5); - смещения −13 и 15 отклоняются. На старом коде все три падают. - `npm run build` — успешно. - `/api/auth/config` на dev-бэкенде: `{"…","tz_offset_hours":3}`. ## Отклонения от плана Нет. Closes #68 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Agent added 1 commit 2026-09-19 03:05:43 +03:00
APP_TZ_OFFSET_HOURS влиял только на «дату игры», а фронт показывал время в
захардкоженных +3 — при другом значении дата и время партии противоречили друг
другу. Теперь /api/auth/config отдаёт tz_offset_hours, App.tsx выставляет его в
format.ts до первой отрисовки страниц, и в нём же показывается всё время и
вводятся даты объявлений (запасное значение +3, если конфиг недоступен). Пояс
устройства не учитывается — решение владельца. Валидатор ограничивает смещение
−12..14. #68

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
NotBigGhost merged commit 30270916a4 into dev 2026-09-30 13:03:39 +03:00
NotBigGhost deleted branch issue-68-tz-offset 2026-09-30 13:03:40 +03:00
Sign in to join this conversation.