Добавлены открытые задачи после кодревью (12 issue)

This commit is contained in:
deadzilla 2026-07-12 23:39:56 +05:00
parent 90547df975
commit 250452ad60

View File

@ -39,3 +39,28 @@
- [x] **`requirements.txt` без пиннинга версий** — `>=` заменён на `~=` (compatible release)
- [x] **Закомментированный тест `pressure_to_mmhg(0)`** — удалена устаревшая закомментированная строка
- [x] **`format_articles(None)` бросает `TypeError`** — добавлена валидация `None`, graceful fallback с сообщением
---
## Открытые задачи
### Критические
- [ ] **`setup_logging()` создаёт дублирующиеся handlers** — каждый вызов добавляет новые `StreamHandler` и `RotatingFileHandler` к root-логгеру без проверки (`utils/logger.py`, строки 30-39)
- [ ] **Первый `logger.info()` теряется**`"=== Запуск Discord бота ==="` вызван до `setup_logging()`, у root-логгера нет handlers (`bot.py`, строка 196)
- [ ] **`translate_weather()` уязвим к ложным substring-совпадениям** — `if key.lower() in en_lower` может вернуть неверный перевод (например, `"Heavy rain"` совпадёт в `"Heavy rain shower"` раньше, чем точный ключ) (`utils/pogoda.py`)
### Средние
- [ ] **`fromstring` импортирован внутри функции `fetch_rss`** — `from defusedxml.ElementTree import fromstring` на строке 24, скрывает зависимость от линтеров и добавляет оверхед (`utils/news.py`)
- [ ] **`Scheduler._start_scheduler()` создаёт task синхронно** — `asyncio.create_task()` в `__init__` зависит от активного event loop неявно (`utils/morning_runner.py`, строка 119)
- [ ] **`Pg.__init__` хранит `self.api_url` как инстанс-переменную** — копия константы `API_URL_WEATHER` без необходимости (`commands/pg.py`, строки 13-14)
- [ ] **`fetch_cat()` не передаёт `x-api-key`** — TheCatAPI требует/рекомендует заголовок `x-api-key`, без него запросы могут быть ограничены (`utils/cat.py`, строка 15)
### Низкие
- [ ] **Глобальные экземпляры RateLimiter + factory-функции** — factory-функции `make_*_limiter()` существуют, но production-код импортирует глобальные переменные напрямую (`utils/rate_limiter.py`, строки 94-97)
- [ ] **`@pytest.mark.asyncio` избыточен** — `pytest.ini` уже содержит `asyncio_mode = auto` (`tests/test_integration.py`)
- [ ] **`Dockerfile` не копирует `tests/`** — нельзя запустить `pytest` внутри контейнера, затрудняет отладку в Docker
- [ ] **Приватные атрибуты на объекте бота**`self.bot._start_time` и `self.bot._scheduler` нарушают инкапсуляцию (`bot.py`, строки 116, 148)
- [ ] **Избыточная проверка `ctx` в `on_command_error`**`ctx` всегда передан и не может быть `None` (`bot.py`, строки 138-143)