Услуги
Сайты и магазиныЛендинги ★Создание сайтовИнтернет-магазины
ИИ и автоматизацияИИ-секретарь ★Автоворонка и прогрев ★Telegram-боты ★Автоматизация ★CRM-разработка
ПродвижениеSEO-продвижениеAI-продвижение ★Контекстная рекламаSMM и соцсети
Наружка, печать и производствоВывески и буквыНаружная рекламаБаннеры и штендерыТипографияВизиткиШирокоформатБрендированиеОклейка автоТорговое оборудованиеМатериалы для рекламы
Дизайн и поддержкаДизайнПоддержка
КомплексDigital под ключ ★
РешенияКейсыПортфолиоЦеныО студииБлогКонтакты Обсудить проект

Прибор врёт

«Успешно» значит только «не упал»: три инструмента, молча терявших данные

Три сюжета одной природы: фильтр под вчерашний формат, класс символов без букв казахского и детектор, не отличающий организацию от человека. Ни один из них не падал. Разбираем, чем ловится тихая потеря и почему счётчик отброшенного нужнее счётчика взятого.

Замер: 9 августа 2026разбор своих ошибок

Чем проверено: сверка базы коллектора за неделю с выборкой экспортёра; смежные инструменты перепрогнаны до и после правки класса символов, остаток вхождений посчитан по коду

Короткий вывод. Сборщик переписки неделю отрабатывал «успешно» и не видел примерно три четверти активных личных чатов: условие выборки было написано под старый формат адресации, а на новом уже 74,9% активных диалогов. Ни одной ошибки, ни одного предупреждения, код завершался нулевым кодом возврата. Рядом — тот же почерк на другом материале: класс символов, не знавший букв казахского, ронял оценку тональности до 0 из 2, а адрес из голосовой заявки — до 0 из 3. Один инструмент при этом молча резал слова пополам и сравнивал огрызки. Общая мысль разбора: «завершилось успешно» доказывает только то, что не упало.

Почему тихая потеря хуже падения

Упавший скрипт чинят в тот же день: он виден, он мешает, у него есть трассировка. Скрипт, который взял четверть данных и бодро отчитался, живёт месяцами и всё это время производит выводы. Опаснее всего второй порядок эффекта — выводы выглядят нормально. «Клиент молчит», «в этом направлении заявок нет», «тональность нейтральная» читаются как факты о рынке, хотя это факты о фильтре.

Дважды за неделю вывод «клиент молчит» оказался неправдой: переписка шла, просто до сборщика не доезжала. Такие случаи и переводят класс из «неудобно» в «дорого».

Код возврата не про данные. Нулевой код возврата отвечает на вопрос «программа дошла до конца», а не «программа обработала ваш материал». Между этими вопросами лежит любой фильтр выборки, любое условие совпадения и любой класс символов.

Сюжет первый: фильтр под вчерашний формат

Экспортёр тянул диалоги условием, написанным под прежний способ адресации собеседника. Формат сменился, часть чатов на новый уже перешла, и условие перестало их находить — не с ошибкой, а как «ничего не найдено, значит ничего и нет».

Что показала база коллектора за неделюДоля
Активных личных чатов уже на новом формате адресации74,9%
Из них полностью анонимных — привычного идентификатора нет вовсе43,2%
Активной переписки, которую экспортёр молча отсекал≈75%
Сообщений об ошибке за всю неделю0

В реестр ошибок случай ушёл отдельным классом К9 с формулировкой «коллектор слеп к 75% чатов». Ценность формулировки в том, что она проверяемая: любой следующий сборщик обязан печатать, сколько записей он взял и сколько отбросил условием — и второе число нужнее первого.

Сюжет второй: одна причина, четыре инструмента

Слепота к казахской графике начиналась как дефект обезличивателя персональных данных — его мы разбирали отдельно. Оказалось, что причина живёт не в нём: класс символов, которым инструменты описывают «букву», не знал казахских букв. Дальше эффект расходится по всему, что этот класс использует.

ИнструментКак ломалосьБыло → стало
Оценка тональностиказахский адрес и имя в тексте не распознавались0 из 2 → 2 из 2
Извлечение маршрутатопонимы не считались топонимами, плечо маршрута молча терялось
Матчер строкказахская буква работала как разделитель слова: сравнивались огрызки, без единого предупреждения
Голосовая заявкаадрес из казахской речи не извлекался, лид приходил без адреса — заявку переспрашивали0 из 3 → 3 из 3

Матчер в этом списке — самый неприятный. Инструмент, сравнивающий обрезанные строки, не ошибается громко: он выдаёт «совпадений нет» и долю сходства, и оба ответа выглядят как результат сравнения. Проверяется он единственным способом — подложить заведомо совпадающую пару и убедиться, что совпадение найдено.

Чинится в одной точке, ищется во всех. Причина сведена к одному месту, и после правки смежные инструменты выправились сами. Но тот же класс символов остался ещё примерно в 120 местах кода, а параллельно нашлись 8 проверок, слепых к казахскому по той же причине. Правка одной точки закрывает дефект, а не класс: класс закрывает поиск всех вхождений.

Сюжет третий: инструмент не знает класса ваших данных

Третья история из той же семьи, но без потери — с путаницей. Детектор чувствительных данных считал персональными данными реквизиты организаций, потому что не знал правила: в местном идентификаторе один из разрядов отличает организацию от человека. Одно правило в коде — и целый пласт ложных тревог исчезает.

Второе правило из той же заметки записано как рабочий принцип: не расширяй поверхность чужой задачи. Когда по ходу работы под руками оказываются чувствительные данные, соблазн «заодно положить рядом, лишним не будет» велик, и логика «утечки же не случится» звучит убедительно. Даже когда она верна, каждая новая копия — ещё одно место, которое кто-то потом обязан охранять.

Три вопроса к любому инструменту перед доверием. Знает ли он алфавит, на котором вы работаете. Печатает ли, сколько записей отбросил. Отличает ли класс данных от их формы — организацию от человека, идентификатор от похожего на него числа.

Что забрать себе

  1. Считайте отброшенное, а не взятое. Строка «взято N записей» бесполезна без строки «отсечено условием M». Второе число и есть предмет проверки.
  2. Проверяйте инструмент на алфавите своей страны. Регулярное выражение, не знающее букв языка, на котором к вам пишут, — не редкость, а норма по умолчанию.
  3. Позитивный контроль на совпадение. Подложите паре строк заведомое совпадение и убедитесь, что матчер его видит; «совпадений нет» — самый тихий из всех дефектов.
  4. Формат внешней системы меняется без вас. Условие выборки, написанное под прежний формат, не ломается — оно просто перестаёт находить, и это надо ловить счётчиком.
  5. Дефект и класс дефекта закрываются разным. Правка в одной точке — дефект; поиск всех вхождений того же кода — класс.
  6. Не плодите копии чувствительных данных «заодно». Отсутствие утечки сегодня не отменяет расширенной поверхности завтра.

Источники материала

  • Замер по базе коллектора переписки за неделю: доли чатов по формату адресации, оценка молча отсечённой выборки, два случая ложного вывода о молчании собеседника.
  • Разбор слепоты к казахской графике: смежные инструменты с результатом до и после правки, счёт оставшихся вхождений класса символов, список поражённых проверок.
  • Реестр систематических ошибок: класс К9 о слепоте коллектора — формулировка, признак обнаружения, способ проверки.
  • Рабочая заметка по обращению с чувствительными данными: правило о разряде идентификатора и принцип нерасширения поверхности.

Третий модуль курса — приёмка данных

Что печатать на выходе любого сборщика, чтобы «успешно» перестало быть пустым словом, и как за минуту проверить, знает ли инструмент алфавит, на котором к вам пишут клиенты.

Программа курса и цены
Соседние материалы
Предыдущий замер: Судить по состоянию, а не по словамСледующий замер: Главная всегда особеннаяВсе материалы журнала

Обсудим ваш проект

Оставьте заявку — свяжемся в течение 15 минут в рабочее время, зададим пару вопросов и пришлём ориентир по цене и срокам. Бесплатно, без обязательств.

  1. 1. Заявка или квиз
  2. 2. Короткий созвон / переписка
  3. 3. Бесплатная смета и план
  4. 4. Договор и старт

Бесплатно и ни к чему не обязывает. Ответим за 15 минут.