Gros Frumos
2ab5e9ab54
kin: BATON-FIX-011 Скрыть BOT_TOKEN из httpx/journalctl логов
2026-03-21 09:21:25 +02:00
Gros Frumos
42f4251184
Merge branch 'BATON-008-backend_dev'
2026-03-21 09:19:50 +02:00
Gros Frumos
4c9fec17de
kin: BATON-008-backend_dev
2026-03-21 09:19:50 +02:00
Gros Frumos
63be474cdc
Merge branch 'BATON-FIX-011-backend_dev'
2026-03-21 09:19:29 +02:00
Gros Frumos
8896bc32f4
kin: BATON-FIX-011-backend_dev
2026-03-21 09:19:29 +02:00
Gros Frumos
e21bcb1eb4
kin: BATON-007 При нажатии на кнопку происходит анимация и сообщение что сигнал отправлен, но в телеграм группу ничего не приходит.
2026-03-21 09:05:43 +02:00
Gros Frumos
726bb0a82c
Merge branch 'BATON-007-backend_dev'
2026-03-21 08:56:40 +02:00
Gros Frumos
a2b38ef815
fix(BATON-007): add validate_bot_token() for startup detection and fix test mocks
...
- Add validate_bot_token() to backend/telegram.py: calls getMe on startup,
logs ERROR if token is invalid (never raises per #1215 contract)
- Call validate_bot_token() in lifespan() after db.init_db() for early detection
- Update conftest.py make_app_client() to mock getMe endpoint
- Add 3 tests for validate_bot_token (200, 401, network error cases)
Root cause: CHAT_ID=5190015988 (positive) was wrong — fixed to -5190015988
on server per decision #1212 . Group "Big Red Button" confirmed via getChat.
Service restarted.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 08:54:07 +02:00
Gros Frumos
cbc15eeedc
kin: BATON-007 При нажатии на кнопку происходит анимация и сообщение что сигнал отправлен, но в телеграм группу ничего не приходит.
2026-03-21 08:36:20 +02:00
Gros Frumos
6142770c0c
kin: BATON-SEC-003 Добавить аутентификацию на /api/signal
2026-03-21 08:16:46 +02:00
Gros Frumos
4b37703335
Merge branch 'BATON-SEC-003-frontend_dev'
2026-03-21 08:13:14 +02:00
Gros Frumos
99638fe22b
kin: BATON-SEC-003-frontend_dev
2026-03-21 08:13:14 +02:00
Gros Frumos
4916b292c5
kin: BATON-007 При нажатии на кнопку происходит анимация и сообщение что сигнал отправлен, но в телеграм группу ничего не приходит.
2026-03-21 08:12:49 +02:00
Gros Frumos
dbd1048a51
Merge branch 'BATON-SEC-003-backend_dev'
2026-03-21 08:12:01 +02:00
Gros Frumos
f17ee79edb
kin: BATON-SEC-003-backend_dev
2026-03-21 08:12:01 +02:00
Gros Frumos
fd4f32c1c3
kin: BATON-FIX-001 Установить FRONTEND_ORIGIN= https://baton.itafrika.com в .env на проде
2026-03-21 07:59:50 +02:00
Gros Frumos
5c9176fcd9
nginx: добавить security-заголовки (HSTS, CSP, X-Frame-Options, X-Content-Type)
...
Заголовки повторены в location / из-за особенности nginx — дочерний блок
с add_header отменяет наследование родительского server-уровня.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 07:58:56 +02:00
Gros Frumos
1b2aa501c6
Merge branch 'BATON-SEC-006-backend_dev'
2026-03-21 07:56:44 +02:00
Gros Frumos
4b7e59d78d
kin: BATON-SEC-006-backend_dev
2026-03-21 07:56:44 +02:00
Gros Frumos
097b7af949
kin: BATON-SEC-005 UUID-валидация в models.py для uuid и user_id
2026-03-21 07:43:25 +02:00
Gros Frumos
205cc8037c
Merge branch 'BATON-SEC-007-backend_dev'
2026-03-21 07:39:41 +02:00
Gros Frumos
2cf141f6ed
kin: BATON-SEC-007-backend_dev
2026-03-21 07:39:41 +02:00
Gros Frumos
7aae8c0f62
Merge branch 'BATON-SEC-005-backend_dev'
2026-03-21 07:36:36 +02:00
Gros Frumos
5d6695ecab
kin: BATON-SEC-005-backend_dev
2026-03-21 07:36:36 +02:00
Gros Frumos
9b8a5558a3
Merge branch 'BATON-SEC-002-backend_dev'
2026-03-21 07:36:33 +02:00
Gros Frumos
4ab2f04de6
kin: BATON-SEC-002-backend_dev
2026-03-21 07:36:33 +02:00
Gros Frumos
9a450d2a84
fix: add /api/health alias endpoint
...
Adds GET /api/health as alias for /health — fixes frontend 404.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 07:18:56 +02:00
Gros Frumos
fd60863e9c
kin: BATON-005 Сделать админку для заведения пользователей со сменой пароля, блокировкой и удалением пользователей.
2026-03-20 23:50:54 +02:00
Gros Frumos
989074673a
Merge branch 'BATON-005-frontend_dev'
2026-03-20 23:44:58 +02:00
Gros Frumos
8607a9f981
kin: BATON-005-frontend_dev
2026-03-20 23:44:58 +02:00
Gros Frumos
e547e1ce09
Merge branch 'BATON-005-backend_dev'
2026-03-20 23:39:28 +02:00
Gros Frumos
cb95c9928f
kin: BATON-005-backend_dev
2026-03-20 23:39:28 +02:00
Gros Frumos
5fcfc3a76b
kin: BATON-006 не работает фронт: {'detail':'Not Found'}
2026-03-20 23:31:26 +02:00
Gros Frumos
68a1c90541
Merge branch 'BATON-006-frontend_dev'
2026-03-20 23:27:06 +02:00
Gros Frumos
3cd7db11e7
kin: BATON-006-frontend_dev
2026-03-20 23:27:06 +02:00
Gros Frumos
7db8b849e0
fix: исправить RuntimeError в aiosqlite — _get_conn как async context manager
...
`async with await _get_conn()` запускал тред дважды: первый раз внутри
`_get_conn` через `await aiosqlite.connect()`, второй раз в `__aenter__`
через `await self`. Преобразован в `@asynccontextmanager` с `yield` и
`finally: conn.close()`. Все вызывающие места обновлены. Тест
`test_init_db_synchronous` обновлён под новый API.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 23:16:12 +02:00
Gros Frumos
1c383191cc
security: заменить реальный BOT_TOKEN на плейсхолдер в env.template
...
Добавить пример CHAT_ID в комментарий.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 22:40:53 +02:00
Gros Frumos
b70d5990c8
deploy: подготовить артефакты для деплоя на baton.itafrika.com
...
- nginx/baton.conf: заменить <YOUR_DOMAIN> на baton.itafrika.com
- deploy/baton.service: добавить systemd-юнит для uvicorn (/opt/baton, port 8000)
- deploy/baton-keepalive.service: прописать реальный URL health-эндпоинта
- deploy/env.template: шаблон .env для сервера (без секретов)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 22:32:05 +02:00
Gros Frumos
2ee953866b
kin: BATON-ARCH-014 Доработать ADR-002 и ADR-004 по замечаниям ревью
...
- Создан docs/adr/ADR-002-offline-pattern.md (Accepted, дата 2026-03-20)
с секцией Open Questions: #1001 , охват 78.75%, ACTION:/конвенция #1049
- ADR-004: добавлен "exponential backoff согласно решению #1046 " к строке 429/retry_after
- ARCHITECTURE.md: добавлена вводная фраза "ADR-файлы хранятся в docs/adr/"
и строка таблицы для ADR-002 (Accepted)
- tests/test_arch_004.py: удалены 4 теста на отсутствие ADR-002,
устаревшие после создания нового ADR-002 (BATON-ARCH-014 supersedes)
- tests/test_arch_014.py: 14 новых тестов для критериев приёмки
- Все 216 тестов: passed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 22:05:04 +02:00
Gros Frumos
f082c75ff8
kin: BATON-ARCH-004 Переименовать ADR-002-offline-pattern.md во избежание конфликта нумерации
2026-03-20 21:23:34 +02:00
Gros Frumos
12abac74f0
kin: BATON-ARCH-013 Добавить keep-alive механизм для предотвращения cold start
2026-03-20 21:14:32 +02:00
Gros Frumos
5435d2006f
Merge branch 'BATON-ARCH-004-backend_dev'
2026-03-20 21:12:43 +02:00
Gros Frumos
004c20585a
kin: BATON-ARCH-004-backend_dev
2026-03-20 21:12:43 +02:00
Gros Frumos
aff655e73a
kin: BATON-ARCH-003 Rate limiting /api/register + timing-safe сравнение токенов
2026-03-20 21:11:04 +02:00
Gros Frumos
8012cb1c0f
kin: BATON-ARCH-010 Написать unit-тесты бэкенда (tester FAILED без вывода)
2026-03-20 21:10:26 +02:00
Gros Frumos
59eb117589
Merge branch 'BATON-ARCH-013-backend_dev'
2026-03-20 21:09:33 +02:00
Gros Frumos
f6f4300f73
kin: BATON-ARCH-013-backend_dev
2026-03-20 21:09:33 +02:00
Gros Frumos
bfa134e157
Merge branch 'BATON-ARCH-009-frontend_dev'
2026-03-20 21:09:05 +02:00
Gros Frumos
6dff5de077
kin: BATON-ARCH-009-frontend_dev
2026-03-20 21:09:05 +02:00
Gros Frumos
2c17ad4ddc
kin: BATON-ARCH-011 Защитить BOT_TOKEN от утечки в nginx access.log
2026-03-20 21:07:25 +02:00