Немного айтишного нытья вам в ленту, из рубрики "Пригорело".
У меня есть небольшой интернет-магазин.
И, владея некоторыми навыками программирования в 1С, решил немного подкрутить себе конфигурацию, чтобы иметь возможность делать заказы в службе доставки и отслеживать статусы. Бог мой, я не знал, во что я влезаю. Я был радостным и жизнерадостным ребенком 30 лет, почему меня никто не предупредил, что я поседею и начну трястись при одной мысли об IT?
Я решил начать с Деловых Линий. Самые популярные потому что. Богатенькие, заказали всё у специализированной конторы, биатех. Сходил, почитал их документацию на dev.dellin.ru, вроде с первого взгляда все понятно, приступил. Меня обнадеживал тот факт, что адреса у меня уже к тому моменту в базе сохранялись с УИДами адресных объектов согласно базе ФИАС.
Ну, думаю, ключевые данные у меня уже есть, остальное раз плюнуть. Что мне нужно клиенту? Калькулятор это потом, для начала мне надо вообще определить, есть ли по адресу клиента терминалы деловых. Казалось бы, чего проще, адрес есть, УИД ФИАС есть. Пишу запрос к АПИ. И тут....
Проблема 1. Нельзя получить терминалы в городе по УИД ФИАС. Нельзя получить и терминалы по коду КЛАДР. Нельзя вообще никак получить терминалы, кроме как одним огромным куском JSON. Гм......
А, я догадался. Вы хотите, чтобы я хранил все терминалы у себя, и не дергал сервер каждый раз. Отлично. Завожу у себя в БД таблицу, начинаю парсинг JSON.
Проблема 2. В файле нет никакого указания на то, что это за город, кроме двух(!!!) их внутренних ID и КЛАДР.
КЛАДР, в 21 веке? Неподдерживаемый уже давно, устаревший и прочая... Вы серьезно? Ну.... хрен с вами. Наверное где-то можно список какой-то получить, да?
Да. Нашел метод. Он возвращает... Что? JSON? Нет, что вы. Ссылку. А по ней - файл в формате CSV....
Пишу парсер, чтобы получать адресный объект по КЛАДР.
И....
Проблема 3. У ник какие-то свои коды КЛАДР.
WTF???? Свои коды? Твою ж мать, как мне город чертов ваш получить, где терминал ваш гребаный расположен?
Ну ок. Наверняка есть справочник городов, да? Нашел, действительно есть. Пишу запрос к API. Он возвращает.... Что? JSON? Нет. XML? Опять нет. Он возвращает URL. На файл в формате CSV:
Ну хрен с ним. Качаю файл с городами, начинаю парсинг. Всего 4 поля.
Фак. Этого явно недостаточно. В России многие города существуют в десятках версий. Например есть как минимум 2 Кирова, множество Алексеевок и т.п. Охрененный справочник. Как сопоставить-то их города с настоящими? Наверное есть еще что-то?
Ищу. Есть.
Ну конечно, разработчики позаботились. Еще один файл на 40 Мб, все деревня и веси, несколько сотен тысяч записей. 7 полей, в том числе ID и КЛАДР. Окей, пишу запрос, качаю, готовлюсь сшивать два файла в одну таблицу по полю кладр. Иииии......
Проблема 4. В этих файлах РАЗНЫЕ коды кладр. Разной длины, и вполне возможно что разные и не только по длине. Так как они какие-то их там собственные внутренние. Ааааааа четыреждылядская ярость, да как так-то? Зачем вам 2 разных кода КЛАДР?
Ну хорошо, сошьем по ИДшнику. И.....
Проблема 5. А вот хрен там. Это разные ИДшники. В одной таблице ИДшник - числовой, во второй - строка УИД. УИД? Откуда он там сссука? Что он вообще там делает? Зачем их столько разных? Как сшить ваши две сраные таблицы?
Как, господа из биатека? Кааак сцуко вы могли наплодить столько бесполезных полей(3 ИДшника и 2 кода КЛАДР - пять!!!! полей для идентификации адресного объекта. И вроде как все должны быть уникальными), и так по-ублюдски спроектировать API, чтобы для создания локальной копии терминалов надо было заниматься вот таким вот?
сокращу свое нытье. В общем, еще два дня я трахался с их API.
1) Нет никакой возможности определить надежно адресный объект(населенный пункт), где расположен тот или иной терминал. База ФИАС уже много лет лежит и обновляется, но у биатека свой глобус пилять. Нафига давать клиенту эту информацию, да? Главное что мы в биатеке знаем, и хорошо.
2) невозможно даже просто получить нормальный список городов, где расположены терминалы. Списки приходят, но определить город при парсинге однозначно невозможно.
3) Куча ошибок в координатах. Из-за чего использование геокодера яндекса мне не помогло в коррекции ошибок
4) в апи заявлен функционал поиска по адресам - он, ну естественно, не работает. Вообще. То есть "Москва, ул. Ленина, д. 1, кв. 10" ищет, а "Москва, ул. Ленина, д. 1, оф. 10" - нет. И делай что хочешь
По итогам: API (именно в роли API) - нерабочий.
Работать начинает только если ты каким-то образом умудрился получить копию справочников себе однажды без ошибок.
Я не знаю, сколько руководство Деловых башляет биатеку, но за такое по сути практически нерабочее говно с них еще и денег брать надо, вы лишаете своих клиентов возможности нормально работать по API и снижать операционные затраты.