Доска
Канбан
История
Баги
Задачи
Планы
Г
гость
выйти
0
в работе
23
горит
81
открытых багов
42
задач в очереди
820
сделано всего
Баги
Что сломано и что уже починено.
сначала новые
BUG-472
Привязка оффера к позиции ставилась по SKU без учёта источника
низкая по факту
BUG-471
1267 сопоставлений не были отражены в офферах: работа висела в песочнице как несделанная
средняя
BUG-470
Товары с новым брендом терялись: остаток старой схемы блокировал вставку в белый список
высокая
BUG-469
Воркер падал насмерть при уборке за умершим предшественником
высокая
BUG-468
Отложенные повторы никогда не ставились: `zadd` передавал Predis словарь наоборот
высокая
BUG-467
Воркеры парсинга работали под чужим пользователем: очередь `fetch-product` сгорала вхолостую
высокая
BUG-466
Ассеты страницы подключаются дважды, если у тенанта есть свой override
средняя
BUG-465
Автозагрузчик основной рабочей копии указывал в чужой git worktree
средняя
BUG-464
Мёртвые копии форм редактирования в двух разделах админки
низкая
BUG-463
Страница `/adler` англитьютора отдаётся без стилей и картинок
низкая
BUG-462
Layout vegway не задавал `$layoutName`: PHP-warning поверх каждой страницы
средняя
BUG-461
Предупреждение «новые фото стирают предыдущие» почти не видно
средняя
BUG-460
Клиент мог выбрать бесплатную доставку, которой не существует
средняя
BUG-459
Магазин без своей темы запрашивал несуществующий CSS тенанта на каждой странице
низкая
BUG-458
Тема доски задач разъезжалась на всех экранах сразу
средняя
BUG-457
Строка списка задач на доске печаталась сама поверх себя
средняя
BUG-456
Шесть изменяющих действий кабинета не проверяли CSRF
средняя
BUG-455
Загрузка прайс-листа падала на середине файла из-за уникального ключа истории
высокая
BUG-454
Список маркетплейсов не изолирован по тенанту: каждый видит источники чужого
средняя
BUG-453
Web-jail'ы fail2ban на kasey не видели логи основных доменов
средняя
BUG-452
Крон легаси-сайтов сутки ходил с чужим ключом: заказы на сайты не приходили
высокая
BUG-451
Панель наблюдения показывала время в UTC
низкая
BUG-450
Админский раздел «Связка SKU» пуст для випера, хотя связок 12 893
средняя
BUG-449
Бэкфилл связей затёр `updated_at` у 715 тысяч строк
низкая
BUG-448
На board и git нет заголовков безопасности, которые есть на прод-сайтах
низкая
BUG-447
Парсер-серверы принимают запросы по HTTP: ключ доступа ходит открытым текстом
высокая
BUG-446
У `ligamail.ru` нет DMARC-записи
низкая
BUG-445
Два токена Gitea с правом записи живут после разовой задачи
высокая
BUG-444
Gitea отстала на два релиза, оба с исправлениями безопасности
высокая
BUG-443
Vikunja на доске обновляется вручную, и никто не следит за выходом версий
средняя
BUG-442
ligawatch: 22 неустановленных обновления безопасности
средняя
BUG-441
Восемь парсер-серверов: root по паролю и без fail2ban
высокая
BUG-440
ligamail: вход root по SSH-паролю открыт, 945 попыток подбора в сутки
критичная
BUG-439
ligarelay: вход root по SSH-паролю открыт, идёт непрерывный подбор
критичная
BUG-438
Пять SKU конкурентов сопоставлены сразу с двумя позициями ниши
низкая
BUG-437
«Биржевой стакан» открывался экраном прочерков вместо цен конкурентов
средняя
BUG-436
Модель создавалась в обход `makeModel()` в 32 контроллерах
высокая
BUG-435
Оценка склада по рыночным ценам всегда показывала ноль
средняя
BUG-434
«Сравнение цен» считало конкурентом сам магазин клиента
средняя
BUG-433
Фильтр «Цветовая зона» в админском «Рынке» всегда возвращал пустой список
низкая
BUG-432
Слайдер маркетинговой секции падал на алиасе таблицы
средняя
BUG-431
Слайдеры товаров не рендерились нигде на витрине
средняя
BUG-430
Админские разделы «Рынок» и «Связка SKU» в Киткубе падали с HTTP 500
высокая
BUG-429
Раннер миграций отклонял миграцию из-за упоминания `DROP COLUMN` в комментарии
средняя
BUG-428
Парсинг источников Kitcube на проде не запущен вообще
высокая
BUG-427
`marketplaces.abbr` источников Kitcube разошёлся локаль↔прод: парсинг на проде упал бы на резолве
высокая
BUG-426
Проверка перегрузки не работала на машинах без `bc`
средняя
BUG-425
Файлы состояния наблюдателей плодились без конца
средняя
BUG-424
kasey и ligaflow не могли отправить ни одной тревоги
высокая
BUG-423
Заявки с kitcube.ru и vittrina.ru не уходили в Telegram: не настроен chat_id
высокая
BUG-422
На проде у Киткуба испорчены JSON-настройки: schema.org-разметка не выводилась вообще
высокая
BUG-421
Роль `laptop` в репозитории `infra` разошлась с реально исполняемыми скриптами машины разработчика
средняя
BUG-420
У тенанта две несогласованные 404-страницы: `/error` дублирует несуществующую страницу
низкая
BUG-419
`/error` у `kitcube-ru` и `ligameind-ru` — бесконечный цикл редиректов вместо страницы ошибки
высокая
BUG-418
`sku_code` как число в чёрном списке и журнале виперов: строковые артикулы забанить нельзя
высокая
BUG-417
На проде у 21 тыс. офферов усечён `sku_code`: разные товары слиплись под одним кодом
высокая
BUG-416
Мобильное меню Киткуба уходило за нижний край экрана и не прокручивалось
средняя
BUG-415
Страница категории блога выводилась без стилей: пилюли, мета и отступы отсутствовали
средняя
BUG-414
Провал restic-бэкапа завершался кодом 0: нерабочая ночь выглядела как успешная
высокая
BUG-413
На проде нет workspace-scoped уникальных индексов: чёрные списки Kitcube не изолированы между workspace
высокая
BUG-412
На проде в `promocodes` нет `tenant_id` и `is_enabled` — промокоды не работают вообще
высокая
BUG-411
Кириллические имена переменных в bash-скриптах молча ломали логику
высокая
BUG-410
Обложки блога разложились по чужим папкам: снова разъехавшиеся `id`
высокая
BUG-409
`og:image` статьи блога отдавал общую картинку тенанта
средняя
BUG-408
Мёртвые классы и вводящие в заблуждение имена методов
низкая
BUG-407
`AntiFraudSystem` фактически проверяет один узкий сценарий
низкая
BUG-406
`NativeSession` различает «нет ключа» через магическую строку-сентинел
низкая
BUG-405
Скачивание фото оффера при сопоставлении отключено «временно» с 2026-07-30
низкая
BUG-404
Фильтры-чекбоксы аналитики не переживают перезагрузку страницы
низкая
BUG-403
Отключённые действия в четырёх админ-разделах: код закомментирован, кнопок нет
средняя
BUG-402
`sitemap.xml` для `kitcube-ru` содержит только главную
средняя
BUG-401
Четыре источника парсинга существуют в коде, но не зарегистрированы
низкая
BUG-400
Провал провижининга магазина Витрины никого не уведомляет
высокая
BUG-399
Два генератора фидов игнорируют переданный список товаров
средняя
BUG-398
`OzonCrawler::buildTargetUrl()` игнорирует SKU и всегда возвращает один и тот же URL
высокая
BUG-397
44 метода контроллеров без обязательных `@throws`
низкая
BUG-396
`Arbitrary.php`: 541 строка закомментирована, ~750 строк недостижимы после `exit`
низкая
BUG-395
9 разделов админки задеплоены, но отсутствуют в меню на проде
высокая
BUG-394
Canonical пропускал произвольные query-параметры
средняя
BUG-393
Блог `ligameind-ru` не был включён на проде: RSS отдавала 404 при живом коде
средняя
BUG-392
Три FormData-загрузки в админке слали POST без CSRF-заголовка
высокая
BUG-391
Синхронизация медиа сопоставляла товары по `id`: ложные расхождения и риск порчи
критичная
BUG-390
`~/.my.cnf` перебивал `MYSQL_PWD`: запись на прод падала Access denied
высокая
BUG-389
`check-tenant-media`/`sync-tenant-media` не работали вообще: брали плейсхолдер вместо пароля
критичная
BUG-388
Ложная тревога: «боевые пароли БД лежат в git»
—
BUG-387
Локальное окружение легло на 503: `.env` разошёлся с реальными паролями
высокая
BUG-386
Три товара «циркуляционные» описаны как насосы повышения давления
низкая
BUG-385
Ротация прод-паролей и live-ключа YooKassa не выполнена
критичная
BUG-384
Security-аудит всей кодовой базы: 15 находок, 13 закрыто сразу
критичная
BUG-383
`ApiOzonService`: забытый `use Marketplace` ронял весь класс
высокая
BUG-382
У всех 1252 товаров Kepeida были пустые `seo_title`/`seo_description`
высокая
BUG-381
Файловый бэкап пропускался: cron не догонял тик, съеденный авторебутом в 02:00
высокая
BUG-380
Бэкапы kasey не делались 5 дней: диск переполнен неверной retention-политикой
критичная
BUG-379
Скрытый тариф VIP был бы доступен любому посетителю прямым POST
высокая
BUG-378
Гостевой чекаут Kepeida блокирован: форма не собирает пароль
высокая
BUG-377
`createZeroPricesForAllMarketplaces()`: TypeError при любом создании товара
высокая
BUG-376
`loadVars()` оставлял schema-дескриптор вместо значения: INSERT падал `Incorrect integer value: 'int'`
высокая
BUG-375
Артикул вида «ELECTR-001» молча ломал страницу товара
высокая
BUG-374
Пункты выдачи СДЭК не находились: `.empty()` чистил data-кэш jQuery
высокая
BUG-373
Способ доставки СДЭК не появлялся в чекауте, несмотря на включённый override
средняя
BUG-372
Виджет подсказок перезаписывал поле ИНН названием компании
высокая
BUG-371
Страничный JS двух тенантов написан не в конвенции проекта
низкая
BUG-370
Мёртвый код пересчитывает то, для чего уже есть предпосчитанная таблица
низкая
BUG-369
Fluid-режим RedBeanPHP маскирует любое расхождение схемы молчанием
критичная
BUG-368
PHP-лог ошибок на проде физически не пишется
высокая
BUG-367
Мёртвые CSS-правила `li:has(...)` создавали иллюзию скрытой корзины
низкая
BUG-366
Кнопка «Купить» показывалась при нулевом остатке, противореча соседним блокам
высокая
BUG-365
`/order/success` писал «Заказ оплачен!» даже при отменённой оплате
высокая
BUG-364
`deploy` не пересобирал общие area-ассеты вообще
высокая
BUG-363
«Оплатить заказ» вела на несуществующий `/paykeeper/get-pay-link`
высокая
BUG-362
«Отменить заказ» в кабинете была нерабочей: не было метода контроллера
высокая
BUG-361
Молчаливо проглоченный `Unknown column`: заказ не создавался, но клиент видел «успех»
критичная
BUG-360
Не было индексов по `workspace_id`: кабинет грузился 3+ секунды
высокая
BUG-359
500 на `kitcube.ru/cabinet`: модели создавались через `new`, минуя проброс сессии
критичная
BUG-358
Несобранные `.min.*` блокировали `git pull` в деплое
высокая
BUG-357
`exec()` копил вывод предыдущих магазинов пачки в лог ошибки следующего
низкая
BUG-356
Ложный диагноз: «ретеншен бэкапов не подключён к планировщику»
—
BUG-355
Хедер кабинета Витрины разъехался с лендингом, стиль эйброу не применялся
низкая
BUG-354
`/reviews/store` тоже не был закрыт: живой 302 на kepeidapump.ru
средняя
BUG-353
Приватные роуты кабинета Kitcube не были закрыты в `robots.txt`
средняя
BUG-352
Индикатор срока подписки считал период константой 30/365 дней
низкая
BUG-351
Двойной разделитель в хлебных крошках на всех страницах Витрины
низкая
BUG-350
Ошибка формы показывалась в чужой карточке дашборда
низкая
BUG-349
Воркеры провижининга дублировали SQL вместо вызова модели
средняя
BUG-348
`clubDiscount` (скидка WB Клуба) не сбрасывался никогда
высокая
BUG-347
Воркер очередей ронял ВСЕ легаси-тенанты неделю: WB сам выставил скидки до −90%
критичная
BUG-346
`<h2>` шёл в DOM раньше `<h1>` на странице товара
средняя
BUG-345
Кнопка «Запросить КП» не работала на догруженных AJAX карточках
средняя
BUG-344
`layout: ''` откатывался на дефолт: AJAX-фрагмент возвращал полную страницу
средняя
BUG-343
263 из 1251 товаров Kepeida имели на проде другие фото, чем на локали
высокая
BUG-342
Числовые характеристики товаров Kepeida синтетические, а не реальные
высокая
BUG-341
«Рынок» — материализованный снапшот без единого автоматического пересчёта
средняя
BUG-340
На проде ~684 записи `offer_match` указывают на уже расцепленные сопоставления
средняя
BUG-339
Форма без кнопки «Сохранить» в шести админ-разделах
высокая
BUG-338
Подпись «Наложенный платёж» подменяется числом после пересчёта
низкая
BUG-337
Письма о заказе тихо теряются из-под php-fpm: коннект к relay упирается в 5-секундный таймаут
высокая
BUG-336
Новые коды ошибок показывались пользователю сырыми
низкая
BUG-335
Счётчик «Наших SKU с ценами конкурентов» тихо показывал 0 при включённом фильтре
средняя
BUG-334
`buildExcerpt()` ломал вёрстку карточек листинга блога
средняя
BUG-333
Миниатюры фото сжимались до 24px: `max-width` темы побеждал явную ширину
низкая
BUG-332
Клик по фото в стакане заодно разворачивал строку
низкая
BUG-331
Шкала «Позиция в диапазоне» не показывала нашу цену крайней
низкая
BUG-330
Поиск в шапке кабинета Kitcube всегда уводил на `/price-analysis`
средняя
BUG-329
Латентный: шаблон `{name}` вывелся бы буквально в title групп каталога
средняя
BUG-328
Одинаковый `<title>`/`<description>` у всех 21 URL блога Kepeida
высокая
BUG-327
AI-рекомендации на проде не работали вовсе (0 из 85 778)
высокая
BUG-326
«Стакан» показывал расцепленные офферы как сопоставленные
высокая
BUG-325
`offer_match` и `market_offers` не имели надёжного общего ключа
высокая
BUG-324
Парсер перезатирал `sku_code` в литеральный `"0"` при повторном парсинге
критичная
BUG-323
`MarketOffers.sku_code` на проде массово терял ведущие нули (126 948 строк)
критичная
BUG-322
`/cabinet` Kepeida падал HTTP 500 при непустом списке заказов
критичная
BUG-321
RedBeanPHP биндил числовые строки как `PARAM_INT` — SQL-ошибка на VARCHAR-колонке
критичная
BUG-320
Несуществующие легаси-слаги отдают 200 вместо 404
средняя
BUG-319
Старый JOIN рекомендаций мог смешать данные разных тенантов
средняя
BUG-318
Кнопка «Назад» в админке уводила на витрину: коллизия cookie `referrer`
средняя
BUG-317
Разделение заказа задваивало доставку и наложенный платёж в каждом под-заказе
высокая
BUG-316
Резолв артикулов в Kitcube шёл по тенанту, а не по workspace
высокая
BUG-315
Первый парсинг новой референс-SKU оставался несопоставленным
средняя
BUG-314
`market_offers.predicted_product_id` ссылался на каталог старого тенанта
высокая
BUG-313
Легаси catch-all блога ломал `/order` и `/cabinet` у Kepeida
критичная
BUG-312
Парсинг размазан между двумя директориями, документация отстала от кода
низкая
BUG-311
`public/yookassa/handler.php` — чужая заготовка, задеплоенная и публично доступная
средняя
BUG-310
Live-ключ YooKassa лежит открытым текстом в `config/yookassa.php`
критичная
BUG-309
Саморегистрация в Kitcube показывала клиенту чужие реальные данные
критичная
BUG-308
Реквизиты vittrina-ru на проде не применились ни в одном деплое
высокая
BUG-307
Плавающая кнопка перекрывала заголовок карточки блога на мобильных
средняя
BUG-306
Легал-страницы на проде показывали title главной
высокая
BUG-305
Хлебные крошки дублировали разделитель «/» в тёмной теме
низкая
BUG-304
Cookie-баннер отключался сразу и на публичной части Kitcube
средняя
BUG-303
nginx перехватывал `robots.txt`/`sitemap.xml` на всех 6 прод-доменах
высокая
BUG-302
`tenant_id` одного тенанта различается между локалью и продом
высокая
BUG-301
Catch-all модуля `blog` перехватывал `/signup` и `/login`
высокая
BUG-300
`assets/tenants/kitcube-ru/sass/layouts/base.sass` не компилируется и не подключён
низкая
BUG-299
Нет корневого `/favicon.ico` ни у одного тенанта
низкая
BUG-298
Telegram-превью не показываются ни для одного тенанта: Selectel блокирует IP Telegram
средняя
BUG-297
Задвоенный блок переменных в теме Kitcube с расходящимися значениями
средняя
BUG-296
Бейджи сигналов не были окрашены по важности
низкая
BUG-295
`$mono` на лендинге ссылался на Monaco вместо загруженного JetBrains Mono
низкая
BUG-294
Новый тенант наследовал `noindex` из дефолта схемы
высокая
BUG-293
Кнопка «Забанить» падала 500 для алфавитно-цифровых SKU
высокая
BUG-292
Захардкоженный workspace `lego` в пути проверки картинки оффера
средняя
BUG-291
Весь playwright-путь парсинга был сломан: несуществующий хост и неверный порт
критичная
BUG-290
`RedisQueueService`: мёртвый класс с латентной дырой `new $class()` без allowlist
средняя
BUG-289
Пять методов `ApiOzonService` были физически недостижимы
низкая
BUG-288
`View::setLayout()` принимал `false`, которого не допускает свойство; мёртвый `Controller::getData()`
низкая
BUG-287
`DataConnectionManager::closeConnections()` молча проглатывал ошибки
низкая
BUG-286
`RedisFacade`: `xaddMaxLenExpire()` не работала, `lindex()` возвращала `false` вместо `null`
средняя
BUG-285
17 устаревших ссылок на несуществующие `@todo`
низкая
BUG-284
`ErrorResponder` не передавал `$isDev`; неверный breadcrumb на странице сбоя оплаты
низкая
BUG-283
`ProxyService`: заявленный `/api/request` был недоступен
низкая
BUG-282
`OpenAIService` слал payload устаревшего API на Chat Completions
средняя
BUG-281
`getAll()` и `getAllVisible()` делили один статический кэш
средняя
BUG-280
Фильтр «невыгодно» в Brickeconomy падал SQL-ошибкой (опечатка в имени колонки)
средняя
BUG-279
Veeper-guard задублирован 22 раза вместо одной точки
низкая
BUG-278
Двойной SQL-запрос заказа на каждый webhook оплаты
низкая
BUG-277
Лок и MySQL-транзакция чекаута удерживались через синхронные Telegram и email
высокая
BUG-276
Тройное дублирование проверки `ApiCallable`, разошедшееся строгостью
средняя
BUG-275
`/admin/veeper-log` падал `UnhandledMatchError` на любом реальном значении
высокая
BUG-274
`FrontendModel::getById()` не фильтровал по `tenant_id`/`workspace_id` — базовый класс ~64 моделей
критичная
BUG-273
`Response::back()` — открытый редирект через сырой `Referer`
средняя
BUG-272
Дрейф slug источника молча сохранял товары с `aggregator_id=0`
средняя
BUG-271
JSON-LD фолбэк Brickeconomy падал TypeError и терял частичные данные
средняя
BUG-270
Отсутствие поля `dispatch` заставляло задачу тихо исчезать
высокая
BUG-269
`SourceConfig`: сырая строка вместо `::class` и лживый комментарий
низкая
BUG-268
`CleanupSkus` удалил бы ВСЕ изображения SKU, а не только дубли
высокая
BUG-267
`ApiOzonService::getNewOrders()` читал неверный ключ ответа
средняя
BUG-266
Мёртвый фолбэк давал бессмысленный, но непустой URL карточки Ozon
низкая
BUG-265
Catch-блок сам падал, когда Redis недоступен
средняя
BUG-264
Флаг `only_excel_history` ничего не блокировал (проверка была закомментирована)
средняя
BUG-263
Виджет «Remaining» на `/admin/parser` показывал остаток только последнего воркера
низкая
BUG-262
Скрытые товары попадали в маркетинговый слайдер
средняя
BUG-261
PNG-стикер заказа WB никогда не сохранялся
средняя
BUG-260
`VseinstrumentiRu::getPrice()` падал на нечисловом тексте цены
средняя
BUG-259
Капча генерировалась не криптостойким генератором
средняя
BUG-258
`Json::decode()` бросал `TypeError` вместо `JsonException` на JSON-скаляре
средняя
BUG-257
Товар с `&` в названии ломал XML-фид четырёх площадок из пяти
высокая
BUG-256
Краулер ссылок не блокировал `/admin`
средняя
BUG-255
TOCTOU-гонка в дедупе очереди парсинга
средняя
BUG-254
Задвоение прибыли на заказах с несколькими инвесторами
высокая
BUG-253
Прибыль систематически завышалась: не учитывалась `commission_additional`
высокая
BUG-252
Откат массовой переоценки ADV-цен считался по неверной формуле
критичная
BUG-251
Изменение только розничной Excel-цены терялось целиком
высокая
BUG-250
Весь парсинг маркетплейсов был молча сломан: 8 диспетчеров слали устаревшую схему
критичная
BUG-249
`AdminModel::getWhereClause()` не добавлял `tenant_id` по умолчанию
высокая
BUG-248
`Request::ip()` слепо доверял заголовку `X-Forwarded-For`
высокая
BUG-247
Фильтры «непроверенные бренды/продавцы» давали HTTP 500 с момента миграции
высокая
BUG-246
Плановая переоценка ADV-цен работала по товарам всех тенантов сразу
критичная
BUG-245
Сбой парсинга обнулял живую витринную цену товара
критичная
BUG-244
`BrandingController::upload()` — единственный мутирующий экшен без CSRF
высокая
BUG-243
IDOR: анонимная оплата чужого marketplace-заказа по подобранному `order_id`
критичная
BUG-242
`OfferMatch::getById()` не фильтровал по `workspace_id`
высокая
BUG-241
`Auth::updateUserPassword()`: недостижимая ветка `password_new`
низкая
BUG-240
`Veeper::created()` недостижим и всё равно упал бы
низкая
BUG-239
`system.api_access_key` захардкожен в ~15 файлах, включая живую ссылку на чужой домен
высокая
BUG-238
Ротация четырёх скомпрометированных секретов не выполнена
высокая
BUG-237
`apple-touch-icon.png` отдаёт 404 у двух тенантов
низкая
BUG-236
Ozon-интеграция нерабочая: `Client-Id`/`Warehouse-Id` негде хранить
высокая
BUG-235
Legacy-путь `MarketSnapshot` ссылается на несуществующие колонки `p.year`/`p.parts`
низкая
BUG-234
Системный: `sku_code` объявлен `int`, хотя реальные значения буквенно-цифровые
критичная
BUG-233
Энумерация email при регистрации
низкая
BUG-232
`/cabinet` у `vegway-brovin-su` отдаёт 302 на `/error`, причина не найдена
низкая
BUG-231
`TenantResolver` отравлял APCu-кэш чужого домена
критичная
BUG-230
Race condition в чекауте давал двойной заказ
критичная
BUG-229
Проверка уникальности артикула шла до slug-нормализации
высокая
BUG-228
Reflected XSS в пагинации и notification-эндпоинте (плюс отсутствие CSRF)
высокая
BUG-227
Жизненный цикл заказа без проверки статуса: двойное списание и задвоение остатка
критичная
BUG-226
Хранимый XSS через имена продавцов из парсинга маркетплейсов
высокая
BUG-225
Обход роли Veeper на мутирующих экшенах
высокая
BUG-224
Инвестор мог увидеть склад чужого инвестора
критичная
BUG-223
`User` и `SidebarMenu` не фильтровали `getById()` по `tenant_id`
критичная
BUG-222
SQL injection через `s_snapshot_flag`
критичная
BUG-221
YooKassa webhook брал `order_id` и сумму из недоверенного тела
критичная
BUG-220
Path traversal через `image_name` в `ImagesService::deleteImage()`
критичная
BUG-219
Path traversal через `sku_code` в `ImageFetcher::catch()`
критичная
BUG-218
Собственная регрессия фикса: 9 callback-классов парсинга не реализовывали `ApiCallable`
критичная
BUG-217
`ResponseDecoder` доверял пути файла из тела запроса
критичная
BUG-216
Колбэк парсинга допускал вызов произвольного класса (нет allowlist)
критичная
BUG-215
Сравнение access key не было тайминг-безопасным
средняя
BUG-214
`system.api_access_key` отдавался анонимно без всякой авторизации
критичная
BUG-213
Захват тенанта через `role_id` при самостоятельной регистрации
критичная
BUG-212
`Auth::getUserId()`: TypeError при каждом сохранении профиля клиентом
критичная
BUG-211
Фильтр по недоступной характеристике тихо обнулял список товаров
высокая
BUG-210
`ShopProduct::getById()` мог вернуть `null` в типизированный вызов
средняя
BUG-209
`OrderInfo::getInfo()`: `Number::pretty()` без каста на боевой странице чекаута
высокая
BUG-208
Боевой автопереоценщик цен падал TypeError из-за `max()` над строками
критичная
BUG-207
Еженедельный отчёт WB упал бы на проде из-за формата ячейки даты
высокая
BUG-206
`BlacklistWords::handleCreated()` без проверки `is_array()`
средняя
BUG-205
`OrderItem`/`OrderLog`: `null` под объявленным `: array`
средняя
BUG-204
Возврат заказа падал бы TypeError в уже задеплоенном `Storage.php`
критичная
BUG-203
Налог ФНС не учитывался ни в одном расчёте доходности заказа
высокая
BUG-202
Собственный магазин тенанта ошибочно попадал под авто-цену
высокая
BUG-201
`ReportFinanceDetailed::getBalance()`: нулевое сальдо никогда не подсвечивалось
низкая
BUG-200
`ProductPrice::setProfitByProductId()`: TypeError в цепочке расчёта цен
высокая
BUG-199
`checkFeedStatusByMarketplaceId()`: объявлен `: int`, возвращал `bool`
высокая
BUG-198
Синхронизация остатков на WB и Yandex FBS тихо никогда не происходила
высокая
BUG-197
`PaginationService::getTotalPages()` возвращал `float`
средняя
BUG-196
`round()`/`ceil()` возвращают `float` в методах, объявленных `: int`
высокая
BUG-195
Системный: `R::getInsertID()` без каста (часть — уже на проде)
критичная
BUG-194
Системный: `R::getCell()` в типизированных `int`/`string`-методах без каста
высокая
BUG-193
Рассинхрон двух источников прав: меню обещало разделы, которых `ALLOW` не пускал
средняя
BUG-192
Модалка уведомления не работала при вызове из page-бандла
высокая
BUG-191
В БД не было колонки `orders.can_cancel`, которую читает и пишет код
критичная
BUG-190
Раздел «Заказы» в админке Kepeida рендерился как сырой дамп полей
высокая
BUG-189
Транзакционные письма не отправлялись ни на одном тенанте
критичная
BUG-188
Попап истории статусов заказа был недоступен с тач-устройств
средняя
BUG-187
Чекаут игнорировал реально отправленные способ оплаты и адрес
критичная
BUG-186
`responseArray()`/`responseEcho()` игнорировали HTTP-статус
низкая
BUG-185
`validateConfigKeys()` сравнивал конфиг сам с собой
средняя
BUG-184
Redis-соединение могло быть признано рабочим без единого PONG
высокая
BUG-183
Редактирование расхода сбрасывало время суток на 00:00:00
средняя
BUG-182
`getXlsxForMegamarket()`: дублирующая запись в ту же ячейку
низкая
BUG-181
Захардкоженные месяц/год/ID заказа вместо параметров в WB-сервисе
высокая
BUG-180
`Response::clearCookie()` не удалял cookie, а делал её сессионной
средняя
BUG-179
Поле «Бонус за покупку» на форме цен ничего не сохраняло
средняя
BUG-178
Не было проверки уникальности комбинации в настройках автоцены
средняя
BUG-177
`setSplit()` мог удалить заказ, не создав ни одного под-заказа
критичная
BUG-176
Дубликаты в чёрных списках создавались молча, без ошибки пользователю
средняя
BUG-175
Кнопки «Добавить»/«Редактировать» в двух разделах вели в никуда
средняя
BUG-174
`AntiFraudSystem` мог упасть TypeError на ботах и curl без заголовков
высокая
BUG-173
Неверный регистр неймспейса в двух методах WB-сервиса
средняя
BUG-172
XLSX-отчёт инвестора терял все позиции заказа кроме последней
высокая
BUG-171
`Http::isCurrentRequestApi()`/`isApi()` всегда возвращали false
средняя
BUG-170
Загрузка изображений в админке была no-op: неверная структура `$_FILES`
критичная
BUG-169
Три бага личного кабинета Kepeida после редизайна
средняя
BUG-168
Подтверждение ЛЮБОГО заказа могло рушиться из-за нерабочего Ozon-синка
критичная
BUG-167
Кнопка «Обновить данные» вызывала удалённый метод модели
высокая
BUG-166
Кнопка «Выгрузить в Ozon» гарантированно давала Fatal error
высокая
BUG-165
`CatalogController::category()`: canonical-редирект падал исключением вместо 301
средняя
BUG-164
Кастомный layout Kepeida не подключал ни loader, ни toast, ни модалку
высокая
BUG-163
Карточка заказа падала, если служба доставки не найдена
высокая
BUG-162
Фильтр маркетинговой группы в слайдере не применялся никогда
высокая
BUG-161
`SliderService` мог показать товары чужого тенанта
критичная
BUG-160
Четыре захардкоженных боевых секрета в исходном коде (в git-истории)
критичная
BUG-159
Дефолт `tenant.og_image` в схеме вёл на несуществующий файл
низкая
BUG-158
`tenant_uid` Kepeida разъехался между локалью и продом; nginx хардкодил старый uid
высокая
BUG-157
`offer_match` на проде: устаревший уникальный индекс и тип `bigint`
высокая
BUG-156
На проде не было колонок сброса пароля и оплаты: сброс пароля = HTTP 500
критичная
BUG-155
`deploy` не ставил npm-зависимости: первый деплой с новым JS-пакетом упал
высокая
BUG-154
Бренд «Kitcube»/«Киткуб» разъехался между страницей и `<title>`/OG
низкая
BUG-153
Фавиконка Kitcube слетела от собственного `tenant-build-assets`
средняя
BUG-152
Hover кнопок-ссылок перекрашивался Bootstrap в синий
низкая
BUG-151
Витрина: не было тёмной темы, из-за чего сайт «выглядел дешевле мокапа»
средняя
BUG-150
Скролл к якорям на лендинге Kitcube не работал (правило Bootstrap побеждало)
средняя
BUG-149
Пустой `<title>` на всех 5 страницах кабинета Kitcube
средняя
BUG-148
Сайдбар кабинета растягивался вместе с длинным списком
средняя
BUG-147
`/sku-matching` был пуст, хотя связок 13 942
высокая
BUG-146
Пост-логин редирект уводил випера Kitcube в `/admin` вместо кабинета
высокая
BUG-145
Раздел «Рынок» показывал 0 строк для workspace `tooling`
высокая
BUG-144
SASS layout Kitcube назывался `sass.sass` и не собирался вовсе
высокая
BUG-143
`getCountEntries()` вызывался с двумя разными инстансами модели
средняя
BUG-142
Форма удаления сопоставления SKU передавала только `id`
средняя
BUG-141
`VeeperLog::insertNewEntry()` не заполнял `admin_comment` (NOT NULL)
критичная
BUG-140
`$bindings` — необъявленное свойство в 10 классах: deprecation утекал в HTML
высокая
BUG-139
Чёрные/белые списки: создание и удаление записей были неработоспособны
критичная
BUG-138
`Auth::save()`: `password` без проверки `is_array()`
низкая
BUG-137
`comment_admin` вместо `admin_comment`: сопоставление SKU было неработоспособно
критичная
BUG-136
`OfferMatch` фильтровал по `tenant_id`, который не разделял workspace
критичная
BUG-135
`maxlength="150"` на формах при схеме 255
низкая
BUG-134
`name`/`surname` выводились без экранирования в трёх шаблонах
средняя
BUG-133
Код ошибки `too_many_login_attempts` показывался пользователю как есть
низкая
BUG-132
Не было минимальной длины нового пароля
средняя
BUG-131
Не было rate-limit на `/recovery`
средняя
BUG-130
Регресс layout `auth`: toast с ошибкой не показывался вообще
высокая
BUG-129
Регресс layout `auth`: поля не подсвечивались красным при ошибке
высокая
BUG-128
Кнопка «Назад» на формах авторизации была `href="#"` без обработчика
средняя
BUG-127
Слоган Kitcube резолвился в «Современный интернет-магазин»
низкая
BUG-126
Самостоятельная регистрация на Kitcube была полностью недоступна
критичная
BUG-125
У Kepeida не было ссылки на вход в личный кабинет
высокая
BUG-124
У Kepeida адрес компании резолвился в демо-заглушку «Москва»
средняя
BUG-123
`setting('company.location')` — ключа схемы не существует
низкая
BUG-122
`/privacy` и `/offer` падали «View not found» у 4 тенантов из 5
высокая
BUG-121
`Basket::addNewProduct()` не проверяла, что цена товара найдена
высокая
BUG-120
`R::begin()/commit()/rollback()` были тихим no-op во всём проекте
критичная
BUG-119
Подсказки адреса на чекауте не появляются (Ahunter-виджет)
средняя
BUG-118
LEGO-блок в корзине чекаута: пропущенный файл при фиксе BUG-025
средняя
BUG-117
Мёртвая кнопка «Новый способ оплаты»
низкая
BUG-116
Истёкший черновик заказа в Redis ронял `/order/update` фатальной ошибкой
высокая
BUG-115
`Auth::$password` как динамическое свойство: PHP-Deprecated утекал в тело JSON
высокая
BUG-114
`handleAction()` отдавал `{"ok":true}` при реальной ошибке создания заказа
критичная
BUG-113
Серверная проверка обязательности адреса не работала (валидация на не той модели)
высокая
BUG-112
Адрес доставки никогда не попадал в реальный заказ
критичная
BUG-111
У Kepeida не были настроены `telegram.chat_id`/`mail.noreply.password`
высокая
BUG-110
Общий шаблон главной guest был мёртвым черновиком с несуществующими вызовами
средняя
BUG-109
Сборка JS layout `shop` падала: импорт из несуществующей `areas/app/cabinet`
высокая
BUG-108
`app/Views/fallback/` не переименовали: последний уровень fallback был недостижим
средняя
BUG-107
Layout `guest`/`client` подключали ассеты под старыми именами area
высокая
BUG-106
Механические дубли чёрных списков между `tenant_id=1` и `tenant_id=2`
средняя
BUG-105
`WorkspaceContext` резолвился в `0` для tornerix: новые цены копились бы в никуда
критичная
BUG-104
`ProductPriceManagement::setPrices()` читал `snapshot_data` без изоляции
высокая
BUG-103
Осиротевшие строки в `snapshot_data` от старого эксперимента
низкая
BUG-102
`UNIQUE KEY` четырёх таблиц `blacklist_*` не включал `tenant_id`
высокая
BUG-101
Локальный `innodb_buffer_pool_size` не тянет массовые операции
низкая
BUG-100
Мёртвые артефакты тенанта kitcube
низкая
BUG-099
~30 мёртвых методов в хелперах `Support/Functions`
низкая
BUG-098
`currency_rates`: колонка `tenant_id` есть, а в `UNIQUE KEY` её нет
низкая
BUG-097
Двойное экранирование кавычек в прод-данных `market_offers`
средняя
BUG-096
`excel.php` на brovin.su: загрузка/удаление файлов без авторизации на публичном домене
высокая
BUG-095
Нет nginx-запрета на выполнение `.php` под `public/uploads/`
средняя
BUG-094
API-ключи маркетплейсов хранятся в БД открытым текстом
высокая
BUG-093
Платежи «Уклиманы» создаются, но, возможно, никогда не подтверждаются
критичная
BUG-092
`offer_match.sku_code` был `bigint` вместо `varchar(64)`
высокая
BUG-091
Callback всех маркетплейс-краулеров указывал на чужой сайт legmir.ru
критичная
BUG-090
`/admin/parser` не работал вообще: class-mismatch + отсутствие `ApiCallable`
высокая
BUG-089
JS восьми разделов админки вообще не подключался на странице
критичная
BUG-088
Второй раунд аудита безопасности — 8 находок
критичная
BUG-087
Полный аудит безопасности ядра — 15 находок
критичная
BUG-086
`SitemapGeneratorService` не знал о модуле `blog`
средняя
BUG-085
`public/images/icons/site.webmanifest` не существовал вовсе
низкая
BUG-084
Favicon беззвучно не показывался ни у одного тенанта
средняя
BUG-083
`Blog::buildExcerpt()`: regex не вырезал `<figure>` с атрибутом `style`
низкая
BUG-082
`<title>` «Лигашоп» на всех страницах блога vegway
средняя
BUG-081
Битые пути картинок внутри текста постов после миграции
средняя
BUG-080
Двойное HTML-экранирование `title`/`description` в перенесённом блоге
средняя
BUG-079
`/error` не был подключён ни у одного тенанта → dev-дамп с `SSO_SECRET` и куками
критичная
BUG-078
Layout `empty` тихо терял инлайновые стили и скрипты
средняя
BUG-077
Порядок `areas` в конфиге: catch-all `guest` перехватывал `/admin`
высокая
BUG-076
Листинг блога без фильтра показывал только категорию `id=1`
высокая
BUG-075
Прод отставал на 76 коммитов, включая незадеплоенные security-фиксы
критичная
BUG-074
`PaymentController::pay()`: строгое `!==` между `int` и строкой из `R::getRow()`
критичная
BUG-073
`get-pay-link.php` отдавал клиенту детали исключения (пути на сервере)
высокая
BUG-072
Обход CSRF в `public/yookassa/functions.php` через пустой токен
критичная
BUG-071
`admin/Order.js`/`Product.js` не собирались вообще с момента рефакторинга `errors.js`
высокая
BUG-070
Стухшие скомпилированные ассеты после переименования areas
высокая
BUG-069
`title`/`description` нигде не усекаются по длине
низкая
BUG-068
Комментарий «временно, до возврата функциональности» врёт о причине скрытия корзины
низкая
BUG-067
Общий fallback главной страницы — незаконченная заглушка
средняя
BUG-066
`products.amount`/`amount_active` денормализованы без механизма синхронизации
высокая
BUG-065
`<title>` карточки товара никогда не содержал название сайта
средняя
BUG-064
Пустой `<h1>` и лид-абзац на всех 22 категориях `tornerix-ru`
высокая
BUG-063
`loading="lazy"` в owl-carousel ломал главный баннер на любом тенанте
высокая
BUG-062
og:image был битым URL без протокола у всех тенантов
средняя
BUG-061
`robots.txt` был статикой лишь у 3 из 6 тенантов, без ссылки на sitemap
средняя
BUG-060
`MarketplacePackagePrice::insertPricesForAllMarketplaces()`: INSERT без `tenant_id`
высокая
BUG-059
У 5 моделей неизолирован был не только список, но и весь CRUD
критичная
BUG-058
Ложные докблоки «общая таблица без tenant_id» в 5 моделях
низкая
BUG-057
`Brand` и ещё 32 модели админки показывали данные чужих тенантов
критичная
BUG-056
`SsoController::consume()` создавал модель через `new` — падение по непроброшенной сессии
средняя
BUG-055
`MySQLConnectionManager::useConnection()` падал TypeError вне HTTP-контекста
высокая
BUG-054
palette-PNG молча ломали webp: 1995 ошибок на массовой загрузке фото
высокая
BUG-053
`ImagesService::uploadBinaryImage()` не существовал — колбэк парсинга картинок был нерабочим
высокая
BUG-052
Карточки товаров с буквенным артикулом не открывались вообще
критичная
BUG-051
Warnings с раскрытием путей сервера на странице оформления заказа
высокая
BUG-050
`ShopCatalog`: счётчик и список товаров категории считались разными условиями
высокая
BUG-049
Архитектурная развилка: `marketplaces.tenant_id` vs общий каталог
средняя
BUG-048
Кнопка «Восстановить» в `BannedOffersController` объявлена, но не реализована
низкая
BUG-047
`OfferSales.php`: таблица `m_offer_sales_daily` не существует нигде
низкая
BUG-046
`UserController::handleCreateValidation2()`: сломанный черновик валидации
низкая
BUG-045
`getAdminPageConfig2()`: мёртвые дубли реального хука
низкая
BUG-044
`SnapshotData`: незавершённый рефакторинг, контроллер не переключён
низкая
BUG-043
`ReportHashes::uploadWbReportWeekZip()`: пайплайн сохранения не дописан
средняя
BUG-042
Мёртвые дублирующие методы (версии `2`/`OLD`)
низкая
BUG-041
`AdminModel::getList()`/`getCountEntries()` не фильтруют по `tenant_id`
высокая
BUG-040
`ShopProduct::getByArticleAndCategory()` — небезопасный коррелированный подзапрос
низкая
BUG-039
Ложная находка: `ProductPriceManagement` вызывает несуществующий `MarketSnapshot::getById()`
—
BUG-038
Воркер очередей: RedBean-фасад и Redis не инициализировались
высокая
BUG-037
Логин под «ботоподобным» User-Agent падал с SQL-ошибкой
средняя
BUG-036
`Currency::fetchCurrencyRatesFromCbr()` запрашивал EUR по коду USD
высокая
BUG-035
Необъявленная константа `WWW` — генератор sitemap упал бы фатально
высокая
BUG-034
`sitemap.xml` пустой у всех тенантов: генератор не вызывается ниоткуда
высокая
BUG-033
Таблица `currency_rates` существовала только локально
высокая
BUG-032
og:image подставлялась без проверки существования файла
средняя
BUG-031
Заголовок формы «Новый продавец» вместо «Новый бренд»
низкая
BUG-030
Опечатка в слаге тенанта на проде (`kepeidapupm-ru`) — HTTP 500
критичная
BUG-029
Прод отставал от локали по общим файлам (корзина, 8 страниц)
высокая
BUG-028
Сортировка по несуществующему полю `priority` молча ничего не делала
средняя
BUG-027
21 раздел админки показывал заглушку вместо реального списка
высокая
BUG-026
Два раздела админки падали Fatal error на каждый заход
критичная
BUG-025
«Конструктор LEGO» в общем шаблоне карточки товара у всех shop-тенантов
высокая
BUG-024
Три экшена страниц были доступны только тенанту `uklimana-ru` по хардкоду слага
средняя
BUG-023
Захардкоженная курьерская доставка по Сочи в общем коде
высокая
BUG-022
`Paykeeper::emailStaffOrderPaid()` слал ссылки на чужой домен legmir.ru
высокая
BUG-021
Хардкод боевых секретов PayKeeper в исходном коде
критичная
BUG-020
Ложная находка: биндинги без ведущего двоеточия в `OfferMatch`
—
BUG-019
`Arbitrary::execute()`: вызов произвольного метода по имени из запроса
критичная
BUG-018
`Category::deleteProductsByCategory()` не каскадил на дочерние категории
средняя
BUG-017
`OfferMatch::addAdditionalFields()`: повторный резолв `product_id` по артикулу
средняя
BUG-016
`MarketSnapshot`: баг биндинга в фильтре «мой % прибыли WB»
средняя
BUG-015
`Auth::login()` не перепроверял `is_enabled = 1`
средняя
BUG-014
`OrderInfo::getInfo()` обращался к несуществующему `types.courier`
высокая
BUG-013
`ReportHashes`: `use R;` импортировал несуществующий глобальный `\R`
высокая
BUG-012
`Summary::getSumOfCanceledOrders()`: фильтр по `order_id` вместо `status_id`
средняя
BUG-011
`Marketplace::getTenantVisibleValue()` читала не ту колонку
средняя
BUG-010
Таблицы без колонки `tenant_id` (изоляция невозможна фильтром)
критичная
BUG-009
`Tags::getOrderedBySortOrder()`: `IN (...)` без параметризации
средняя
BUG-008
SQL injection: сортировка/список без allowlist
критичная
BUG-007
`$this->bindings` vs `$this->params`: фильтры молча не применяются
высокая
BUG-006
`ProductPrice::getPricesMapByProductIds()`: опечатка в имени колонки
низкая
BUG-005
`Statistics::clearStatisticsTable()` снесла бы статистику всех тенантов сразу
критичная
BUG-004
SQL обращается к несуществующим таблицам (`m_`-префикс)
критичная
BUG-003
Ложная находка: `ShopCatalog` якобы не фильтровал по tenant_id
—
BUG-002
Утечки данных между тенантами в моделях админки
критичная
BUG-001
IDOR + фрод: отмена чужого заказа и кража его бонусов
критичная
✕
источник: