(medium) 04_report.py/build_html: селектор .r.r красит все числовые ячейки в красный и перебивает зелёный #1507

Closed
opened 2026-06-15 05:58:55 +00:00 by bot-backend · 1 comment
Collaborator

Severity: medium · Категория: frontend · Файл: site-finder/04_report.py:225-225

04_report.py:225 — CSS .r.r{color:#c33;font-weight:600}. Повтор класса .r.r в CSS селектирует тот же одиночный класс .r, но со специфичностью 0,2,0. В результате ЛЮБАЯ ячейка class='r' (все числовые столбцы: расстояния, баллы, ранги) красится красным/bold. Для дельт (строка 190 даёт class='r g' при положительной дельте, class='r r' при отрицательной) .r.r (0,2,0) перебивает .g (0,1,0), поэтому положительные дельты тоже становятся красными. Импакт: визуально отчёт врёт — положительные дельты и нейтральные числа выглядят как негатив. Фикс: ввести отдельный класс (.neg/.red) для отрицательных значений вместо .r.r, а зелёный/красный задавать через него.

Почему баг: Автор явно хотел сделать «красный» отдельным классом (вероятно .red или .neg), но написал .r.r, который для CSS эквивалентен .r, но с большей специфичностью. В результате колонка Δ vs медиана (стр.190 даёт class='r g' для положительной дельты) всё равно станет красной, а все обычные числовые ячейки — тоже красными. Клиентский отчёт визуально врёт: положительные дельты выглядят как отрицательные.

Как чинить: Ввести отдельный класс для негатива (напр. .neg{color:#c33}) и навешивать его в comp_rows вместо повторного 'r'; либо изменить селектор. Сейчас delta-логика g/r (стр.186) ломается из-за специфичности.


deep-audit «армия ботов 2» · verify+harden, confidence 0.9 · unit U114

**Severity:** medium · **Категория:** frontend · **Файл:** `site-finder/04_report.py:225-225` 04_report.py:225 — CSS `.r.r{color:#c33;font-weight:600}`. Повтор класса `.r.r` в CSS селектирует тот же одиночный класс `.r`, но со специфичностью 0,2,0. В результате ЛЮБАЯ ячейка class='r' (все числовые столбцы: расстояния, баллы, ранги) красится красным/bold. Для дельт (строка 190 даёт class='r g' при положительной дельте, class='r r' при отрицательной) `.r.r` (0,2,0) перебивает `.g` (0,1,0), поэтому положительные дельты тоже становятся красными. Импакт: визуально отчёт врёт — положительные дельты и нейтральные числа выглядят как негатив. Фикс: ввести отдельный класс (.neg/.red) для отрицательных значений вместо `.r.r`, а зелёный/красный задавать через него. **Почему баг:** Автор явно хотел сделать «красный» отдельным классом (вероятно .red или .neg), но написал `.r.r`, который для CSS эквивалентен `.r`, но с большей специфичностью. В результате колонка Δ vs медиана (стр.190 даёт class='r g' для положительной дельты) всё равно станет красной, а все обычные числовые ячейки — тоже красными. Клиентский отчёт визуально врёт: положительные дельты выглядят как отрицательные. **Как чинить:** Ввести отдельный класс для негатива (напр. `.neg{color:#c33}`) и навешивать его в comp_rows вместо повторного 'r'; либо изменить селектор. Сейчас delta-логика g/r (стр.186) ломается из-за специфичности. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.9 · unit U114</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:58:55 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:15 +00:00
Owner

🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)

Текущее состояние кода: site-finder/04_report.py:225 (CSS .r.r); генерация ячеек — :186-190.

Корень: :225 .r.r{color:#c33;font-weight:600}. Повтор класса .r.r для CSS селектирует тот же одиночный класс .r, но со специфичностью (0,2,0). Все числовые ячейки имеют class='r' (:188-189 расстояния/баллы/ранги, :194, :197, :202, :204) → все красятся красным/bold. Для дельт :186 даёт cls = "g" при delta>0, и :190 рендерит class='r {cls}' = class='r g'; но .r.r (0,2,0) перебивает .g (:224, специфичность 0,1,0) → положительные дельты тоже красные. Отчёт визуально врёт: позитив выглядит как негатив.

Что править:

  • Ввести отдельный класс негатива, напр. .neg{color:#c33;font-weight:600} (:225), и навешивать его в comp_rows (:186) для delta<0 вместо повторного r: cls = "g" if delta>0 else ("neg" if delta<0 else "").
  • Тогда .g (:224) и .neg имеют равную специфичность (0,1,0) и не конфликтуют с базовым .r{text-align:right} (:223).

Что посмотреть:

  • Код: 04_report.py:223-225 (CSS), :184-190 (comp_rows delta-логика).
  • Vault: релевантных заметок не найдено.
**🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)** **Текущее состояние кода:** `site-finder/04_report.py:225` (CSS `.r.r`); генерация ячеек — `:186-190`. **Корень:** `:225` `.r.r{color:#c33;font-weight:600}`. Повтор класса `.r.r` для CSS селектирует тот же одиночный класс `.r`, но со специфичностью (0,2,0). Все числовые ячейки имеют `class='r'` (`:188-189` расстояния/баллы/ранги, `:194`, `:197`, `:202`, `:204`) → все красятся красным/bold. Для дельт `:186` даёт `cls = "g"` при `delta>0`, и `:190` рендерит `class='r {cls}'` = `class='r g'`; но `.r.r` (0,2,0) перебивает `.g` (`:224`, специфичность 0,1,0) → положительные дельты тоже красные. Отчёт визуально врёт: позитив выглядит как негатив. **Что править:** - Ввести отдельный класс негатива, напр. `.neg{color:#c33;font-weight:600}` (`:225`), и навешивать его в `comp_rows` (`:186`) для `delta<0` вместо повторного `r`: `cls = "g" if delta>0 else ("neg" if delta<0 else "")`. - Тогда `.g` (`:224`) и `.neg` имеют равную специфичность (0,1,0) и не конфликтуют с базовым `.r{text-align:right}` (`:223`). **Что посмотреть:** - Код: `04_report.py:223-225` (CSS), `:184-190` (comp_rows delta-логика). - Vault: релевантных заметок не найдено.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#1507
No description provided.