Украинский детектив: как сломать коррупционную схему, сэкономить деньги и не сойти с ума
Государственный веб-портал для внесения информации в Единую базу данных отчетов об оценке работает уже более года. За это время им воспользовались тысячи оценщиков и нотариусов, счет успешных сделок купли/продажи квартир, домов, земли тоже идет на десятки тысяч. Создание этого бесплатного сервиса сэкономило украинцам порядка 800 млн грн в 2020 году. И это не какая-то вымышленная экономия. Не будь этого портала, все, кто покупал квартиру в 2020-м, заплатили бы в общей сложности посредникам дополнительные 800 млн грн.
Казалось бы, что в этом такого? Ведь так и должны функционировать государственные сервисы.
Чтобы понять важность запуска и работы этого портала для каждого украинца и страны, нужно знать историю его запуска. Это настоящий детектив про борьбу с миллионными схемами, проектный менеджмент в темноте и тоннелестроение.
Миллионы из ниоткуда
Одной из самых нахальных схем обогащения последних лет стали "площадки Яценко". Деньги там появлялись "из воздуха", а точнее – из карманов тех, кто решил продать квартиру или земельный участок. Чуть справки для понимания. По закону, для того, чтобы продать квартиру нужно провести ее оценку и внести данные в реестр Фонда госимущества. Все это для того, чтобы люди не занижали стоимость объекта и таким образом не уходили от реальных налогов.
И все бы ничего, если бы депутат Антон Яценко в 2018 году не пролоббировал правки в Бюджетный и Налоговый кодексы, где фиксировалось, что эти действия нельзя просто сделать на сайте Фонда госимущества, а нужно – исключительно через коммерческие веб-сайты. По данным журналистов, он договорился с тогдашним руководством Фонда, те аккредитовали четыре веб-сайта – все с одинаковым софтом и связанные с депутатом, остальных не пускали. Цены за загрузку документов поставили одинаковые – по 1800 грн. Сделок было много, вот так десятки миллионов гривен в месяц и набегало.
Представьте, что за заполнение ваших данных в Facebook нужно было бы платить почти $60. Удивляет? Вот и народные депутаты нового ІХ созыва вместе с новой командой Фонда госимущества во главе с Дмитрием Сенниченко удивились, и решили ломать схему.
Для этого Верховная Рада в 2019 году приняла закон №354-IX, который отменял требование использования посредников, и дали часть декабря 2019 и январь 2020 года на доработку сайта ФГИ, который должен был делать все то же, что и коммерческие сайты, только бесплатно. Правда, денег на реализацию никто не выделил: у нас не настолько большой бюджет.
Мы в Прозорро.Продажи согласились помочь Фонду – технически, архитектура ІТ-решения с посредниками была довольно похожа на архитектуру нашей торговой системы – с центральной базой данных и площадками. Все казалось довольно очевидно: нужно упросить. Спойлер: упрощать оказалось весьма непросто.
Все что могло пойти не так, пошло не так
Времени на реализацию проекта было два месяца. В свое время запустить нашу аукционную систему Прозорро.Продажи удалось за три месяца вместе с центральной базой и площадками, поэтому задача выглядела посильной. Но в деталях все оказалось существенно запутаннее.
На первой же встрече IT Фонда Госимущества и нашей проектной команды, мы получили всю переданную разработчиком центральной базы данных ФГИ техническую документацию.
Документ на сорок страниц выглядел внушительно ровно до того, пока аналитики не выяснили, что это инструкция к админке с описанием структур данных. Ни слова о том, как нужно взаимодействовать с API центральной базы данных, в нем не было. Стало понятно, почему коммерческих площадок было только четыре, и они все были связаны между собой: просто доступной информации о том, как разработать подобную площадку не существовало в природе. Также довольно быстро выяснилось, что поставщик модуля оценки не озаботился созданием тестового стенда, поэтому любое новое подключение можно было разработать только одним способом – угадать, как работает API, причем с первой попытки.
Со второй проблемой удалось справиться довольно быстро: благодаря сотрудникам IT Фонда мы быстро получили клоны виртуальных машин с предварительно очищенной базой, и всего за одну ночь удалось пересобрать и запустить копию аналитического модуля.
Все еще оставался вопрос с тем, как же работает API.
На помощь пришла команда львовских активистов, которые тоже пытались разбить монополию четырех площадок. Не имея властных полномочий, они решили сделать единственно доступное: написать свой сайт, получить аккредитацию и предоставлять услугу за символическую плату, тем самым сделав схему бессмысленной.
Ребята передали все наработки. Это не было спасением, но – это был большой кусок работы, который сэкономил нам драгоценные пару недель. Мы получили все, что касалось работы сайта: авторизацию с ролями, поиск, и, главное, фронтовые формы для всех типов объектов.
Работа с API не продвинулась, но зато отпала потребность в формировании интерфейсов. Плюс ко всему, мы достоверно знали, что структура полей в интерфейсах заведомо верная: перед разработкой активисты провели спецоперацию и сформировали формы в точном соответствии со структурами данных у посредников Яценко.
До дедлайна – две недели, а готовность бэкенда – примерно 10%. Мы в тупике, а на фоне разъяренный и недоумевающий рынок.
Тогда казалось, что за каждой пройденной преградой обнаруживалась еще одна, а за ней еще. И тут у IT фонда неожиданно нашелся CD-диск (!) с исходным кодом аналитического модуля. В этот момент задача из статуса совсем невыполнимой перешла в статус почти невыполнимой: во-первых, кода оказалось много. Во-вторых, среди всех участников проекта не было ни одного специалиста по .Net – технологии, не имеющей ничего общего с остальными компонентами нового решения (все остальные компоненты разрабатывались на различных фреймворках РНР).
И все же, неделя на анализ кода и у нас есть представление о работе API. Теперь ключи посредников должны быть деактивированы, и сайт Фонда должен начать принимать данные об оценке.
Объяснить, как так получилось, что тогда сайт фонда смог успешно обмениваться данными с тестовым стендом, до сих пор сложно. Ежедневная работа до глубокой ночи, немного везения и, пожалуй, вера в успех – и продуктивная копия сайта развернута и готова слать первые отчеты об оценке. Готова, но почему-то не шлет.
Причину удалось локализовать довольно быстро: в отличие от тестового стенда, продуктив должен работать с аналитическим модулем по шифрованному каналу. Соединение устанавливается, пакеты попадают в туннель, но оттуда, как из кроличьей норы, ничего не выходит. За день удалось найти и связаться с разработчиками VPN-решения, несколько раз пересобрать контейнеры и попробовать несколько версий VPN-клиента на разных операционных системах. Не удалось только обменяться данными с аналитическим модулем.
Слепой проверкой конфигурации выяснилось, что при торжественном отключении ключей старых посредников, случайно был деактивирован и ключ собственного интерфейса Фонда. Исправили. Успели.
Но через 15 минут после появления первых пользователей, оказалось, что мы не успели. То, что для нас казалось законченным и логичным бизнес-процессом, по документам должно было функционировать абсолютно иначе. Разбирая код API, документацию, анализируя интерфейсы и модели данных, невозможно было учесть, что вызовы к API должны проходить в совершенно иной последовательности. Например, по документации, чтобы загрузить отчет, нужно было приложить файл и отправить команду в модуль, а в реальности – сначала нужно было отправить команду, а потом подгружать отчет.
Наверное, для бизнес-пользователей все происходившее в интерфейсе было похоже на Страну Чудес для Алисы: знакомые вещи в неожиданных местах и с удивительными логическими связями.
Кроме этого обнаружилось, что на сайте не хватает некоторых печатных форм, про которые молчала документация, и которые не попались на глаза авторам фронтенда, поскольку их отображение происходило на последних этапах работы с модулем, недоступных без подачи продуктивных отчетов.
Дальше все происходило молниеносно: один меняет логику вызовов к API, второй – делает печатные формы. К 16:00 первые формы собраны, PDF-файлы генерируются и успешно уходят на печать. Внутреннее тестирование и передача в Фонд для приемки. Вердикт ужасен: "Ваши формы, похоже, на болгарском, пример прилагается". И действительно, это именно наши формы, но на странном языке и с частично битой кодировкой. Виновным оказался плагин-переводчик в браузере. Позже проблема повторялась еще у нескольких оценщиков, но массовой – не стала.
Каждый день начинался с подсчета количества жалоб прошлого дня и классификации различных типов багов, которые нашли невольные тестеры. В личные сообщения постоянно писали оценщики, в телефон звонили все: руководство Фонда госимущества, депутаты, Офис президента…
Но в кризисных коммуникациях лучше быть проактивным – открыто рассказывать о проблеме, и когда она решится, чем "спрятаться в домик" и потом все равно получить кризис. Поэтому мы пошли к пользователям в группы оценщиков. К приятному удивлению, большинство из них восприняли коммуникацию положительно и готовы были подождать, понимая, что после устранения проблем новый формат работы сэкономит их клиентам деньги.
В результате, за несколько дней мы научили сайт Фонда правильно принимать и регистрировать отчеты по большинству массовых категорий оценки и довели до ума печатные формы, а также идентифицировали с десяток интересных багов.
Но самым загадочным оставалось не побежденное направление оценки земли. Ничем особенным оно не отличалось, кроме того, что для работы с ним оценщики получают отдельную лицензию, с оригинальными реквизитами и запутанной логикой. Информация про лицензии поступала из плохо изученной интеграции с неизвестным внешним источником. А поскольку на тестовом стенде никаких интеграций не было, то мы вновь оказались в ситуации, когда пришлось действовать экспериментально. В этот раз эксперименты дали результат: путем проверки разных комбинаций вызовов в модуль удалось отправить первый правильно сформированный отчет. Правда, случилось это уже в середине февраля.
Чему нас научила эта история?
Не бойтесь просить помощи. Общими усилиями и большим желанием можно достичь больших результатов, и даже немножко побороть коррупцию. Да, в процессе может быть больно, но помните, что все это ради большой хорошей цели.
Открыто коммуницируйте, как бы плохо или стыдно не было. Другим еще сложнее. Не забывайте, что везде обычные люди: и в государственных структурах, и в больших сложных рынках, и в маленьких коммерческих компаниях.
И да, государственные айти-системы должны быть с открытым кодом: это не только доверие, которого всегда не хватает, но и шанс на качественные и безопасные публичные сервисы.
Колонка написана в соавторстве с Алексеем Соболевым, директором Прозорро.Продажи
Хотите стать колумнистом LIGA.net - пишите нам на почту. Но сначала, пожалуйста, ознакомьтесь с нашими требованиями к колонкам.