Компания занимается онлайн образованием, бизнес процессы построены на 3-х платформах. Входная точка для клиента - Tilda, Crm для менеджеров построена на Amo, непосредственно сами онлайн-курсы реализуются на Getcourse.
Задачи: 1.1. При оплате курса клиентом необходимо передать информацию о сделке в Amo и завести учетную запись для клиента в Getcourse
1.2. Необходимо сделать адаптер между курсами как товарами на Сайте и Getcourse, тк у них разная логика каталогов.
1.3. Amo должна содержать информацию о результате добавления клиента в Getcourse
2.1. Необходимо реализовать программное ядро реферальной системы (вышеуказанные платформы не имеют готового решения)
2.2. Amo должна знать о приведенных клиентах, чтобы менеджеры могли начислять вознаграждение.
2.3. Участники реферальной программы должны иметь личный кабинет для контроля приведенных ими сделок.
Технологии к-е я использовал для решения: Python, Rest API, Json, Flask. Все требуемые процессы я реализовал посредством связи API трех платформ, тщательно обработал все предаваемые данные между платформами для адаптации их под разные интерфейсы и с точки зрения безопасности и отказоустойчивости.
В качестве БД я использовал сущности AMO (изначально реализовал на MySQL), но заказчик попросил хранение в одном месте.
В качестве frontend использовал Flask (дизайна и верстку не касаюсь).
Краткий тезисы по проекту из отчета заказчику: - Теперь алгоритм смотрит только последние оплаченные сделки.
- Именно оплата сделки - тригер внесения в getcourse. Если пользователь уже был внесен в getcourse ранее, но появилась новая сделка, то обновляются его Учебные группы в Getcourse из новой сделки.
- Тк пароль теряет свой смысл в силу авторизации на геткурсе через подтверждение емайла, то в поле getcousre в amo crm Теперь хранится id пользователя в getcourse (для быстрого поиска и взаимосвязи).
- Если в сделке в amo пользователь оплачивает сразу несколько товаров(курсов) то при внесении в getcourse пользователю добавляются Все эти курсы.
- Все запросы в api «подстрахованы», те если сервер занят скрипт не прекращает работу а делает паузу и повторный запрос.
- Происходит очистка результатов запросов от мусора и проверка их на целостность, чтобы не допустить внесение пользователей с ошибками.
- Учитывается и обрабатывается специфика наименования пользователя, поступающего в amo (в его имени содержаться ссылки и пр.)
- Настроено автоматическое обновление токена amo crm по их новой версии авторизации (токен устаревает раз в сутки, алгоритм автоматически его обновляет и сохраняет в файл).
- Протестированы след хостинги: Beget, Reg.ru, Timeweb, coder.com, c9.io, heroku, sprinthost. На каждом запрошен тестовый аккаунт и развернута виртуальная среда скрипта.
- В форме оплаты на marksteam.ru/shop теперь есть новое, необязательное поле «Реферальный промокод» - это 8-значное число, являющееся кодом уже существующего в AMO клиента.
- «Робот» реферальной системы отслеживает новые оплаченные сделки, поступающие в АМО, считывает из них если есть реферальный промокод (так же помечает сделку как обработанную реферальным роботом). Сохраняет этот факт, как отдельную сущность в базе АМО. Одновременно с этим новый клиент из свежей сделки автоматически уведомляется электронным письмом – о том, что он так же становится участником реферальной программы, с ссылкой на его личный кабинет.
- Для менеджера в АМО создан новый список- «Рефералы», который строится на БД реферальной системы (на сущностях АМО). В котором менеджер может видеть кто кого привел, на какой Товар и на какую сумму. Так же в списке есть checkbox «Выплата вознаграждения», которое менеджер должен отметить если рефералу вознаграждение было начислено.
- По ссылке, которая приходит каждому новому клиенту в АМО, пользователи могут видеть кто воспользовался их промокодом и начислено ли им за этот факт вознаграждение.
- Все процессы обменов данными (передача промокода, id клиента, данные сделки и тп) проверяются и очищаются на предмет ошибок, пропусков и т.п. Чувствительные по безопасности данные хранятся изолировано от web доступа.