chore(tradein): четыре символа, на которые нет ни одной ссылки #3224

Merged
lekss361 merged 1 commit from chore/3212-dead-code-tradein into main 2026-08-29 14:57:29 +00:00
Owner

Первый кусок чистки. Только удаления: 24 строки, 0 добавленных.

Как искалось

Сверка двух независимых источников, а не глазами:

  1. подсчёт упоминаний каждого имени по всем python-файлам (1112 файлов, включая тесты) → имена, встречающиеся ровно один раз, в собственном объявлении;
  2. каждое подтверждено serena find_referencing_symbols — это LSP, он видит косвенные ссылки, которых не видит подсчёт по тексту;
  3. и проверено grep'ом по yml/sql/ts/tsx/md — на случай ссылки строкой (имя celery-задачи, конфиг, контракт с фронтом).

Третий шаг оказался не формальностью — см. ниже.

Удалено

символ что это было
_qr_code_data_url (trade_in_pdf) QR как SVG data URL, не вызывался ниоткуда
_local_name (gar_flats_loader) снятие namespace с имени тега
AvitoParseError класс никто не поднимает и не ловит
IMVCityMismatchError то же

Вместе с первым ушёл осиротевший import segno. import io оставленio.BytesIO используется дальше по файлу (строка 774); проверял отдельно, потому что на глаз он выглядел таким же осиротевшим.

Что фильтр показал, но трогать нельзя

Из 367 первичных кандидатов настоящими оказались 33, а после разбора — 4. Остальное:

  • ~200 обработчиков FastAPI и celery-задач — их поднимает декоратор, по имени их действительно никто не зовёт. Это ровно та слепота, о которой предупреждает .claude/rules/delegation.md про analyze_impact;
  • refresh_ddu_price_indicator — точка ручного обслуживания, задокументирована в комментарии к матвью: data/sql/152_mv_ddu_price_indicator.sql → «Refresh: ddu_price_indicator.refresh_ddu_price_indicator() (не в beat)». Ссылок из кода нет намеренно;
  • schemas/parcel.py::MarketPrice — половина контракта, фронт использует: frontend/src/types/site-finder.tsmarket_price?: MarketPrice | null;
  • JobSetting — SQLAlchemy-модель, живёт через metadata Base.

Follow-up

segno после этого PR не используется в кодовой базе нигде, но остаётся в backend/pyproject.toml. Снятие зависимости требует пересборки лока — отдельным PR.

Приёмка

ruff check — clean. pytest4974 passed, 37 skipped.

Первый кусок чистки. Только удаления: **24 строки, 0 добавленных**. ## Как искалось Сверка двух независимых источников, а не глазами: 1. подсчёт упоминаний каждого имени по всем python-файлам (1112 файлов, включая тесты) → имена, встречающиеся **ровно один раз**, в собственном объявлении; 2. каждое подтверждено `serena find_referencing_symbols` — это LSP, он видит косвенные ссылки, которых не видит подсчёт по тексту; 3. и проверено grep'ом по `yml/sql/ts/tsx/md` — на случай ссылки строкой (имя celery-задачи, конфиг, контракт с фронтом). Третий шаг оказался не формальностью — см. ниже. ## Удалено | символ | что это было | |---|---| | `_qr_code_data_url` (`trade_in_pdf`) | QR как SVG data URL, не вызывался ниоткуда | | `_local_name` (`gar_flats_loader`) | снятие namespace с имени тега | | `AvitoParseError` | класс никто не поднимает и не ловит | | `IMVCityMismatchError` | то же | Вместе с первым ушёл осиротевший `import segno`. **`import io` оставлен** — `io.BytesIO` используется дальше по файлу (строка 774); проверял отдельно, потому что на глаз он выглядел таким же осиротевшим. ## Что фильтр показал, но трогать нельзя Из 367 первичных кандидатов настоящими оказались 33, а после разбора — 4. Остальное: - **~200 обработчиков FastAPI и celery-задач** — их поднимает декоратор, по имени их действительно никто не зовёт. Это ровно та слепота, о которой предупреждает `.claude/rules/delegation.md` про `analyze_impact`; - **`refresh_ddu_price_indicator`** — точка ручного обслуживания, задокументирована в комментарии к матвью: `data/sql/152_mv_ddu_price_indicator.sql` → «Refresh: `ddu_price_indicator.refresh_ddu_price_indicator()` (не в beat)». Ссылок из кода нет **намеренно**; - **`schemas/parcel.py::MarketPrice`** — половина контракта, фронт использует: `frontend/src/types/site-finder.ts` → `market_price?: MarketPrice | null`; - **`JobSetting`** — SQLAlchemy-модель, живёт через metadata `Base`. ## Follow-up `segno` после этого PR не используется в кодовой базе нигде, но остаётся в `backend/pyproject.toml`. Снятие зависимости требует пересборки лока — отдельным PR. ## Приёмка `ruff check` — clean. `pytest` — **4974 passed, 37 skipped**.
lekss361 added 1 commit 2026-08-29 13:00:22 +00:00
chore(tradein): четыре символа, на которые нет ни одной ссылки
All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI / changes (pull_request) Successful in 13s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m12s
4902d1e29e
Найдено сверкой двух независимых источников: подсчёт упоминаний по всем
python-файлам (включая тесты) дал имена, встречающиеся ровно один раз — в
собственном объявлении; каждое затем подтверждено serena find_referencing_symbols
(LSP, видит и косвенные ссылки) и проверено grep'ом по yml/sql/ts/md на случай
ссылки строкой.

Удалено:
  * _qr_code_data_url (trade_in_pdf) — QR как SVG data URL, не вызывался
    ниоткуда; вместе с ним ушёл осиротевший import segno. `io` ОСТАВЛЕН —
    io.BytesIO используется дальше по файлу (строка 774);
  * _local_name (gar_flats_loader) — снятие namespace с имени тега;
  * AvitoParseError — класс никто не поднимает и не ловит;
  * IMVCityMismatchError — то же.

Что НЕ тронуто, хотя фильтр их показал:
  * ~200 обработчиков FastAPI и celery-задач — их поднимает декоратор, по имени
    их действительно никто не зовёт;
  * refresh_ddu_price_indicator — точка ручного обслуживания, задокументирована
    в комментарии к матвью (data/sql/152_mv_ddu_price_indicator.sql: «Refresh:
    ... (не в beat)»);
  * schemas/parcel.py::MarketPrice — половина контракта, фронт использует
    (frontend/src/types/site-finder.ts: market_price?: MarketPrice);
  * JobSetting — SQLAlchemy-модель, живёт через metadata Base.

segno остался в backend/pyproject.toml и больше нигде не используется — снятие
зависимости требует пересборки лока, поэтому отдельным PR.

ruff clean, 4974 passed / 37 skipped.
lekss361 merged commit 7563f849db into main 2026-08-29 14:57:29 +00:00
lekss361 deleted branch chore/3212-dead-code-tradein 2026-08-29 14:57:29 +00:00
Sign in to join this conversation.
No reviewers
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#3224
No description provided.