33 lines
3.0 KiB
Markdown
33 lines
3.0 KiB
Markdown
# ISSUES — Задачи и баг-трекер
|
||
|
||
## Исправлено
|
||
|
||
- [x] ~~Эмодзи в embed-сообщениях~~ — удалены `🌅`, `✅`, `❌` из `utils/morning_runner.py`
|
||
- [x] ~~f-string в logger~~ — замена на `%`-формат в `bot.py`
|
||
- [x] ~~`import time` внутри `__init__`~~ — перенесён на уровень модуля в `bot.py`
|
||
- [x] ~~Проверка наличия `.env`~~ — `.env` в `.gitignore`, есть `.env.example`
|
||
- [x] ~~Команда `!msg` в BotRunner~~ — удалена из проекта
|
||
- [x] ~~Отсутствует `.gitignore`~~ — файл существует
|
||
- [x] ~~Отсутствует Dockerfile~~ — файл существует
|
||
- [x] ~~Отсутствует `.env.example`~~ — файл существует
|
||
|
||
## Средний приоритет
|
||
|
||
- [ ] **Type hints в production-коде** — 17 функций без аннотаций:
|
||
- `commands/`: `cat()`, `hp()`, `morning()`, `nw()`, `pg()`, `stats()`, `status()` — все методы Cog
|
||
- `utils/pogoda.py`: `fetch_weather()`, `fetch_open_meteo()`, `wmo_to_russian()`, `translate_weather()`, `format_weather_data_for_console()`, `format_weather_for_embed()`, `pressure_to_mmhg()`
|
||
- `utils/news.py`: `fetch_rss()`, `truncate_title()`, `format_articles()`
|
||
- `utils/morning_runner.py`: `run_morning()`, `start()`, `stop()`
|
||
- [ ] **`asyncio.iscoroutinefunction` deprecated** — 53 warnings при запуске тестов, функция удалена в Python 3.16; причина — discord.py использует deprecated API (решение: обновление discord.py или monkey-patch в `bot.py`)
|
||
- [ ] **Утечка корутины Scheduler в тестах** — `RuntimeWarning: coroutine 'Scheduler._scheduler_loop' was never awaited` в `test_morning_runner.py` (строки 105, 137, 166 — моки не останавливают task)
|
||
- [ ] **Graceful shutdown (SIGTERM)** — нет обработки `SIGTERM`, бот завершается резко в Docker/K8s без закрытия handler-ов и cleanup
|
||
- [ ] **Пустой `__init__` в Morning** — `commands/morning.py` (строка 13): `def __init__(self): pass` можно убрать
|
||
- [ ] **Global RateLimiter на модульном уровне** — `utils/rate_limiter.py` (строки 70-75): экземпляры создаются при импорте, нельзя подменить в тестах
|
||
|
||
## Низкий приоритет
|
||
|
||
- [ ] **Type hints в тестах** — 144 функции `test_*()` без `-> None` (не влияет на работу, но зашумляет warnings)
|
||
- [ ] **`import` внутри функций в тестах** — 23 вхождения в `tests/` (приемлемо, но лучше вынести наверх)
|
||
- [ ] **Добавить pre-commit хуки** — lint (ruff), форматирование (black)
|
||
- [ ] **Интеграционные тесты** — сейчас только unit-тесты с моками
|