Деньги – людям

Материал из Eludia
Перейти к: навигация, поиск

Содержание

Многие информационные системы, разработанные на базе Eludia и доведённые до реального внедрения, так или иначе были связаны с учётом денег. В большинстве случаев речь шла о "мониторинге", то есть неких виртуальных, надуманных, вторичных по своей сути операциях над массивом подлинной материи: тоннами пыльных, потрёпанных, подзасаленных платёжных документов.

Тем не менее, иногда нам приходилось не просто считать суммы и проценты, но и обеспечивать выплаты как таковые. По иронии судьбы, именно эти заказы (точнее, приказы) никогда не сопровождались собственным финансированием и, в конечном счёте, несколько рабочих выплатных систем федерального уровня оказались нашими фанатскими разработками.

Компенсации ЖКХ

Узнаваемый мотив административных реформ последних лет – всеобщая отчётность в мелочах. Один хитрый лис из числа старых служащих института как-то произнёс невзрачную фразу, потрясшую Дмитрия своим цинизмом: "На среднем уровне возможно в принципе что угодно". Для высшего руководства этот расклад, разумеется, был очевиден – и целью глобальной политики было добиться такого состояния, чтобы ни на среднем уровне, ни ниже было бы невозможно ровным счётом ничего.

Синопсис

Дано: порядка 100 000 граждан имеют право на компенсации услуг ЖКХ, что составляет несколько миллионов в месяц.

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

Проект

Для десятков ранее существовавших льгот система строилась по принципу маятника: регион докладывает центру, сколько кому положено рублей и суммирует это дело в столбик – центр выдаёт одну субвенцию – регион распределяет деньги по людям. Однако центр больше не верил регионам и деньги хотел выдавать мимо местного руководства непосредственно гражданам.

Более конкретно, схема виделась так: регионы ежемесячно присылают в центр информацию о сумме для каждого получателя с указанием либо адреса (кто желает получать деньги по почте), либо номера счёта в Спецбанке. Центральная БД ежемесячно агрегирует региональные выплатные списки, перегруппирует их по платёжным каналам (банк/почта) и направляет по назначению, сопроводив платёжками. Ну что же – хорошая, правильная схема. Реализовать такое в виде программного проекта – просто мечта. Не правда ли?

Реальность

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

Информация поступала в систему пакетами: регион-месяц. Электронный формат данных для такого пакета выбрали самый незатейливый из того, что могло быть: DBF III-й версии в DOS-кодировке (с прицелом на то, что на местах живы классические Клиппер с Фоксом) + ZIP поверх него. Предполагалось, что сильно информатизированные регионы с большим числом получателей смогут генерировать требуемые файлы самостоятельно, а для остальных будет разработана отдельная программа ввода.

Программу ввода поручили делать не Э-людям из института, а горе-программерам, сидевшим в то время непосредственно в министерстве. Это заняло у них в результате месяца четыре. На выходе оказался дистрибутив, весивший более 200 Мб, будучи запакованным в формат RAR. (Напоминаю, надо было всего лишь писать и зиповать 3 DBF-файлика без внешних справочников). Да, в эти 200 Мб НЕ входила СУБД, за которой предлагалось обращаться к разработчику чуть ли не лично. Сервер БД требовалось запускать в отдельном DOS-окне. Инсталлировалась программа в фиксированную директорию диска C:, обязательным условием её запуска была общесистемная перенастройка формата даты на 'ДД-ММ-ГГГГ' (именно так, не через точку, а через дефис). Нажатия на некоторые клавиши приводили к необратимой порче БД. И, да, кстати, требуемые пакеты данных программа НЕ генерировала.

Таким образом, "Горячей линии" института пришлось обучить несколько десятков региональных представителей писать DBF голыми руками. А ведь программисты (то есть люди, способные запустить Эксцель) были не везде.

Тем временем, постепенно приходили данные от регионов, которым удалось наладить экспорт из местных БД. Само собой, Дмитрий поставил множество формальных проверок, из-за которых поначалу почти вся поступавшая информация отбраковывалась. Шёл обоюдный процесс отладки: что-то необходимо было менять в своих данных регионалам (вроде откровенно мусорных символов в адресах), а где-то – смягчать правила валидации, ставить автоопределение кодировки и т. п. Вот выяснилось, к примеру, что у некоторых наших граждан отчество – пустая строка. Понятно, нарушение, но никто же не будет сейчас из-за этого паспорт менять.

О цифровой подписи речи не было изначально. Причины этого, наверное, читателю уже очевидны. Но подтверждать-то финансовые данные необходимо. Поэтому выплатные списки регионов... дублировались в бумажной форме. С подписями и печатями. А доблестные сотрудницы Департамента Гарантий Справедливости должны были проверять каждую строку. Каждый символ. Все 100 000 записей. Ежемесячно.

Людских сил на такое не хватало, хотя проверка, как выяснилось, была необходимой. В общем, Дмитрий вспомнил свою первую профессию – телефонной барышни – и за две-три итерации разработал для Департамента довольно удобный интерфейс, позволявший использовать ранее выверенные данные и, с одной стороны, быстро подтверждать большие блоки достоверных записей, а с другой – прицельно отлавливать подозрительные случаи (скажем, совпадающие ФИО при разных номерах счетов).

С номерами счетов – отдельная прелесть. Несмотря на то, что сам Спецбанк выставил однозначное требование – 20 арабских цифр – на местах нашлось изрядное число счетов с номерами, скажем, цифр так из 17, а то и с какими-нибудь дробями. Причём телефонный перезвон подтверждал: это не опечатки, счета такие есть, и деньги на них доходят. Ну только если отправитель находится не слишком далеко.

Тут выяснилось удивительное свойство Спецбанка: оказывается, он... Не существует вовсе! Всем известный СБ – это только вывеска. А в реальности присутствуют Северный Банк Спецбанка, Юго-Юго-Восточный Банк Спецбанка и так далее – каждый со своей политикой информатизации и не только. Правда, "банки" эти состоят из "отделений Спецбанка" (ОСБ), хотя бы пронумерованных насквозь. Но и тут не без фокусов: столичные ОСБ не подчинены никому и являются как бы банками в себе. На каждую такую организацию пришлось формировать отдельные списки и проводить отдельные платежи.

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

Отметим, что внутри министерства данная тема тоже ни у кого энтузиазма не вызывала. Вот сформировали, например, первые выплатные списки. Пусть не по всей стране, но самые "тяжелые" регионы: процентов 80 получателей там уже было. На этом работа Департамента Справедливости окончена. А сдаёт он её кому? Департаменту Финансов. Для которого эти цифры – как чёрный ящик подозрительного вида. И финансисты первым делом требуют это всё... правильно, распечатать. И некоторое время всерьёз пытаются вновь сверить уже выверенное, но уже перегруппированное. Вскоре, впрочем, перестают. Однако ритуал распечатки с подписью приживается.

Накануне первых выплат Дмитрий передал проект Ярославу. В то время ему казалось, что система доведена до промышленной версии, новых фич не предвиделось. Это было совешенно искреннее заблуждение.

Выяснилось, что, несмотря на все подписи и печати, данные в систему поступают некорректные. Несуществующие счета и адреса, грубые опечатки в ФИО. Не повсюду, конечно, но вполне достаточно. Так что на повестке дня моментально возникла отработка следующего шага жизненного цикла: возвратов. Дело было в ноябре.

Сказано – сделано. Ноябрьские возвраты были отработаны и учтены. Соответствующим людям должны были направить деньги по исправленным адресам, приплюсовав их к декабрю. Направили. Снова возвраты. Где-то те же, где-то новые (обнаружились те, кого вообще забыли охватить раньше). Ну ладно, перенесём эти деньги на... А вот нельзя на январь. Выплаты должны быть только 2005 годом и никаким другим. Но на каждый месяц 2005 года списки уже получены и менять их нельзя.

"Добавить в 2005 год ещё один месяц". Такое задание получил простой WEB-девелопер Ярослав от менеджера Чёртова. Осознать себя в роли властелина времени поначалу было довольно сложно, зато выполнить поручение оказалось парой пустяков. Месяц мы назвали "Ундекабрь" (decim – это 10, а 11 – undecim). Только вот ведь какое дело... Не хватило 13 месяцев. Снова приехали неучтённые записи и пришлось раздвитнуть архаичный календарик "Дуодекабрём". Потом... В общем, после "Тредекабря" шутка всем надоела и месяцы стали просто нумеровать – как последние элементы менелеевки.

2005 год выдался на редкость длинным: целых 23 месяца. И, если честно, я не сильно удивлюсь, если узнаю, что он всё ещё продолжается. Хотя 2006 удалось завершить практически в срок.

Маленькие беглецы

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

Синопсис

Дано: в месяц на территорию каждого региона доставляется от 0 до 10 ранее сбежавших детей.

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

Решение

Сложная и уточняющаяся со временем модель данных, множество географически удалённых и административно независимых пользователей – типичный случай, когда WEB-приложение решает проблему просто и элегантно. А на базе Eludia.pm – вдобавок быстро и дёшево.

Систему мы разработали летом 2006 года. На фоне "Счастья" и прочей загрузки того периода это прошло практически незаметно.

Как практически все подсистемы Министерства, "Маленькие беглецы" заметно поменяли логику после первых 2-3 месяцев эксплуатации. В частности, выяснилось, что разные расходы могут финансироваться из разных источников (проезд федеральный, еда местная), причём в ряде случаев траты на отдельных детей никто и не просит компенсировать – только, скажем, бензин и командировочные на перевозку группы. В результате формирование полугодового отчёта с показателями типа "Сколько же штук детей, не покидавших пределов СНГ, было обслужено именно на казённый счёт" вышло на уровень головоломки для интеллектуального глянцевого ежемесячника.

Жертвы профилактики

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

Временами однако же случается нечто необъяснимое. Вместо гарантированного счастья граждане обеспечиваются совершенно свехплановым горем. Вроде полной неспособности к каким-либо действиям и чувствам. Впрочем, если таким образом пострадавший гражданин соберёт все необходимые документы и докажет в специальном учреждении, что причиной его недуга стал не сглаз, не невезение, а именно профилактика – что ж, Казна за компенсацией не постоит. Это очень серьёзные деньги.

Синопсис

Дано: два вида выплат: единовременные (тыща!) и постоянные (сотня в месяц. Каждый месяц!) Выплаты традиционно производятся на местах. Получателей – порядка 10 на регион.

Требуется: собрать полную информацию о получателях и обеспечить компенсации регионам.

Решение

Сейчас это даже смешно перечитывать – формулировку из синопсиса. Она была у нас на входе и вполне соответствовала закону. Ну мы её и реализовали. Дурачки.

Итак, в первой версии системы размеры выплат были жёстко привязаны к их типам; для единовременных требовалось вводить все данные о получателе, а для постоянных можно было выбирать ФИО из прошлых периодов.

Первое, что подорвало нашу идеальную модель – время. Система была разработана и запущена в июле 2006 года и первое, что туда начали вводить – июльские данные. Однако требовалось сформировать отчёт и для первого полугодия, так что за июлем последовал июнь, май и прочие месяцы. А поскольку список постоянных получателей брался не из будущего, а из прошлого, регионалы начали вводить записи-дубликаты. Выявилась эта особенность при подсчёте уникальных получателей.

Но это была относительно ерунда. Дальше обнаружилось, что единовременная выплата может производиться в течение нескольких месяцев – частями. Это в том случае, когда кассовый остаток во всём регионе целый месяц не дотягивает до тысячи – по обоюдному согласию деньги выплачиваются в рассрочку.

Но то, понятно, в бедных республиках. А в богатых краях бывает ровно наоборот: гражданин признаётся страдавшим уже, скажем, три года как – и ему единовременно выдаётся выплата в 36-кратном размере. Но при этом она считается постоянной.

Случаются у нас и такие области, где принципиально ничего не выплачивают помесячно – только поквартально. Какой закон? Причём тут закон? Деньги дают – и ладно.

Однако многие регионы всё делали чётко по правилам. Их операторы первыми начали работу в системе и успели привыкнуть к прямой логике. Парадоксально, но именно их наличие порождало самые большие трудности. Реализовать все описанные мутации было относительно просто, но как потом объяснить разумному пользователю, откуда взялся весь этот бред в интерфейсе?

Так или иначе, на каждом шаге мы оформляли нововведение таким образом, что оно не обваливало всю наработанную логику, а смотрелось лишь маленьким дополнительным полем, отнюдь не обязательным для заполнения.


History.gif Это статья по истории. Она не имеет ни малейшего практического смысла.
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты