
Глава 1. Закрыто автоматически
В 08:43 на экране Ники Даниловой появилась сорок седьмая жалоба на лифт.
Через минуту система пометила её дубликатом и закрыла.
Ника заметила не саму карточку, а цифру в углу: очередь после ночного обновления стала короче на двенадцать процентов. Кто-то уже успел вынести результат на главный экран теста. В служебном чате поставили зелёную отметку и написали: «Фильтр чистит повторы».
Она проверяла как раз этот фильтр. Ему поручили отделять обращения жителей от рекламы, ругани и случайных касаний экрана. Ника должна была подтвердить, что новая версия не выбрасывает нужное. До обеда — тест, к трём — итоговый отчёт. На завтра назначили презентацию подрядчика, которому город собирался передать часть диспетчерских.
В «Меридиане» сервис называли умной очередью. На городских панелях светились схемы: жильцы отправляют сигнал, программа находит бригаду, мастер приезжает. В старых домах всё шло иначе. Контроллеры не умели передавать точный адрес, поэтому заявки попадали в ручной шлюз. Они запаздывали на несколько минут, а в сводке потом выглядели так же гладко, как новые.
Ника выключила проекционный слой на стекле. Цветные метки исчезли, остались строки и время:
DUP-8841 — «устранено» — 08:44:12.
В карточке было написано: «Лифт стоит с пятницы. На седьмом этаже живёт женщина после операции. Сегодня снова не смогла выйти на приём». Адрес относился к Печатников, 41, корпус 2.
Связанная запись была из другого района: «Мусоропровод, дом 14, корпус 1. Устранено. Закрыть дубль».
Ника открыла карту. Между домами лежали река, мост и девять километров улиц. Она сверила координаты, потом номер корпуса. Никакой опечатки.
— Да ладно, — сказала она.
В карточке нашлась кнопка «оспорить объединение». Ника выбрала причину «разные адреса», добавила координаты и отправила запрос. Система подумала секунду и вернула: «Отдельная жалоба не найдена. Обращение присоединено к существующему случаю DUP-8841. Повторная отправка не требуется».
Она посмотрела на эту фразу дольше, чем требовалось. Из колонок у соседнего стола доносился негромкий джаз; кто-то пил кофе, кто-то ругался на задержку выплат. Мир продолжал работать, пока программа уверенно закрывала чужую неисправность.
Под карточкой имелась ссылка на цепочку обработки. Ника нажала. Вместо журнала появилось: «Сведения удалены после подтверждения результата». Имени не было. Не было и файла, который подтверждал бы ремонт. Оставались зелёная галочка и время.
Она открыла статистику события. Сорок семь обращений, семь адресов, тринадцать дней. Четыре наряда значились закрытыми. Ни один не подтверждал, что все семь лифтов заработали.
Люди писали по-разному. Кто-то прикладывал фото кнопки вызова, кто-то отправлял голосовое. В одной заявке было всего два слова: «Снова стоит». Большинство старых записей уже нельзя было открыть: исходные аудиофайлы исчезли по сроку хранения. Остались транскрипты без пауз, вздохов и шума лифтовой двери.
Ника сама подписывала регламент тестовой среды: семь дней хранения вместо четырнадцати. Тогда это казалось достаточным. В рабочей системе срок был другим, но доступа проверить, кто его менял, у неё не было.
Она позвонила Олегу Маркину из аварийной службы.
— Печатников, сорок один, корпус два. Есть наряд за прошлую неделю?
На том конце послышался скрип ящика и шелест бумаг.
— На лифт? Сейчас посмотрю. Папки опять переехали.
Олег нашёл лист не сразу. В электронном архиве робот пометил его как «служебный шум». Бумажный журнал, похоже, переживал очередную миграцию лучше цифрового.
— Есть, — сказал он. — Двадцать третьего приняли заявку, выезд перенесли. Двадцать пятого приехали, запчасть не подошла. Потом отметка, что ждём новую. Закрытия нет.
— Почему это не видно в «Своде»?
— Там написано, что у вас мусоропровод.
Он прислал снимок наряда. Синяя ручка, штамп мастерской, подпись дежурного и номер лифта. Ника не стала увеличивать поле с фамилией мастера. Сохранила копию в тестовую папку и открыла журнал версии фильтра.
Обновление поставили ночью в воскресенье. В списке изменений обнаружился параметр для карточек контрактного пилота. Он связывал обращения по обслуживающей организации, когда адрес не проходил через обменный пакет. Параметр ещё не объяснял всего: почему адреса исчезли и кто закрыл родительскую запись, было неясно. Но это был первый след, который можно было проверить.
Самого согласования в журнале не было. Только название группы доступа: CONTRACT-PILOT.
В 09:16 пришло сообщение от Артёма Сергеевича, руководителя Ники: «Не отвлекайся на карточки. Фильтр работает штатно. Нужен PASS до двенадцати».
Она ответила: «Семь адресов сведены в один случай. Нужны исходные журналы и основание для нового правила».
Сообщение осталось непрочитанным.
Ника вернулась к списку. Дома стояли в разных районах; не совпадали подъезды, обслуживающие смены и даты ремонтов. Их связывало только участие в пилоте по передаче управления частному оператору. Пилотные адреса выбрали из-за старых контроллеров и большого потока заявок. В презентации они назывались «цифровыми кварталами». На карте кварталы заливала синяя подсветка; на земле половина этих домов по-прежнему жила с бумажными табличками у лифта.
Можно было предположить, что кому-то выгодно уменьшить очередь перед голосованием. Ника записала это в черновик и тут же стёрла. Пока была только странная закономерность.
В 09:29 рабочая панель вывела служебное уведомление: «Исходные вложения доступны только владельцу процесса. Для проверки запросите обезличенную копию через аудит».
Ника закрыла уведомление и вернулась к журналу доступа. Начала с того, что умела лучше всего: выстроила события по времени.
Глава 2. Короткий путь
К десяти часам Ника успела сохранить время создания карточек, время закрытия, номера событий и контрольные суммы вложений. Адреса она вынесла из общей таблицы в закрытый раздел: для проверки совпадений хватало районов и типов неисправности.
Этого всё равно было мало. Снимок наряда, который прислал Олег, подтверждал один незавершённый ремонт. Он не объяснял, как семь домов оказались в одном событии.
По регламенту полный аудит занимал пять рабочих дней. Презентацию подрядчика назначили на завтра, а голосование по контракту — через неделю. Запаса почти не оставалось, но данные ещё можно было успеть проверить.
Срочное обращение просило указать, чем опасна задержка. Ника не стала выбирать «угроза жизни» или «системный сбой»: первое она не могла доказать, второе ещё не проверили. Она написала, что жителям отправили сообщение о завершении работ, хотя ремонт в нескольких домах не подтверждён.
Нажала «ускорить рассмотрение».
Через три секунды пришёл отказ: «Основание уже рассмотрено в рамках случая DUP-8841».
Ника коротко засмеялась. Получилось, что жалобу о неверном объединении отклонили как повтор самого объединения.
В тестовой панели был безопасный набор вымышленных карточек. Она взяла две одинаковые фразы, поменяла адресные зоны и тип неисправности, затем отправила их через тот же маршрут, которым пользовались жители. На экране появился идентификатор тестового случая SIM-2718.
Ника сохранила параметры и остановилась. Она могла повторить тест ещё десятком вариантов, но сначала требовалось зафиксировать, что именно проверено: не настоящие обращения, а только поведение тестовой версии. Ошибка могла быть в конфигурации, в тестовом наборе или в том, как стенд копировал рабочий интерфейс.
В 10:22 позвонила Самира Исмаилова. Её номер открывался через штатный канал уточнений, который скрывал личные данные абонентов друг от друга.
— Вы Ника? Мне сказали, вы разбираетесь с закрытыми заявками.
— Проверяю, почему несколько обращений получили одинаковый статус. Другие адреса я вам не назову.
— В нашем доме лифт стоит с пятницы. Я отправила заявку два раза. Второй раз приложила табличку с номером лифта, а мне ответили, что вопрос решён.
— Писали, кто проверял и когда?
— Нет. Пришло: «Работоспособность подтверждена». На двери объявление, что ждут запчасть. Хотите, сфотографирую?
— Только объявление и дату. Не снимайте людей и квартиры.
Самира помолчала.
— А вы сами можете что-нибудь сделать?
Ника посмотрела на незаконченный тест. До сдачи отчёта оставалось чуть больше часа.
— Могу сохранить противоречие между двумя записями и передать его аудиторам. Ремонт от меня не зависит.
— Понятно. Тогда я буду у стенда в подъезде. Там висит наряд, который ваше приложение считает выполненным.
Стенд стоял у входа в корпус. За мутным пластиком висели объявления о собрании, пропавшем ключе и ремонте лифта. Самира указала на бумагу с номером наряда. Внизу от руки было добавлено: «Ожидает деталь. Повторный визит — 26-го».
В цифровой карточке значилось: «Обслуживание выполнено. Замечаний нет».
Ника сфотографировала только номер и дату. Форма аудита ответила: «Документ не подтверждает наличие неисправности».
Она уже закрывала окно, когда заметила внизу код маршрута: review-route: contract-pilot. Заявки из пилотных домов попадали на одну проверку, даже если относились к разным работам. Это не доказывало ни умысла, ни ошибочного закрытия. Но объясняло, почему карточки могли встретиться в очереди.
К полудню ей предстояло подтвердить результат теста. В последнем пункте чек-листа спрашивали: «Проверены ли выводы независимым источником?» Рядом располагались две кнопки. Зелёная принимала отчёт, жёлтая возвращала его руководителю и требовала пояснения.
Утром Ника уже написала PASS на черновике. Теперь курсор застыл над зелёной кнопкой.
Телефон завибрировал:
«Напоминание по защите данных: не прикрепляйте сведения о жильцах к общим сообщениям. Используйте аудиторскую карточку».
Ника закрыла таблицу с адресами, оставила в отчёте только обезличенные номера и нажала «сохранить как черновик». Не стала ни отправлять чужой снимок в общий чат, ни пересылать сообщение неизвестного отправителя.
Перед полуднем она всё же отправила отчёт руководителю на согласование, отметив итог как «не подтверждено». Жителей она не стала прикладывать к общей карточке: данных для этого пока не было.
До назначенного голосования оставалось меньше недели. Если она хотела, чтобы комиссия услышала о сбое, ей нужно было доказать не только то, что фильтр ошибся, но и почему система не заметила этого раньше.
Глава 3. Бумага помнит
Олег Маркин встретил Нику в бывшей комнате для запасных деталей. На стенах ещё остались крючки от инструментов; под потолком шёл кабель к новому считывателю пропусков. Если сеть пропадала, цифровой ключ не открывал аварийный склад. Поэтому у Олега в столе лежал механический.
Он не предложил ей сесть. Раскрыл синюю папку и вынул три наряда.
— Смотри, это разные даты, — сказал он. — Двадцать третьего приняли заявку. Двадцать пятого выехали. На месте выяснилось, что деталь не подходит. Заказали другую.
В цифровой карточке все три события превратились в одну строку: «Работа завершена».
— Кто добавил отметку?
— Не знаю. Журнал смены этого не показывает. Сначала пришёл общий номер от пилотной диспетчерской, потом карточка закрылась.
Ника попросила сфотографировать только дату, номер наряда и статус запчасти. Олег сам прикрыл листком фамилию жильца, а телефон мастера зачеркнул пальцем.
— Вот это уже похоже на работу, — сказал он. — Обычно ваши сначала всё снимают, потом вспоминают, что там чужие данные.
Она не ответила. Снимок совпал с квитанцией Самиры. Две разные записи — одна от жителя, другая из аварийной службы — расходились с отметкой «устранено».
— У остальных домов есть такие же бумаги?
Олег посмотрел на закрытую папку.
— Есть журналы. Но я не могу отдать их без разрешения. На страницах имена и номера квартир.
— Мне и не нужны. Хватит адресной зоны, вида работ, дат, статуса выезда и подтверждения.
— Тогда запрашивай официально. Я передам начальнику, он закроет личное и выгрузит нужное. Если начну носить папки на проверки, крайними окажемся мы.
Ника открыла форму и перечислила поля: адресная зона без квартиры, тип неисправности, время регистрации, выезда и закрытия, статус запчасти, способ подтверждения. Отдельной строкой указала, что не просит имена, фотографии жильцов или голосовые файлы.
— Срок? — спросил Олег.
— Два дня по регламенту.
— До заседания?
— Нет.
Он нажал электронную подпись. На экране возникла квитанция AUD-1904.
Вернувшись к себе, Ника сопоставила открытые статусы с реестром пилота. Семь адресов из DUP-8841 действительно входили в проект. Само по себе это ничего не доказывало: пилот специально выбрал дома, где старые контроллеры создавали длинные очереди. Но если все обращения склеить в родительскую карточку, ежедневная статистика становилась аккуратнее.
Она написала в заметке: «Выглядит выгодно». Потом стёрла. Выгода ещё не означала, что кто-то подстраивал результат.
На карте контур пилотных домов был залит голубым. В презентации его называли цифровым кварталом. По краям контура оставались серые здания: слишком старые для автоматической диспетчеризации. В одном из них родилась Ника; её мать до сих пор держала у лифта бумажку с номером аварийной службы, потому что приложение однажды показало не тот подъезд.
Ника не стала добавлять это в отчёт. Она вспомнила об этом только сейчас, когда увидела, как серые дома превращались на карте в ровную заливку.
В 14:06 Артём вернул на доработку её отчёт по тесту и оставил комментарий: «Показатель выполнен. Расхождения относятся к классификации. Не задерживать выпуск».
Ника открыла последнюю строку чек-листа: «Результат подтверждён независимым источником?»
Ответ был «нет». Копия наряда подтверждала, что как минимум один ремонт не завершился. Она внесла это в отчёт. До отправки запроса Ника сохранила из обзорной панели разрешённый снимок строки конфигурации — без истории изменений и персональных полей — и зарегистрировала пакет в аудиторском контуре. Через несколько минут её доступ к журналам пилотного фильтра закрылся.
Не ко всем данным. Только к истории изменения параметров и времени их применения. На панели высветилось: «Запрос передан руководителю. Срок ответа — пять рабочих дней».
Ника сохранила уведомление, сверила контрольную сумму уже зарегистрированного пакета и отправила руководителю отдела только номер аудиторской записи. Бумажная копия осталась в аудиторском контуре. На разрешённой распечатке было написано:
ignore-location-if-contract-pilot = true.
Строка подтверждала, что флаг включён. Но снимок не показывал, когда его установили и какие карточки он затронул.
Глава 4. После блокировки
Во вторник утром экран Ники открывался пустым. Пропуск по-прежнему работал в лифте и у турникета; пропал только доступ к пилотной очереди. На месте списка задач висело: «Данные недоступны. Обратитесь к владельцу процесса».
Артём Сергеевич остановился у её стола.
— Ты отправила материалы аудиторам?
— Да. Номер AUD-1904. Олег приложит обезличенную выгрузку, когда начальник согласует.
— А распечатка?
— Осталась в аудиторском контуре. Я отправила контрольную сумму и копию уведомления о блокировке.
Артём не сел. Ника заметила, что он смотрит не на неё, а на закрытую панель.
— Ты уже называешь эту строку параметром и говоришь, что она свела семь адресов, — произнёс он. — Мы пока не знаем, где её включили и что ещё сработало.
— Ты прав. В отчёте оставила только наблюдаемое.
Она открыла черновик и показала ему: «В выгрузке присутствует параметр, связанный с контрактным пилотом. Его влияние на группировку проверяется».
Артём прочитал.
— Так точнее.
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.