Веб-сервис для умной агрегации клиентских данных (единый клиент)

100 000 руб. за проект • наличный расчёт, безналичный расчёт, электронные деньги
31 марта 2017, 18:11 • 14 откликов • 113 просмотров
Краткая суть задачи: Нам нужен веб-сервис, который принимает по API клиентские данные разной полноты (может быть только ФИО, может ФИО + телефон, почта + телефон, имя + адрес и пр.) от сторонних систем. Один квант таких клиентских данных обзывается "эпизод".

Пришедший к нам эпизод на первом шаге причесывается через внешний сервис (например, https://dadata.ru). Тем самым, все имена, телефоны и прочие его атрибуты приводятся к единой стандартизированной форме. Вторым шагом этот новый эпизод сравнивается с уже хранимыми данными. Цель сравнения определить к какому именно клиенту нужно прикрепить этот новый эпизод (или создать нового клиента если эпизод ни с чем не совпал). Принятие данного решения (оценка при сравнении) не такое простое дело, как кажется. Мы сейчас используем бальную систему: сравниваем два эпизода, фамилия совпала? +10 баллов, электронная почта совпала? +50 баллов, имя не совпало? -30 баллов и т.д. По результатам набранных балов принимается решение о совпадении эпизодов и отнесении нового к тому или иному клиенту.

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

Т.о. требуется разработать и документировать (RAML?) протокол взаимодействия (API) между сервисом и внешними системами, которые шлют нам эпизоды и потом запрашивают полные данные. И, собственно, сам бэкенд с сервисом. Плюс минимальный web-интерфейс к нему, где можно посмотреть текущую ситуацию и сделать экспорт (CSV).

У нас уже есть работающее оффлайн-решение (MS Access). Сперва мы вручную валидируем входящие эпизоды через Dadata, потом загружаем их в БД, далее выполняется оценочное сравнение эпизодов и обновление атрибутов у клиентов. Теперь хотим тоже самое или лучше в виде веб-сервиса.

Особых требований к технологиям нет. Думали про Google App Engine + Google Cloud SQL, но решили, что не очень важно, можно и на VDS. Нагрузка низкая - до 100 входящих эпизодов в сутки.

Таблица с общей схемой взаимодействия:
https://docs.google.com/spreadsheets/d/1eFXsZgooO4...

ТЗ с деталями:
https://www.dropbox.com/s/a2ehdtso6a1uv2j/20160722...