[tradein][infra][tech-debt] Quality-gate дыры: tradein-mvp вне pre-commit ruff + pytest не в CI/deploy #666

Closed
opened 2026-05-29 14:10:56 +00:00 by Light1YT · 0 comments
Owner

Две дыры в качестве, всплывшие 2026-05-29 (из-за них в main протекали red-тесты и ruff-ошибки):

1. pre-commit ruff НЕ покрывает tradein-mvp/backend

.pre-commit-config.yaml: hook ruff имеет files: ^backend/ → матчит только основной backend/, а tradein-mvp/backend/ не проверяется. Следствие: app/services/exporters/trade_in_pdf.py накопил 51 ruff-ошибку (47 E501 + dead PIL imports + days_overlay), никто не ловил.
Fix: добавить tradein-mvp/backend/ в files: ruff+ruff-format хуков (или отдельный hook-блок). Затем разгрести backlog ошибок (ruff check --fix + ручная чистка E501 в HTML-f-строках trade_in_pdf.py).

2. pytest не гоняется ни в deploy, ни (видимо) в CI

deploy-tradein.yml собирает образ + применяет миграции, но не запускает pytest. Следствие: test_estimator_source_quota.py был RED на main (распаковка 2-tuple из _fetch_analogs, ставшего 3-tuple) — проскочило, починено в #648 S3. Без гейта red-тесты копятся незаметно.
Fix: добавить pytest-стадию (оба стэка) в Forgejo Actions ДО build/deploy (fail → no deploy). Либо отдельный CI-workflow на PR. Решить gating-политику.

Почему важно

Оба гейта дешёвые, но их отсутствие = тихая деградация качества (точность оценки зависит от estimator-тестов; PDF/scrapers — от lint). Особенно на фоне роста tradein-mvp.

Refs

  • .pre-commit-config.yaml (ruff hook files: ^backend/)
  • .forgejo/workflows/deploy-tradein.yml (нет pytest-стадии)
  • найдено в сессии #648 (S3 fix quota-тестов, S5b 51 ruff в trade_in_pdf.py)
Две дыры в качестве, всплывшие 2026-05-29 (из-за них в main протекали red-тесты и ruff-ошибки): ## 1. pre-commit ruff НЕ покрывает tradein-mvp/backend `.pre-commit-config.yaml`: hook `ruff` имеет `files: ^backend/` → матчит только основной `backend/`, а **`tradein-mvp/backend/` не проверяется**. Следствие: `app/services/exporters/trade_in_pdf.py` накопил **51 ruff-ошибку** (47 E501 + dead `PIL` imports + `days_overlay`), никто не ловил. **Fix:** добавить `tradein-mvp/backend/` в `files:` ruff+ruff-format хуков (или отдельный hook-блок). Затем разгрести backlog ошибок (`ruff check --fix` + ручная чистка E501 в HTML-f-строках trade_in_pdf.py). ## 2. pytest не гоняется ни в deploy, ни (видимо) в CI `deploy-tradein.yml` собирает образ + применяет миграции, но **не запускает pytest**. Следствие: `test_estimator_source_quota.py` был RED на main (распаковка 2-tuple из `_fetch_analogs`, ставшего 3-tuple) — проскочило, починено в #648 S3. Без гейта red-тесты копятся незаметно. **Fix:** добавить pytest-стадию (оба стэка) в Forgejo Actions ДО build/deploy (fail → no deploy). Либо отдельный CI-workflow на PR. Решить gating-политику. ## Почему важно Оба гейта дешёвые, но их отсутствие = тихая деградация качества (точность оценки зависит от estimator-тестов; PDF/scrapers — от lint). Особенно на фоне роста tradein-mvp. ## Refs - `.pre-commit-config.yaml` (ruff hook `files: ^backend/`) - `.forgejo/workflows/deploy-tradein.yml` (нет pytest-стадии) - найдено в сессии #648 (S3 fix quota-тестов, S5b 51 ruff в trade_in_pdf.py)
Light1YT added the
tradein
label 2026-05-29 14:10:56 +00:00
bot-reviewer added the
status/qa
label 2026-05-29 19:18:49 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#666
No description provided.