Контроль изменений — пятница 28 августа
v2.4.0Ничто из перечисленного ниже пока не живое. Это релиз, который выходит в пятницу утром. Черновик написан в среду намеренно — каждое «до» на этой странице можно измерить, только пока живой магазин это ещё отдаёт, и оно исчезает в момент выкатки, — а в пятницу утром всё перемерено против живого магазина и готового кандидата, потому что после того черновика релиз вырос на пятьдесят девять изменений. Там, где измерение снять не удалось, строка говорит об этом красным, а не показывает число.
Одна вещь, которую стоит вынести с этой страницы, если больше ничего не читать. Этот релиз несёт целиком всю работу над тем, что Google разрешено читать, — и не включает из неё ничего. Управляют этим четыре переключателя; ни один из четырёх на живом магазине не выставлен, и пятничное слияние их не выставляет. То есть в субботу утром Google читает ровно то же, что и сегодня, — меняются только адреса части страниц и добавляются десять новых, об этом четвёртый раздел. Включение каждого — отдельное осознанное действие примерно на минуту, и откатывается оно примерно за минуту. Решение, которое нужно от этой страницы, — какие из них включать и когда, а не готов ли код.
Сто восемьдесят восемь изменений с релиза 21 августа: сто шестьдесят два на сайте магазина, восемнадцать в поиске, восемь в сервисах заказов и оплаты. Шестьсот пятьдесят два файла отличаются между тем, на чём магазин работает сегодня, и тем, что положила бы туда пятница. Почти всё это — две работы. Первая: решить, один раз и в одном месте, какие страницы запчастей приглашены к прочтению Google, и затем заставить все части сайта согласиться с этим решением. Вторая пришла в четверг: у каждой страницы старого сайта теперь есть дом на этом, и ради этого схемам запчастей пришлось сменить адрес. Остальное — переезд фотографий на наш собственный адрес и уборка после старой базы.
Одна поправка к странице прошлой недели, прежде чем числа пойдут дальше. Там было указано шестьдесят два изменения на сайте магазина за 21 августа. Правильная цифра — восемьдесят три. Подсчёт был сделан инструментом, который, как выяснилось, читал только часть истории и молча давал меньший ответ; с тех пор пересчитано другим способом. В том, что вышло 21 августа, ничего не изменилось — изменился только его счёт, и эта же поправка объясняет, почему число этой недели больше, чем можно было бы ожидать по прошлой.
Необычное в этом релизе — насколько мало из него вступает в силу в пятницу. Работа по индексации выкатывается выключенной. Это сделано намеренно, это обратимо, и этому посвящены первые два раздела. В силу вступает вторая работа: страницы, которых здесь раньше не было, и две смены адреса, каждая из которых доводит старый адрес до нового одним переходом.
Что пятница реально меняет на живом магазине — измерено в среду, это не прогноз
Для Google — то же, что ему разрешено читать, но две смены адреса и десять новых страниц. Работой по индексации управляют четыре настройки: отвечает ли «не найдено» страница, которую Google читать не приглашён; перечисляет ли файл инструкций для обхода запчасти поимённо; предлагаются ли страницы схем; и главный переключатель индексации. Считано с настроек живого магазина в среду: ни одной из четырёх там нет, и пятничное слияние их не выставляет. Поведение самого живого магазина с этим согласуется — страница запчасти, которую Google читать не приглашён, сегодня по-прежнему отвечает как обычная страница, а инструкции для обхода по-прежнему ничего не говорят про запчасти. То, что для Google в пятницу всё-таки меняется, лежит вне этих переключателей и вынесено в четвёртый раздел: адреса запчастей становятся строчными, схемы запчастей уезжают из /equipment — и то и другое доводит старый адрес до нового одним переходом, — и появляются десять страниц, которые существовали только на старом сайте.
Для покупателя — четыре вещи, и одна из них проблема. Фотографии переезжают на наш собственный адрес: этого никто не заметит, и в этом весь смысл. Страницы дилерского центра со старого сайта — сервис, коллектив, часы работы, вакансии, заявка на кредит — впервые появляются здесь. Итог в оформлении заказа теперь показывает окончательную сумму вместо подытога с припиской «плюс доставка», а бесплатная доставка названа бесплатной. И поиск по точному номеру запчасти перестаёт работать на тестовом сайте — см. первый пункт ниже. Ни одно из этих четырёх не спрятано за переключателем, поэтому, в отличие от работы по индексации, они вступят в силу в пятницу, хотим мы того или нет.
Старой базы уже нет, и это был не этот релиз. Она выключалась в понедельник, вторник и среду этой недели, вне поезда, и у неё своя страница — v2.3.1. В этом релизе от неё осталась уборка: удаление кода и комментариев, которые на неё ссылались. Снаружи ничего из этого не видно.
Что нужно решить на созвоне — найдено в среду, до выкатки
Поиск по точному номеру запчасти отвечает «Service Unavailable» на тестовом сайте, тогда как живой магазин возвращает запчасть нужно решитьэто видит покупательfront#3817, front#3818не в плане
Изменение было хорошее: вводишь номер запчасти в поиск и попадаешь на саму запчасть, а не на страницу результатов с одной карточкой. На тестовом сайте на запчасть оно не попадает. Оно отвечает Service Unavailable — страницей, которую покупатель видит, когда что-то сломано.
До — живой магазин сегодня/parts?q=CT-NHL-100016 отвечает 200 сеткой результатов, и запчасть есть среди карточек. q=CT-NHL-100038, q=100412 — то же самое. Поиск словом, q=bearing, — то же самое.
После — кандидат сегодня/parts?q=CT-NHL-100016 отвечает 503, и результатов на странице нет. Так же отвечают q=100016, q=CT-NHL-100038 и q=100412. q=bearing по-прежнему отвечает 200 — значит, поиск не лежит; ложатся именно запросы по номеру запчасти, то есть те, которыми покупатели реально пользуются.
Перемерено в пятницу утромБез изменений на готовом кандидате — именно на том дереве, которое несёт выкатка, а не на более раннем. Все четыре поиска по номеру по-прежнему отвечают 503; q=bearing по-прежнему 200; живой магазин по-прежнему отвечает 200 на все пять. Четверговая правка поиска (front#3904) — про другой путь: она починила нажатие Enter в поле поиска наверху страницы, которое теперь ведёт на запчасть, а не на постороннюю схему. Открытие адреса результатов напрямую по-прежнему сломано.
Почему такСайт понимает, что один результат совпал точно, и пытается отправить покупателя сразу на страницу этой запчасти. К моменту, когда он это решает, он уже начал отдавать страницу результатов, и переадресация, пришедшая слишком поздно, превращается в ошибку. Комментарии в самом коде описывают ровно такое поведение, наблюдавшееся на тестовом сайте, — то есть это известная форма, а не новая загадка.
Одного установить не удалось, и именно оно решает, насколько это серьёзно. Все ответы с обеих сторон приходили помеченными как отданные из кэша, и добавление уникального параметра не заставило отдать свежий, поэтому отличить «тестовый сайт выдаёт 503 сейчас» от «тестовый сайт выдал его раньше и повторяет до сих пор» это не позволяет. Первое — причина придержать релиз; второе — просто устаревшая страница. Кто-то должен до пятницы принудительно получить некэшированный ответ и сказать, что из двух. Числа, чтобы закрыть этот пробел, не выдумано.
Что сомнению не подлежитЗадачи, которая бы это вела, нет. front#3817 закрыт как сделанный на основании front#3818 — то есть того изменения, которое измерено выше. Каким бы ни был ответ, эта задача закрыта под работу, результат которой на реальном запросе не подтверждён.
Какие из четырёх переключателей включать и в каком порядке — код готов, ни один переключатель не выставлен нужно решитьэто видит Googlefront#3809, front#3833, front#3843, front#3854план 01
Вся программа по индексации стоит за четырьмя настройками, и релиз — это их включение, а не слияние. Каждая — одна настройка, применяется без пересборки, и откатывается тем же способом. Перечислены они в осмысленном порядке, потому что две из них без первой лишены смысла.
1. Страница, которую Google читать не приглашён, отвечает «не найдено» Сегодня страница запчасти, на которой ничего нет, всё равно грузится как настоящая и лишь просит Google её не листать. Google такую страницу читает, считает её пустой и ставит это в счёт всему остальному сайту. С включённым переключателем тот же адрес прямо отвечает «не найдено». Измерено: запчасть Ferris сегодня отвечает 200 полной страницей, а на тестовом сайте — 404; при этом приглашённая запчасть New Holland отвечает 200 с обеих сторон. То есть работает выборочно, и это то, что стоит проверить.
2. Инструкции для обхода перечисляют каждую приглашённую запчастьСегодня инструкции о запчастях не говорят вообще ничего: 13 строк, ни одной про /parts/. С включённым переключателем в них 4 783 строки — сплошное «запчасти не читать», а затем 2 384 приглашённые запчасти поимённо, в обеих формах адреса. Именно у этого переключателя последствия реальны, если он неверен, потому что он говорит Google перестать читать всё, чего нет в списке.
3. Страницы схем и то, что предлагает карта сайтаСегодня карта сайта предлагает 2 415 адресов. С включённым переключателем — 18 663. Это то самое число, которое план этой недели привёл как 18 657: план считал его с тестового сайта. Живой магазин сегодня предлагает 2 415.
4. Главный переключатель индексацииНа живом магазине тоже не выставлен. Ничего из нижестоящего нельзя включить раньше него.
Это решение, а не задача, и оно Джона: включение переключателя 2 — момент, когда мы говорим Google перестать читать примерно девяносто девять процентов страниц запчастей, которые он сейчас видит. Это и есть задуманный итог, и это по-прежнему самая крупная единичная инструкция, которую мы ему когда-либо давали. Включать её в тот же час, что и релиз, не стоит.
Страницы запчастей Kuhn остаются закрытыми от Google, и этот релиз это не меняет нужно решитьэто видит Googlefront#3666план 01
Страница бренда Kuhn отвечает сегодня и будет отвечать в субботу; то, что она говорит о себе, не меняется. Измерено: /parts/brand/kuhn отвечает 200 с обеих сторон и с обеих несёт «эту страницу не листать». На тестовом сайте меняется другое: она перестаёт передавать Google дальше, на отдельные запчасти Kuhn, которые перечисляет.
Причина закрытости не изменилась, и это не решение, принятое кем-то на этой неделе: данные Kuhn отвечают от двенадцати до шестидесяти девяти секунд, что замедляет чтение Google всего сайта. Это описано как front#3666, и у него нет владельца. План этой недели говорит то же самое теми же словами. Назначить владельца — решение в одну строку, и оно висит уже через два релиза.
Что прочитает Google, когда переключатели включат — измерено на тестовом сайте, где они включены
Страница запчасти, которую никто не приглашён читать: сегодня настоящая страница, на тестовом сайте — простое «не найдено»измереноэто видит Googlefront#3809, front#3810, front#3827, front#3828план 01
До — прод сегодня/parts/CT-FER-1650347SM: 200, страница на 277 856 байт, с noindex, follow и каноническим адресом, указывающим на саму себя, с полным описанием товара, которое Google читает у настоящего товара. Иначе говоря: страница, которая говорит «меня не листать», выглядя при этом ровно как страница, которую стоит листать.
После — кандидат сегодняТот же адрес: 404, 101 782 байта, noindex, nofollow, канонического адреса нет, описания товара нет вовсе. Не страница, притворяющаяся отсутствующей, — отсутствующая страница.
Контроль/parts/CT-NHL-100016 отвечает 200 с index, follow и полным описанием товара с обеих сторон. Это строка, доказывающая, что изменение выборочное, а не сплошное, и её стоит проверять первой, если после включения переключателя что-то выглядит не так.
Сотрудники по-прежнему могут открыть закрытую запчасть — по адресу, на который Google не отправляютизмереноfront#3834, front#3843, front#3854план 01
Если страница запчасти отвечает «не найдено», отделу запчастей всё равно нужно уметь на неё посмотреть. Для этого и есть /lookup/: та же запчасть по адресу, который существует для людей, а не для Google.
До — прод сегодня/lookup/CT-FER-1650347SM отвечает 404. Адреса не существует.
После — кандидат сегодняТот же адрес отвечает 200 с запчастью на нём, помечен noindex, nofollow и не несёт описания товара, которое Google мог бы прочитать.
То, что заняло четыре попыткиСделать это правильно означало пройти по узкой грани: двойник должен быть достаточно читаемым, чтобы Google увидел инструкцию «меня не листать», и при этом на него ничто на сайте не должно ссылаться. Закрыть его наглухо было бы хуже, чем оставить открытым: адрес, который Google запрещено запрашивать, — это адрес, где он никогда не сможет прочитать инструкцию его не листать. Эта ошибка была сделана и отменена внутри одного релиза, и поэтому несколько строк внизу этой страницы противоречат друг другу по порядку.
Инструкции для обхода, до и послеизмереноэто видит Googlefront#3806, front#3843, front#3860план 01
До — прод сегодня13 строк. Один Allow: /, десять строк Disallow, закрывающих админку, личный кабинет, оформление заказа, вход и адреса с ?highlight=, и одна строка карты сайта. Про запчасти — ничего.
После — кандидат сегодня4 783 строки. Те же десять строк Disallow, плюс Disallow: /parts/, плюс Allow: /parts/brand/, чтобы страницы брендов остались читаемыми, плюс 4 768 строк, перечисляющих 2 384 запчасти поимённо — каждую в полной форме и в форме голого номера, потому что страницы техники ссылаются на одну, а результаты поиска — на другую.
Проверка, которая делает это безопасным2 384 запчасти, названные в инструкциях для обхода, — те же самые 2 384, что и в карте сайта. Согласие этих двух списков и есть всё свойство безопасности: запчасть, предложенная Google в одном и запрещённая в другом, — это страница, которую он запросит и на которой споткнётся. Новая автоматическая проверка сравнивает их при каждом изменении и теперь входит в набор проверок, которые релиз обязан пройти.
Закрытая запчасть исчезает из товарного фида — только из его брендовой половиныизмереноfront#3835план 01
Фид, который мы отдаём в Google Shopping, содержал товары, чьи страницы после включения переключателя будут отвечать «не найдено». Товар в фиде, ведущий на отсутствующую страницу, — это ровно та форма, за которую фид приостанавливают, поэтому теперь фид такие строки выбрасывает.
Поправка внутри релизаПервая версия выбрасывала строки из всего фида, а не из брендового раздела. Это было замечено и исправлено внутри того же релиза — обе строки стоят внизу этой страницы по порядку, а не так, что вторая молча заменила первую.
Сегодня фид никто не читает. Merchant Center так и не создан — это стоит в плане этой недели как решение, ожидающее Джона, — поэтому это изменение защищает то, что ещё не включено. Сделать стоило, знать стоит.
Фотографии переезжают на наш собственный адрес — единственное, что в пятницу действительно меняется
Одна фотография — один адрес, каким бы хостом она изначально ни называласьизмереноэто видит покупательfront#3803, front#3804, front#3812, front#3814, front#3820, front#3831, front#3838план 01
Фотографии запчастей грузились с двух разных адресов в зависимости от того, откуда пришли. Один был наш, другой — отдельный хост. Из-за этого одна и та же фотография могла иметь два адреса, скачиваться дважды и считаться у Google двумя картинками.
До — прод сегодняНа /parts/CT-NHL-100016: 112 фотографий через наш собственный сервис изменения размера, 14 со второго хоста, 2 из нашей папки изображений и 6 превью видео с YouTube.
После — кандидат сегодняТа же страница: 112 через наш собственный сервис изменения размера, со второго хоста — ни одной, 5 переехали на наш собственный адрес, 2 из папки изображений, 5 превью YouTube. Второго хоста на странице больше нет.
Ещё в этой группеСайт теперь отдаёт один формат изображения вместо двух, что вдвое сокращает то, что нужно готовить и хранить для каждой фотографии. Логотипы брендов, заменённые вручную, всё ещё отдавались со старого адреса — они тоже переехали. И размеры картинок в галерее теперь объявлены заранее, так что браузеру не приходится гадать.
Это единственная группа на странице без переключателя перед ней, если не считать проблемы с поиском выше. Она вступает в силу в пятницу.
Новые страницы и две смены адреса — та часть релиза, которая не за переключателем, измерено в пятницу утром
Двенадцать адресов, которые существовали только на старом сайте, теперь работают на нашем измереноэто видят покупатель и Googlefront#3871, front#3872план 03
Конечная цель, к которой все идут, — crop.clintontractor.net заменяет старый сайт www. Прежде чем это произойдёт, у каждой страницы старого сайта должен быть дом здесь, решённая переадресация или решённый отказ. Схема структуры сайта от Андрея — это и есть список таких страниц. Перед вами первый её блок и единственный, которому не нужно было ничего ни от кого вне команды.
До — продакшен сегодняСервис, сервисный отдел, запись на сервис, заявка на кредит, оценка техники в зачёт, запись на демонстрацию, вакансии, почтовый клуб, шоурум, часы работы и адрес, коллектив, отзывы: все двенадцать отвечают «не найдено» на нашем сайте и все двенадцать нормально отвечают на старом. Любой, кто шёл по ссылке, закладке или результату Google, попадал в пустоту.
После — кандидат сегодняДесять из двенадцати — настоящие страницы, они отвечают нормально, и Google приглашён их читать. Две оставшиеся одним переходом ведут туда, где это уже есть: сервисный отдел — на сервис, шоурум — на страницу брендов. Карта сайта для Google вырастает с 31 адреса до 41 — эти десять новых страниц и есть вся разница.
Стоит сказать прямоЭто наши собственные тексты на наших страницах, а не копия старого сайта. Ничто в них не зависит от переключателя, поэтому они живые с утра пятницы.
У машин и навесного оборудования появляются свои страницы — и Google их пока не показывают измереноэто видит покупательfront#3871, front#3901план 03
/equipment и /attachments теперь показывают машины и навесное оборудование, которые у нас в продаже, в той же вёрстке, что и каталог запчастей: те же карточки, те же фильтры, тот же поиск. Данные за ними — это по-прежнему снимок со старого сайта, а не живой поток, и именно поэтому страницы несут пометку «не индексировать» и не попадают в карту для Google.
До — продакшен сегодня/attachments: не найдено. /equipment: хаб схем запчастей, то есть совсем другое.
После — кандидат сегодняОбе отвечают нормально и несут noindex. Покупатель, которому дали адрес, страницы видит; Google к ним не приглашают, пока данные за ними не станут живыми вместо снимка.
Что нужно от созвонаВ пятницу — ничего. Решение позже: когда объявления начнут приходить из живого источника, и только тогда их предлагают Google.
Все адреса схем запчастей уезжают из /equipment, одним переходом
измереноэто видит Googlefront#3871, front#3900, front#3902план 03
Витрине выше нужно слово equipment в адресе, а его занимали схемы запчастей. Поэтому всё дерево схем — хаб, индекс моделей и страницы моделей и узлов под ними, около полумиллиона адресов по подсчёту в самом плане переезда — теперь живёт под /parts-diagrams. Каждый старый адрес доходит до нового за один переход, сохраняя всё, что за этим адресом шло.
До — продакшен сегодня/equipment/new-holland-speedrower-130-windrower-tier-3-non-flex-can отвечает 200 и несёт noindex, follow. Живая карта сайта не перечисляет ни одного адреса модели — только две индексные страницы над ними.
После — кандидат сегодняТот же адрес отвечает 308, один переход, на /parts-diagrams/model/ с тем же именем, строка запроса сохраняется. Две индексные страницы переезжают вместе с ним и остаются в карте под новым именем.
Что на самом деле меняется для GoogleАдреса, и больше ничего. Настройка, которая держит это дерево закрытым от Google, на живом магазине сегодня выставлена — именно поэтому живая карта не содержит адресов моделей, а каждая страница модели говорит «не индексировать». Пятница их переносит, а не открывает. На тестовом сайте эта настройка открыта, поэтому там в карте 16 250 адресов схем, а на живом — ни одного. Эта разница — переключатель, а не релиз.
Адреса запчастей с пятницы в нижнем регистре измереноэто видит Googlefront#3886, front#3894план 01
До страницы запчасти можно было дойти по двум адресам, отличающимся только регистром, и сайт считал настоящим адресом вариант с заглавными. С пятницы настоящий — вариант в нижнем регистре, а вариант с заглавными ведёт к нему одним переходом.
До — продакшен сегодня/parts/CT-NHL-100016: 200, и страница называет настоящим адресом сама себя. /parts/ct-nhl-100016: один переход вверх, к заглавным. В карте для Google 2 389 адресов запчастей, и все 2 389 — с заглавными.
После — кандидат сегодняРовно наоборот, при тех же 2 389 адресах и ни одного с заглавными. Один переход, никогда не два.
Почему это важно и почему безопасноДва адреса у одной страницы — самый старый способ разделить её вес в Google между двумя записями. Здесь это закрыто единственным способом, при котором все существующие ссылки продолжают работать: старая форма по-прежнему разрешается, за один переход, навсегда.
Три старые переадресации убраны — после шестнадцати месяцев, за которые ими никто не воспользовался измереноfront#3873, front#3902план 03
/catalog, /tires и /favorites переадресовывали внутрь магазина. Собственные данные Google по нашему сайту показывают ноль показов и ноль кликов по каждому из них за всё шестнадцатимесячное окно — при том что контрольные адреса в том же замере вернули сотни. С пятницы они отвечают «не найдено».
Если окажется, что это неверноВернуть любой из них — правка в три строки и выкатка. Замер говорит, что этим путём никто не приходит; если после пятницы в журнале ошибок сайта появится один из них, он вернётся.
Каталог и страницы брендов — мелочи, и одной из них 27 дней
Вкладка «Схемы» на странице бренда открывается на каждой категории, а не только на первойизмереноэто видит покупательfront#3224, front#3225план 03, 05
На странице бренда вкладка «Схемы» работала, когда выбрана первая категория, и ничего не делала на остальных. Теперь она открывается на всех.
Измерено/parts/brand/new-holland/diagrams отвечает 200 с обеих сторон. Страница весит 5,35 МБ на живом магазине сегодня и 4,17 МБ на кандидате — на 1,18 МБ меньше скачивать при том же содержимом.
Стоит сказать прямоЭто изменение пролежало черновиком 27 дней. Оно стоит в плане этой недели в разделе «забытые запросы» и оно единственное из того списка, что реально сдвинулось. Правка мелкая; дело в 27 днях, а не в правке.
Поиск знает, какие бренды открыты для Google, и перестаёт предлагать те, что не открытыизмереноsearch#933, search#934, search#938, search#942план 01, 10
До сих пор решение о том, какие бренды Google может читать, жило только в витрине, а поиск о нём не знал — поэтому результаты поиска, списки популярных запчастей и списки запчастей на схемах могли предлагать запчасть, которую витрина закрывает. Теперь поиск читает то же решение из того же места, и они согласуются.
Это вторая половина изменения из двух частей, и половины выкатываются разными путями: витрина — в пятницу утром, поиск — отдельной подменой. Если выйдет только одна половина, они снова разойдутся — а это ровно то состояние, ради прекращения которого изменение и существует. Обе половины должны выйти вместе, и поиск идёт первым.
Уборка после старой базы — снаружи ничего не видно
Код, который разговаривал со старой базой, удалён вместе с комментариями, которые её описывалиизмереноps#702, ps#704, ps#707, ps#709, front#3844, front#3857, front#3858, search#940план 06
Старая база была выключена в среду утром (v2.3.1). Этот релиз убирает то, что на неё ещё указывало: сам драйвер, 31 тестовую настройку, которые больше ничего не настраивают, ночную задачу резервного копирования, нацеленную на кластер, которого больше нет, и россыпь комментариев, которые всё ещё описывали старое устройство тому, кто прочитает код следующим. Снаружи кода ничего из этого не видно.
Почему это вообще на этой страницеКомментарий, описывающий систему, которой больше нет, — это то, как следующий человек уверенно принимает неверное решение. На этой неделе это не гипотеза: сам план выключения старой базы сверялся с описанием, которое успело устареть, и это и есть тот «чуть не» на странице v2.3.1.
Страница, которая не собралась, больше не хранится и не отдаётся кэшем повторноизмерено частичноfront#3830план 12
Когда страница каталога не может быть собрана, потому что что-то выше по цепочке отказывает, сайт теперь отвечает честным «попробуйте ещё раз», явно помеченным как не подлежащее хранению, — вместо страницы, которая выглядит нормально и пуста. Пустая страница, которая выглядит нормально, — худший из трёх исходов, потому что Google её сохраняет.
Измерено лишь частично. Наличие пометки на кандидате подтверждено: отказные ответы несут no-store и для браузера, и для сетевого кэша. Подтвердить не удалось то, что она работает: ответы всё равно приходили помеченными как отданные из кэша. Это то же самое неразрешённое наблюдение, что и в пункте про поиск в начале страницы, и, скорее всего, разбор одного закроет оба.
Имя ушедшего коллеги убрано из тринадцати мест в четырёх репозиторияхизмереноfront × 9, search#941, ps#696, ps#708не в плане
Строки владения, названия тестов, комментарии в коде и реальный рабочий адрес почты, использованный как тестовые данные, — всё ещё называющие человека, ушедшего 20 августа. Убрано, а там, где строка указывала владельца, заменено честным ответом — который в двух случаях состоит в том, что у направления владельца нет.
Стоит запомнитьЭто вышло не из процесса увольнения, а из чтения кода по другому поводу. Учётные записи были закрыты как положено. Тринадцать упоминаний их пережили, и два из них были единственной записью о том, кто владел куском работы.
Против плана этой недели — двенадцать пунктов и что неделя на них ответила
Неделя 24–28 августа была спланирована как двенадцать пунктов в четырёх лентах. Ниже каждый из них против того, что вышло, а каждое изменение выше по странице помечено пунктом, на который оно отвечает. Два из двенадцати сдвинулись далеко, четыре сдвинулись немного, шесть не сдвинулись вовсе — и из этих шести пять ждут ответа от человека, а не работы. Это честная форма недели, и правую колонку стоит прочитать первой.
| Пункт плана | Что неделя ответила | Чего не ответила |
|---|---|---|
| Vova — моя очередь | ||
| 01 — SEO Vova + Андрей |
Почти всё. Решить один раз, какие страницы запчастей приглашены к прочтению Google, и затем заставить страницы запчастей, сетку просмотра, страницы брендов, инструкции для обхода, карты сайта, товарный фид и список сохранённых запчастей согласиться с этим одним решением. Заодно фотографии переехали на наш собственный адрес. С одной оговоркой, которая управляет всем пунктом: оно выкатывается выключенным. Пятница ставит механизм на место и не меняет ничего из того, что видит Google, пока потом не включат переключатель. |
359 запчастей четырёх брендов по-прежнему ждут вашего ответа — это самый дешёвый ход на странице, и он не двигается уже две недели. Сорок девять ссылок с карточки товара по-прежнему ведут в закрытую зону. Адрес shop. по-прежнему не решён, и примерно 245 сайтов, ссылающихся на него, по-прежнему ссылаются в пустоту. Kuhn по-прежнему отвечает медленно и по-прежнему без владельца. AI-описания — за Алексом и не начаты. |
| 02 — Тесты Vova |
Отложенные тесты разобраны: из тридцати двух двадцать семь починены, переписаны или удалены, а у пяти оставшихся в карантине у каждого записана причина. Три из этих пяти стоят в карантине потому, что нашли реальную неисправность в продукте, и оставлены красными намеренно, а не тихо подогнаны под зелёный. Проверка того, что адреса запчастей остаются стабильными, теперь блокирует плохое изменение, а не просто о нём сообщает. Нескольким тестам, которые проходили, ничего не проверяя, добавили зубы, а путь оформления заказа и две проверки владения теперь покрыты от начала до конца. | Три структурных пункта не тронуты: проверки клиентского пути по-прежнему не обязательны перед приземлением изменения, красную проверку на живой ветке по-прежнему можно обойти, и с 13 августа оплату ночью ничто не проверяет. Именно эти три и придали бы зелёному результату смысл, и ни один из них не работа — каждый это настройка. |
| 03 — Переезд структуры сайта на crop Vova |
Самая крупная отдельная работа в этом релизе, и она приехала в четверг. Двенадцать адресов, которые существовали только на старом сайте, теперь работают здесь, десять из них — как отдельные страницы. Схемы запчастей уехали из /equipment, чтобы это слово досталось технике, и там теперь живёт витрина машин и навесного оборудования. Плюс вкладка «Схемы» открывается на каждой категории страницы бренда, а не на некоторых. Всё это — в четвёртом разделе страницы. |
Семейства страниц, которые зависят от Андрея: посадочные страницы запчастей и его ветка схем. Схема структуры пришла 21 августа и с тех пор не обсуждалась. А витрина по-прежнему работает на снимке старого сайта, а не на живом источнике, — поэтому Google её пока и не показывают. |
| Vova и Джон вместе | ||
| 04 — API Iron Connect / DIS Vova + Джон |
Ничего. | Всё. Этот пункт на этой неделе не сдвинулся вовсе, и ничто в этом релизе его не касается. |
| 05 — Забытые запросы Vova + Джон |
Вышел самый старый: вкладка «Схемы», о которой попросили за двадцать семь дней до того, как её сделали. | Остальной список по-прежнему открыт и по-прежнему не разобран. |
| Vova и Алекс вместе | ||
| 06 — Выключить Mongo Vova + Алекс |
Сделано, и сделано в проде, а не на тестовой копии. Совместимость с техникой переехала 24 августа, заказы и каталог — 25 августа, оплата — 26 августа, и старая база была удалена в тот же день. Восемь изменений в этом релизе — то, что осталось после: удаление драйвера, задачи резервного копирования, нацеленной на несуществующий кластер, и настроек и документов, которые её всё ещё описывали. | Ничего. Это единственный пункт плана, который закрылся. |
| 07 — Два макета Джона Vova + Алекс |
Оба записаны на странице идей — с тем, что за ними уже стоит, и с тем, что каждому потребуется. Ничего не построено. | Оба. На гибридной схеме архитектуры к тому же есть строка, которая является решением, а не рисунком, и там она записана как открытый вопрос, а не как согласованное. |
| 08 — Инфраструктура на OptiPlex Vova + Алекс |
Ночной мобильный тест уведён из окна, в котором офисная машина выгружает данные и которому он проигрывал каждую ночь. | Страница расходов, которую вы просили, и рисунок «как сейчас против как должно быть». |
| Лента Алекса | ||
| 10 — Лента Алекса Алекс |
Четыре из четырнадцати изменений поиска в этом релизе — его ленты: поиск теперь сообщает, открыт ли бренд для Google, умеет возвращать только открытые строки и больше не портит общее соединение, когда запрос упирается в свой предел размера. Также вошёл полный ночной обход поставщиков. | Airflow и два его открытых пункта не начаты. |
| Где следующий ход не за нами | ||
| 09 — AGCO, первый срез вряд ли на этой неделе |
Ничего — ровно то, что план для него и предсказал. | — |
| 11 — Мой гараж Джон |
Тест, который его блокировал, починен, так что с нашей стороны сама работа больше не заблокирована. | Нужные ему хуки клиентских аккаунтов по-прежнему открыты. |
| 12 — Лента Андрея Андрей |
Фреймворк сайта переехал с превью-сборки на выпущенную версию, и цена этого — кэширование «не найдено» — записана, а не обнаружена потом. | Ответы Андрея по семействам страниц, которых ждёт и пункт 03. |
| Не в плане, но реальная часть недели | ||
| Хвост увольнения без ленты |
Коллега ушёл 20 августа, и учётные записи были закрыты как положено. Тринадцать упоминаний о нём пережили это в четырёх репозиториях — строки владения, названия тестов, комментарии в коде и реальный рабочий адрес почты, использованный как образцовые данные. Все тринадцать в этом релизе убраны. | Два из этих тринадцати были единственной письменной записью о том, кто владел куском работы. Оба теперь честно записаны как не имеющие владельца — это правда и это не решение. |
Всё в этом релизе — 188 изменений, и у каждого есть краткое описание в одну строку, записанное прямо в самом изменении
Сайт магазина162 изменения 79 из них заметны покупателю или Google
| Изменение | Что это | Что сдвинулось | Сделал |
|---|---|---|---|
| front#3871 | Возврат назад к уже выполненному поиску оставлял поле поиска по технике пустым, хотя страница показывала результаты. | поле поиска следует за внешним изменением запроса | Vova |
| front#3871 | Витрина техники теперь показывает, какие фильтры сужают список, и лишний уровень категорий убран. | добавлен показ активных фильтров, нижний уровень категорий убран | Vova |
| front#3943 | Три автоматические проверки узнавали страницу схемы по куску адреса и сломались после переезда схем. | поиск по test id, а не по фрагменту адреса | Vova |
| front#3944 | Тест корзины падал на телефонном экране, потому что ждал счётчик, который отрисован за пределами экрана. | toBeAttached вместо toBeVisible | Vova |
| front#3940 | Отфильтрованный список закрытого бренда сохранял пометку «не индексировать» только при одном точном написании бренда. | значение бренда нормализуется до решения по robots | Vova |
| front#3946 | Выбор закрытой запчасти из подсказок поиска вёл покупателя на адрес, который отвечает «не найдено». | один резолвер для каждой строки подсказки | Vova |
| front#3932 | Комментарий в коде всё ещё утверждал, что страницы техники недостижимы, хотя после переезда они достижимы. | комментарий исправлен | Vova |
| front#3939 | Дымовой тест оплаты покупал запчасть, которую теперь скрывает индексный шлюз, и падал на тестовом сайте не из-за настоящей поломки. | покупаемый номер подбирается на лету | Vova |
| front#3920 | Вход нёс адрес страницы, откуда вы пришли, прямо в собственном адресе, и это значение можно было направить на чужой сайт. | путь возврата убран из адреса; принимаются только внутренние пути | Vova |
| front#3930 | Ссылка на общую корзину с испорченным кодом отклоняется до кэша, и письмо сотруднику больше не противоречит собственной теме. | форма токена проверяется вне кэшируемого пути | Vova |
| front#3937 | Оформление заказа писало «Итого $975.94 + доставка» и называло плату за доставку, которой больше нет; теперь указана итоговая сумма, а налог вынесен сноской. | итог окончательный, доставка «Free», названия способов — утверждённые | Vova |
| front#3947 | Собственная индексная проверка релиза судила о результате по тому, что её запустило, а не по тому, что она измерила. | проверка ограничена измеренной поверхностью | Vova |
| front#3913 | Главная кнопка покупки на девяти из десяти страниц наших брендов вела в пустой список: у Landoll ноль, при том что в его каталоге 4 767 запчастей. | кнопка бренда ведёт на /parts/brand/<slug> | Vova |
| front#3871 | Ввод в поиске на витрине техники теперь фильтрует список прямо на странице по мере набора. | фильтрация загруженных строк на клиенте | Vova |
| front#3938 | Та же индексная проверка запускалась там, где ответить на неё нельзя, и краснила нормальную работу. | проверка идёт только там, где есть переключатели | Vova |
| front#3871 | Страница техники писала одну и ту же фразу дважды: в заголовке и в панели. | дублирующая строка убрана | Vova |
| front#3871 | Страница отдельной машины теперь читается как страница запчасти, а не как другой сайт. | страница единицы техники берёт герой-блок PDP | Vova |
| front#3871 | Список техники теперь использует те же карточки, фильтры и плотность, что и каталог запчастей. | витрина берёт язык дизайна /parts | Vova |
| front#3184 | Ночная доставка предлагалась по признаку дозаказа, а не по тому, есть ли запчасть на складе поставщика. | cnh-overnight решается по наличию на складе | Vova |
| front#3871 | Меню на телефоне всё ещё вело на старый сайт. | ссылка на старый www убрана | Vova |
| front#3871 | Новые страницы дилерского центра теперь есть в подвале, их можно найти, не зная адреса. | в подвал добавлена колонка дилерского центра | Vova |
| front#3871 | Витрина техники написана языком покупателя, наши призывы к действию — в первом экране. | текст на языке покупателя, кнопки в первом экране | Vova |
| front#3871 | Страница навесного оборудования предлагала фильтры, описывающие целые машины, а не навесное. | фильтры /attachments описывают именно навесное | Vova |
| front#3918 | Новые страницы несли «хлебные крошки» в разметке, но читателю их не показывали; теперь обе стороны совпадают. | один маршрут питает видимую навигацию и разметку | Vova |
| front#3916 | Диалог «все запчасти» над схемой вёл закрытые запчасти на адреса, где индексный шлюз отвечает «не найдено». | закрытые строки во всех трёх таблицах — обычный текст | Vova |
| front#3904 | Ввод номера запчасти и Enter открывал схему постороннего агрегата вместо самой запчасти. | отправка ведёт по строке, которая отвечает на запрос | Vova |
| front#3902 | Проверка, что старые адреса узлов по-прежнему переадресуются, идёт на каждом изменении, а не только в глубоком прогоне. | кейсы 308 для узлов идут на каждом PR | Vova |
| front#3900 | Тест всё ещё утверждал, что хаб схем удалён навсегда, хотя он вернулся. | утверждение о 410 заменено живой формой | Vova |
| front#3902 | Старый адрес узла доходил до нового места за два перехода; теперь за один. | хвост старых узлов переадресуется одним переходом | Vova |
| front#3900 | Переехавший код схем остаётся под теми же проверками качества, что и до переезда. | переехавшее дерево осталось под теми же проверками | Vova |
| front#3872 | Одиннадцать новых страниц повторяли один и тот же завершающий блок и одну и ту же разметку списка; теперь и то и другое написано один раз. | завершающий блок и схема ItemList вынесены в помощники | Vova |
| front#3900 | Проверки на адреса в нижнем регистре переехали вместе со схемами. | утверждения о нижнем регистре перенесены на новое дерево | Vova |
| front#3902 | Теперь карта адресов переезда лежит в одном месте: переадресации, уровни кэша, навигация и карта сайта. | карта переадресаций, уровни CDN, навигация и sitemap изменены вместе | Vova |
| front#3872 | Одиннадцать страниц дилерского центра, которые есть на старом сайте и отвечали «не найдено» у нас, теперь существуют: сервис, заявка на кредит, вакансии, коллектив, отзывы, часы работы и адрес. | добавлены 11 статических страниц | Vova |
| front#3901 | У машин и навесного оборудования появились свои страницы по адресу, который задаёт структура сайта. | /equipment, /equipment/{id} и /attachments отдают витрину | Vova |
| front#3900 | Все адреса схем переезжают из /equipment в /parts-diagrams одним переходом, чтобы имя equipment освободилось под технику. | дерево моделей переехало на /parts-diagrams/model, строка запроса сохраняется | Vova |
| front#3906 | Сервис изображений мог уйти по переадресации на адрес, который ему не разрешали загружать. | у оптимизатора maximumRedirects = 0 | Vova |
| front#3909 | Удалена дублирующая копия правил адресации фотографий, чтобы две копии не разъезжались. | одна карта бакетов, один загрузчик; минус 51 строка | Vova |
| front#3894 | Адреса запчастей теперь везде в нижнем регистре, а форма с заглавными доходит до них ровно за один переход. | все адреса /parts/ отдаются в нижнем регистре, форма с заглавными — один 308 | Vova |
| front#3908 | Поле входа оставляло работающие таймеры после исчезновения и краснило случайный чужой прогон тестов. | после размонтирования не остаётся ни одного таймера | Vova |
| front#3905 | Тест на то, что закрытая строка в списке запчастей не превращается в ссылку. | три кейса закрепляют ветку indexHeld | Vova |
| front#3895 | Уведомление могло появиться в тёмных цветах после того, как магазин закрепили в светлой теме. | всплывающее уведомление следует принудительной теме | Vova |
| front#3891 | То, какие папки фотографий заранее нарезаны, объявлено в коде, а не в настройке хостинга, которую репозиторий не может прочитать. | покрытие берётся из BAKED_WIDTHS, переменная окружения убрана | Vova |
| front#3889 | Страницы входа были закрыты от чтения, а вместе с ними и написанная на них пометка «не индексировать». | /sign-in и /sign-up открыты, добавлен canonical | Vova |
| front#3883 | При отсутствии настройки заранее нарезанные папки фотографий считались пустым списком; теперь по умолчанию берутся все три готовые. | пустая переменная разворачивается во все нарезанные префиксы | Vova |
| front#3873 | Удалены две старые переадресации, по которым Google за шестнадцать месяцев не перешёл ни разу. | правила /catalog и /tires удалены | Vova |
| front#3881 | Адрес фотографии со строкой запроса мог быть принят за векторный рисунок и пройти мимо оптимизатора. | проверка вектора читает путь, а не сырую строку | Vova |
| front#3880 | Логотипы брендов отдавались в полном размере: 963 КБ из 1,35 МБ картинок одной страницы бренда. Теперь они идут через оптимизатор. | растровые логотипы теряют флаг unoptimized | Vova |
| front#3879 | Два заголовка рабочих процессов утверждали правило, которого нет, а вера в него отнимает единственный способ запустить их вручную. | заголовки исправлены, каждый со ссылкой на измерение | Vova |
| front#3877 | На ветке продакшена не требовалось ни одной проверки, тогда как на тестовой — пять; теперь эту асимметрию еженедельно контролирует отчёт. | еженедельная проверка читает правила ветки main | Vova |
| front#3875 | Переключатель внутри личного кабинета переводил весь магазин в тёмную тему для этого покупателя и при всех следующих визитах. | светлая тема принудительно, сохранённая тёмная сбрасывается | Vova |
| front#3865 | Меню брендов в шапке показывало названия там, где должны быть логотипы. | логотипы возвращены в шапку и в полосу брендов | Vova |
| front#3868 | Оптимизатор фотографий забирал оригиналы через наш собственный защищённый край вместо адреса медиа. | источник оптимизатора — абсолютный адрес медиа | Vova |
| front#3867 | Вкладка «Схемы» бренда открывалась на выборе категории, а не на сетке всех категорий. | пустая вкладка отдаёт сетку всех категорий | Vova |
| front#3863 | У вчерашнего изменения панели не было тестов; теперь его держат двенадцать проверок. | 12 утверждений, проверка зависимостей — ноль нарушений | Vova |
| front#3862 | На странице схем бренда дважды подряд показывался один и тот же ряд кнопок категорий. | дублирующая полоса кнопок убрана; вместо двух рендерится одна | Vova |
| front#3685 | Тест оформления заказа, который заполняет адрес дважды, не укладывался во время на загруженной машине сборки и краснил чужую работу. | отдельный бюджет времени для этого случая; продуктовый код не тронут | Vova |
| front#3854 | Страницы брендов проверялись по правилу, написанному для страниц запчастей, и проверка помечала корректные страницы. | совпадение по префиксу пути, а не по одному буквальному адресу | Vova |
| front#3854 | Проверка, охраняющая весь этот релиз, теперь читает переадресации из тела страницы, так что её больше нельзя ими обмануть. | проверка утверждает якорь robots и следует за переадресациями в теле | Vova |
| front#3860 | В файле инструкций для обхода часть страниц названа точно, а часть по префиксу; проверка считала точное имя префиксом и пропускала страницы, которые должна была отклонить. | строки Allow с якорем $ читаются как точные пути | Vova |
| front#3854 | Google всё ещё мог дойти до закрытой страницы запчасти за один переход со страницы, которую читать приглашён; этот переход закрыт, и инструкция «не индексировать» наконец может быть исполнена. | последний переход к /lookup убран | Vova |
| front#3858 | Комментарии в коде всё ещё описывали старую базу как живой источник после её выключения. | комментарии исправлены; поведение не изменилось | Vova |
| front#3225 | Вкладка «Схемы» на странице бренда появлялась только у некоторых категорий; теперь у всех. | вкладка «Схемы» открывается на каждой категории | Vova |
| front#3857 | Модуль кэша всё ещё нёс имя ушедшего коллеги и блок комментариев, отошедший от кода. | имя убрано; блок комментариев возвращён под контроль | Vova |
| front#3843 | Разрешения на обход для отдельных запчастей были записаны достаточно вольно, чтобы разрешать и адреса под ними. | строки Allow для отдельных SKU заякорены символом $ | Vova |
| front#3854 | Несколько мест на сайте ссылались на закрытые страницы запчастей, не проверяя, закрыты ли они; теперь проверяют. | поверхности, слепые к вердикту, перестают рекламировать закрытые страницы | Vova |
| front#3854 | Каждая ссылка на страницу запчасти теперь строится одним куском кода, так что решение «закрыта или нет» нельзя забыть в одном углу сайта. | все ссылки /parts/ идут через один генератор | Vova |
| front (direct) | Тестовые данные использовали реальный рабочий адрес почты. | подставлен нейтральный адрес | Vova |
| front (direct) | Тест хука использовал реальное имя коллеги как образец соавтора. | подставлены нейтральные данные | Vova |
| front (direct) | Пояснение в документации называло ушедшего коллегу и повторяло то, что уже сказано абзацем выше. | пояснение убрано | Vova |
| front (direct) | Документация описывала функцию через того, кто её сделал, а не через то, что она делает. | описано через роль | Vova |
| front (direct) | Название самого теста содержало имя ушедшего коллеги. | тест переименован | Vova |
| front (direct) | Инструкция по настройке предписывала конкретному ушедшему человеку выдать ключ. | инструкция обращена к действию, а не к человеку | Vova |
| front#3857 | Код брендов всё ещё нёс имена коллекций и карты полей старой базы, которые теперь никуда не указывают. | мёртвые имена коллекций и карты полей удалены | Vova |
| front (direct) | Строка владения называла человека, который ушёл. | строка владельца исправлена | Vova |
| front#3854 | Решение о том, приглашена ли страница запчасти к прочтению Google, принималось в нескольких местах, которые могли разойтись; теперь оно принимается один раз, двумя названными политиками. | один вердикт индексации, две названные политики | Vova |
| front#3852 | Проверка «хлебных крошек» отклоняла страницы /lookup за отсутствие данных, которых те намеренно не содержат. | проверка выучила форму «навигация без схемы» | Vova |
| front#3851 | Проверка того, что адреса запчастей остаются стабильными, работала там, где не могла остановить плохое изменение; теперь блокирует. | стабильность адресов переведена в блокирующую ленту | Vova |
| front#3843 | Структурированные данные о товаре отдавались и с публичной страницы запчасти, и с её закрытого двойника; нести их должна только публичная. | структурированные данные отдаются на /parts и никогда на /lookup | Vova |
| front (direct) | Запись о владельце базовых замеров каталога называла ушедшего коллегу. | записано как вакантное | Vova |
| front#3843 | Закрытый двойник страницы запчасти всё ещё отдавал Google данные о товаре, что приглашает индексировать страницу, которую мы просили не индексировать. | закрытый рендер /lookup не отдаёт структурированных данных | Vova |
| front#3844 | Комментарии утверждали, что просмотр техники читает старую базу. | комментарии исправлены | Vova |
| front#3843 | Строка сохранённых запчастей покупателя ссылалась на закрытого двойника запчасти так, что робот мог по ней пройти. | строка избранного рендерится невидимой для робота | Vova |
| front#3843 | Закрытые страницы запчастей были одновременно закрыты от чтения и помечены «не индексировать» — эти два взаимно уничтожаются; запрет снят, чтобы инструкцию можно было прочитать. | ссылки убраны, Disallow восстановлен, закрытые бренды с nofollow | Vova |
| front#3835 | Фильтр, задуманный убрать строки одного бренда из товарного фида Google, убрал весь фид. | фильтр убирает только брендовую половину | Vova |
| front#3833 | Собственная охрана релиза не ловила читаемую страницу, ссылающуюся на закрытый адрес; теперь ловит. | проверка помечает читаемую страницу со ссылкой на закрытый адрес | Vova |
| front#3840 | Отфильтрованный список для закрытого бренда говорил одно, а страница самого бренда — другое. | список ?manufacturer= согласуется со страницей бренда | Vova |
| front#3835 | Товарный фид Google всё ещё рекламировал запчасти, чьи страницы теперь отвечают «не найдено». | фид убирает строки, чьи страницы отдают 404 | Vova |
| front#3839 | Запрет на чтение страницы запрещает и прочтение стоящей на ней инструкции «не индексировать». | /lookup/ открыт, чтобы его noindex был читаем | Vova |
| front#3838 | Изображения галереи теперь могут объявлять свои настоящие размеры, потому что они наконец есть у всех. | объявлены размеры для /gallery | Alex |
| front (direct) | Тест страницы запчасти гонялся с лениво подгружаемой панелью. | тест дожидается загрузки | Vova |
| front#3837 | Один из маршрутов к списку запчастей бренда забывал записать, что запчасть закрыта. | маршрут BOM бренда тоже проставляет indexHeld | Vova |
| front#3834 | Тест на то, что закрытая связанная запчасть ведёт на двойника, а не на мёртвый адрес. | новый тестовый случай | Vova |
| front#3834 | Карточки связанных запчастей на странице запчасти вели закрытые запчасти на адреса, которые теперь отвечают «не найдено». | карточки связанных ведут на двойника /lookup | Vova |
| front#3833 | Стенд, проверяющий всё решение об индексации от начала до конца, чтобы этот релиз можно было проверить, а не обсуждать. | добавлен стенд проверки индексного шлюза | Vova |
| front#3833 | Этот стенд теперь работает внутри обеих автоматических проверок сайта. | стенд встроен в оба SEO-шлюза | Vova |
| front#3834 | Закрытая строка в каталоге не вела никуда вовсе. | закрытая строка ведёт на свою страницу /lookup | Vova |
| front#3831 | Одна и та же фотография могла публиковаться под двумя разными адресами в зависимости от того, какая система её назвала. | одна фотография — один адрес | Vova |
| front#3830 | Страница, которая не собралась, сохранялась кэшем и отдавалась повторно. | отказные ответы помечены no-store | Vova |
| front#3828 | Страница запчасти всё ещё могла отвечать нормально, неся при этом инструкцию «не индексировать» — ровно та двусмысленность, которую этот релиз убирает. | 200 с noindex теперь невозможен | Vova |
| front#3818 | Поиск по точному номеру запчасти приводил на сетку с одной карточкой вместо самой запчасти. | точный поиск по SKU ведёт на запчасть | Vova |
| front#3824 | Тест дожидался изображений страницы схем прежде, чем проверить адрес. | ожидание отвязано от изображений | Vova |
| front#3822 | Тест считал отсутствующую в наличии запчасть отсутствующей страницей. | OOS-запчасть проверяется как отрисованная страница | Vova |
| front#3820 | Сайт генерировал каждую фотографию в двух форматах, а отдавал один. | AVIF оставлен, WebP убран | Vova |
| front#3810 | Ключевое изменение: страница запчасти, которую Google читать не приглашён, теперь отвечает «не найдено», а закрытые строки убраны из сетки просмотра. | noindex равно 404, за выключенным переключателем | Vova |
| front#3814 | Загрузчик изображений подключался по условию, из-за чего часть страниц его обходила. | загрузчик подключён безусловно | Vova |
| front#3812 | Оптимизатор изображений всё ещё забирал оригиналы с внешнего адреса. | источник оптимизатора перенесён на наш origin | Vova |
| front#3807 | Предложенное отсечение обхода отрезало бы вместе со страницами запчастей и страницы списков брендов. | поддерево списков брендов оставлено читаемым | Vova |
| front#3806 | Отсечение отрезало бы и все ссылки с техники, которые используют форму голого номера. | форма голого номера тоже разрешена | Vova |
| front#3804 | Логотипы брендов, заменённые вручную, всё ещё отдавались с внешнего адреса. | заменённые логотипы на нашем хосте | Vova |
| front#3801 | Изображения витрины, отдаваемые без оптимизации, всё ещё указывали на внешний адрес. | неоптимизированные изображения на нашем хосте | Vova |
| front#3797 | Логотипы брендов отдавались с внешнего адреса. | логотипы брендов на нашем хосте | Vova |
| front#3799 | Остальные поверхности изображений всё ещё указывали на внешний адрес. | все оставшиеся поверхности на нашем хосте | Vova |
| front#3802 | Проверка обхода была нацелена на страницы запчастей, которые намеренно закрыты, и потому мерила не то. | робот нацелен на страницы, пригодные к индексации | Vova |
| front#3795 | Прогон тестов без настроенного адреса поиска всё равно запускал приложение и падал позже, запутанно. | падает до старта webServer | Vova |
| front#3796 | Данные о товаре, отдаваемые Google, называли фотографию по одному адресу, а страница — по другому. | изображение в JSON-LD совпадает с og:image | Vova |
| front#3793 | Первая версия решения о закрытых страницах: отвечать «не найдено», а не отвечать нормально с меткой «не индексировать». | 404 вместо 200 с noindex | Vova |
| front#3791 | Каждый адрес изображения на сайте теперь проходит через наш собственный домен, а не через внешний. | все адреса изображений публикуются через /img/* | Vova |
| front#3789 | Ночной мобильный тест шёл в то же окно, в котором офисная машина выгружает данные, и проигрывал ему каждую ночь. | уведён из окна выгрузки | Vova |
| front#3654 | Фреймворк сайта переведён с превью-сборки на выпущенную версию, и записано, во что это обходится по кэшированию «не найдено». | next 16.3.0-preview.10 -> 16.3.1 | Vova |
| front#3786 | Чек-лист для переключения, которое уже произошло, и руководство, чьи собственные числа расходились между собой. | чек-лист снят, числа сведены | Vova |
| front#3779 | Обновление библиотеки анимаций. | framer-motion 13.1.1 | Vova |
| front#3778 | Шесть обновлений инструментов разработки, ни одно не касается самого сайта. | шесть мажорных обновлений инструментов | Vova |
| front#3783 | Руководство не упоминало переключатель, управляющий отсечением обхода, так что идущий по нему его бы пропустил. | переключатель описан в руководстве | Vova |
| front#3776 | Вкладка «Схемы» бренда скачивала на 1,5 МБ больше нужного, и ничто не мешало этому расти. | 1,5 МБ убрано, добавлен бюджет | Vova |
| front#3770 | Тест входил под одной ролью и затирал сессию другой. | сессия роли загружается, а не затирается | Vova |
| front#3780 | Параллельные тестовые задачи делили один порт заглушки доставки и отвечали на запросы друг друга. | свой порт на задачу, проверка проверяет личность | Vova |
| front#3781 | Файл инструкций для обхода теперь может перечислять только те страницы запчастей, которые Google приглашён читать, — за выключенным переключателем. | отсечение robots.txt, флаг выключен по умолчанию | Vova |
| front#3773 | Записано, что страница, отвечающая нормально с меткой «не индексировать», была задумана именно так — до того, как этот релиз это изменил. | документация | Vova |
| front#3771 | Описания в товарном фиде выкрикивали тип запчасти вместо того, чтобы называть, к чему она подходит. | описания называют совместимость | Vova |
| front#3772 | У вкладки схем бренда не было заголовка, который бы её называл. | добавлен h1 | Vova |
| front#3757 | Страница, которая не собралась, выглядела для наших же проверок обычной страницей. | маркер границы ошибки распознаётся как soft-503 | Vova |
| front#3764 | Тридцать два отложенных теста — каждый либо починен, либо переписан, либо удалён с записанной причиной. | карантин глубокой ленты разобран, 32 спека | Vova |
| front#3765 | Тест оформления заказа нажимал «Оплатить» до готовности страницы. | сначала дожидается React | Vova |
| front#3763 | Список, кратковременно упавший, показывал общий экран ошибки вместо честного «попробуйте ещё раз». | тело 503 вместо границы ошибки | Vova |
| front (direct) | Записано, что бесплатная доставка на уровне аккаунта не может выразить наше исключение для тяжёлых позиций. | документация | Vova |
| front#3744 | Номер запчасти из каталога бренда, которого не существует, отвечал нормально вместо «не найдено». | 404 вместо soft-200 | Vova |
| front (direct) | Тридцать четыре вручную написанных цвета возвращены к токену, с которого были скопированы. | 34 захардкоженных цвета переведены в токены | Vova |
| front (direct) | Тестовый помощник экспортировался, хотя вне своего файла его никто не вызывает. | экспорт убран | Vova |
| front (direct) | Логотипы брендов сдвигали вёрстку, потому что их коробка резервировалась из неверного соотношения. | соотношение приведено к зарезервированной коробке | Vova |
| front (direct) | Проверка настроек падала на настройке, значение которой само является структурированными данными. | переменные со значением-JSON принимаются | Vova |
| front (direct) | Заметки об отложенных тестах, которые правки в той же ветке сделали неверными. | заметки обновлены | Vova |
| front (direct) | Тест подсказок поиска гонялся с собственной задержкой ввода. | кэш удерживается холодным | Vova |
| front (direct) | Бюджет размера мерился против сборки для разработки, которая всегда больше. | отказывается взвешивать документ dev-сборки | Vova |
| front (direct) | Логотипы брендов на страницах запчастей оценивались по изображению, а не по отведённому под него месту. | оценка по зарезервированной коробке | Vova |
| front (direct) | Два тестовых файла падали с ошибкой или пропускались, ничего не проверяя. | спеки заставлены работать | Vova |
| front (direct) | Тесты страниц запчастей и списков всё ещё смотрели на старую структуру страницы. | переякорены на переписанную v2 | Vova |
| front (direct) | Тесты фильтров каталога смотрели на элементы, которых сайт не отрисовывает. | нацелены на реальные элементы | Vova |
| front (direct) | Тесты подсказок выбирали строки по позиции, а позиция менялась. | выбор по группе; ориентир вычисляется на лету | Vova |
| front (direct) | Тесты пути покупки кликали до того, как страница становилась интерактивной. | клики после гидратации | Vova |
| front#3734 | Адрес поиска по умолчанию указывал на порт, на котором работает сам сайт, и тот звал сам себя. | самоссылающегося значения по умолчанию нет | Vova |
| front (direct) | Записан полный базовый прогон браузерных тестов, чтобы падения было с чем сверять. | базовый прогон записан | Vova |
| front (direct) | Три блока комментариев взяты под контроль дублирования. | 3 блока комментариев | Vova |
| front (direct) | Обновлён базовый уровень покрытия. | базовый уровень | Vova |
| front (direct) | Утверждения, которые не могли упасть, переписаны так, чтобы могли. | пустым утверждениям добавлены зубы | Vova |
| front (direct) | Закреплены две проверки, которые держат внутреннюю точку доступа и отладочный экран вне прода. | закреплены проверки revalidate и debug-config | Vova |
| front (direct) | Путь оформления заказа теперь покрыт от начала до конца. | новое сквозное покрытие | Vova |
| front (direct) | Закреплены проверки, не дающие одному покупателю прочитать чужой запрос цены или заказ. | закреплены проверки владения запросами и заказами | Vova |
| front#3740 | Адреса с сегментами-точками могли проскочить мимо префикса маршрутизации прокси. Это уже живое — оно ушло в прод 21 августа и возвращено сюда. | сегменты-точки отклоняются; уже в проде | Vova |
| front#3512 | Два тестовых случая сообщали об успехе, тихо ничего не найдя. | случаи сообщают, что нашли | Vova |
| front#3735 | Когда заголовок страницы запчасти был слишком длинным, он терял либо бренд, либо номер запчасти производителя; теперь сохраняет оба. | заголовок сохраняет бренд и номер OEM | Alex |
| front#3738 | Товарный фид Google рекламировал состояния наличия, которые Google отклоняет. | отклоняемые состояния убраны | Vova |
Поиск18 изменений 11 из них заметны покупателю или Google
| Изменение | Что это | Что сдвинулось | Сделал |
|---|---|---|---|
| search#952 | Список запчастей бренда игнорировал указание показывать только строки, которые Google приглашён читать. | indexableOnly учитывается в списке бренда | Vova |
| search#949 | Поиск мог вернуть адрес навесного оборудования, для которого у витрины нет страницы. | слаги ATTACHMENT убраны из поиска и вариантов | Vova |
| search#946 | Тот же неверный адрес мог прийти из веток узлов. | слаги ATTACHMENT убраны из веток узлов | Vova |
| search#944 | Ветка федеративных брендов игнорировала то же указание. | indexableOnly применяется в ветке федеративных брендов | Vova |
| search#942 | Отсечение сетки просмотра применялось ко всем поставщикам строки, а не только к её собственным. | отсечение ограничено собственными поставщиками строки | Vova |
| search#941 | Строка владения называла коллегу, который ушёл. | строка владельца исправлена | Vova |
| search#940 | Ответ о здоровье всё ещё объявлял поля двух систем, с которыми сервис больше не разговаривает. | поля elasticsearch и mongodb убраны | Vova |
| search#933 | Списки популярных запчастей и запчастей на схемах не несли признак того, приглашена ли запчасть к прочтению Google, и магазин не мог этого знать. | вердикт реестра добавлен в обе ленты | Vova |
| search#933 | Сами результаты поиска этот признак тоже не несли. | вердикт реестра добавлен в результаты | Vova |
| search#938 | Признак открытости бренда для Google читался из устаревшей копии; теперь читается из записи, которая его определяет. | читается из indexing_blocks | Vova |
| search#938 | Сводка по бренду теперь сообщает, открыт ли бренд для Google, и магазин перестаёт гадать. | /api/brands/summary несёт признак | Vova |
| search#937 | Запрос, остановленный на пределе размера, отменялся на лету, что портило общее соединение и задевало следующий поиск покупателя. | запросы на пределе больше не отменяются | Vova |
| search#934 | Поиск теперь умеет возвращать только те строки, которые открыты для Google, — а это и нужно сетке просмотра. | добавлен indexableOnly=true | Vova |
| search#931 | Страница запчасти запрашивала сводку совместимости по одной запчасти за раз; теперь она приходит вместе с запчастью. | сводка совместимости проецируется на Part | Vova |
| search (direct) | Четыре проверки в шлюзе выкатки были написаны так, что не могли упасть. | проверки переписаны настоящим if/else | Vova |
| search#884 | Замечание о дублирующихся результатах блокировало выкатки, пока само ещё обсуждается. | вынесено из жёсткого шлюза | Vova |
| search (direct) | Тестовые данные слияния брендов были скопированы с июньского ответа и разошлись с реальностью. | данные выводятся из ответа | Vova |
| search (direct) | Набор тестов проходил, ничего не проверяя. | закреплено «одна запчасть — одна карточка» | Vova |
Сервисы заказов и оплаты8 изменений 1 из них заметны покупателю или Google
| Изменение | Что это | Что сдвинулось | Сделал |
|---|---|---|---|
| ps#709 | Документация всё ещё называла старую базу живой границей для заказов. | документация исправлена | Vova |
| ps#708 | Строка владения называла коллегу, который ушёл. | строка владельца исправлена | Vova |
| ps#707 | Ночная задача резервного копирования всё ещё была нацелена на удалённый кластер. | путь резервного копирования удалён | Vova |
| ps#705 | Руководство репозитория называло не тот секрет резервной копии, что перевернуло бы порядок удаления. | имя секрета исправлено | Vova |
| ps#704 | Тридцать одна тестовая настройка подставляла подключение к базе, которой больше нет. | убрана 31 подстановка переменных | Vova |
| ps#703 | Два описания выкатки всё ещё утверждали привязку к базе, которой нет ни у одного из сервисов. | заголовки исправлены | Vova |
| ps#702 | Драйвер старой базы и всё, что существовало только чтобы его обслуживать, удалены из сервиса оплаты. | драйвер и зависимое удалены | Vova |
| ps#700 | Сервис оплаты отвязан от старой базы — выключение флагов этого не сделало. Это уже живое: оно ушло в прод 26 августа, а здесь то же изменение приходит обычным путём. | прод и dev отвязаны; уже в проде | Vova |
Что живёт сейчас и чем пятница это заменит — точное, к чему откатываться
Левая часть каждой пары считана с работающих систем в среду 26 августа и с тех пор не менялась. Правая — то, что положила бы туда выкатка; значение витрины — это финальный срез пятничного утра, а не среды: поезд пересобрали, чтобы он нёс всё, что приехало после черновика. Откатиться означает вернуться к левой. В отличие от прошлой недели, эта таблица полная: нигде в ней не написано «не считано».
| Витрина | 137e97ed2 → 13760cd0d | Считано с живого адреса, а не с самой свежей сборки — это не всегда одно и то же: деплой, который сейчас отвечает на crop.clintontractor.net, собран из 137e97ed2 на живой ветке. Vercel хранит предыдущую сборку, так что откат — это одна кнопка. |
|---|---|---|
| Поиск | crop-search:678b7af2 → crop-search:2394e78b | Поиск выкатывается подменой образа, а не слиянием, и обе стороны теперь лежат по одному и тому же пути реестра — ловушка с переименованным путём, из-за которой адрес отката на прошлой неделе был необычным, здесь не действует. Отдаёт search-api-00042-fim, весь трафик, ничего не закреплено. |
| Имя ревизии поиска для отката | search-api-00042-fim | Ревизия, на которую возвращать трафик. Она адресуема по имени, пока не удалена, поэтому безопасный откат вообще не трогает образы. |
| Сервисы | d9915efe → b6482b8b | Сервисы заказов и оплаты. Обратите внимание: левая сторона на этой неделе уже дважды двигалась вне релизного поезда, 25 и 26 августа, ради выключения базы — оба случая записаны на странице от 26 августа. Пятница несёт уборку после них. |
| Сервисы, как они реально работают | catalog-service-recycle-20260826-090026 payment-service-recycle-20260826-090026 |
Оба сервиса работают на ревизиях, созданных ночным перезапуском в 09:00, а не выкаткой. Именно этот перезапуск сдерживает известную проблему с памятью, пока её причина не найдена. Каждый закреплён на точном образе, а не на подвижной метке, — именно это делает их безопасными для отката. |
| База данных | без изменений | Ни в работе витрины, ни в работе поиска на этой неделе нет миграций, и с релизом ни одна не выполняется. Работа с базой на этой неделе — это выключение, которое уже произошло и описано на своей странице. |
| Четыре переключателя | не выставлены → не выставлены | Самая важная строка для того, что меняет пятница. Ни одной из четырёх настроек, управляющих работой по индексации, на живом магазине сегодня нет, и выкатка их не создаёт. Откат их трогать тоже не требует. |