GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
21.8K subscribers
2.39K photos
87 videos
244 files
1.35K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.me/getanalystchat
Начинающим в IT @getanalyststart
Download Telegram
🌆 #CityGA - новый проект на Интеграцию с #KudaGoAPI и #DashamailAPI 🌆

Планы на выходные без бесконечного скролла — система для городов #CityGA сама найдёт события под ваши интересы и раз в неделю пришлёт подборку «куда сходить» в приложении и на почту.


🟢 Сценарий к проектированию:
1. Пользователь настраивает город, категории мероприятий и ключевые слова по ним.
2. По расписанию система собирает актуальные события из KudaGo, фильтрует и ранжирует под каждого пользователя.
3. Готовит подборку внутри приложения и отправляет на email через Dashamail.


👉 Что предстоит сделать для решения задачи на Интеграцию:
1. Выделить ключевые Use Case - сценарии работы пользователя.
2. Провести первичный анализ KudaGo API и Dahamail API: наличие нужных методов, рекомендуемый порядок интеграции.
3. Определить влияние интеграции на архитектуру системы.
4. Протестировать платёжное API Kadago и API Dashamail в Postman, чтобы понять, как они реально работают.
5. Описать интеграционные Use Cases: логику работу системы с техническими деталями.
6. Сформировать требования для интеграционных REST API-методов.
7. Дополнить требования UML-диаграммами.
8. Описать маппинги данных и доработки БД

Будем последовательно разбирать эти шаги для проекта весь следующий месяц.


Результат:
Отработанный кейс интеграции от анализа до реализации.
✔️ Постановки задач на интеграцию на разработчиков в Confluence
✔️ Архитектура проекта в C4
✔️ UML-диаграмма процесса
✔️ Маппинг данных для UI+API+БД
✔️ Коллекция Postman-запросов для KudaGo API и Dahamail API


Проект #CityGA разбираем в поддержку практической программы Интеграции систем 🧩


Готовы получить новый опыт и знания?
Подписывайтесь на GetAnalyst и следите за обновлениями!

Добро пожаловать в проект! 🤝

#ИнтеграцииGA
🔥347❤‍🔥3
🧐 Анализ API-документации KudaGo: что нужно перед интеграцией 🧐

Прежде чем проектировать интеграцию, нужно разобраться, возможна ли она вообще.

Для этого мы, как системные аналитики, должны проанализировать API-документацию и найти ключевые разделы, которые помогут ответить на этот вопрос.

Разбираемся на примере #KudaGoAPI, как анализировать API-документацию.

Документация
Вводная страница

Вид API
Нигде явно не указан.
HTTPs-запросы.
Все GET - так как получение данных.
Все POST/GET = HTTP API.
Это можно назвать REST like API, так как по факту в публичной документации только запросы на получение данных и метод GET выбран верно.

Авторизация и аутентификация
Не требуется.
Этот раздел отсутствует.
Это публичный API без ограничений на использование.

Тестовые доступы
Не нужны, так как это публичный API на чтение и никаких данных для авторизации к API тоже нет.

Рекомендации по использованию API
Отсутствуют.
Получаем данные в любом порядке и используем на своё усмотрение.

Ограничения и особенности
Даже если на сервере KudaGo есть ограничение на количество запросов с одного ip-адреса, что очень даже вероятно, то его не указали в документации :)

Общие требования к обработке ошибок
Нет. Описаны на уровне отдельных запросов.
Например, для списка городов.


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

Сначала продумываю интеграционные Use Cases, не зная деталей внешнего API. А потом подбираю нужные методы.

Для нашей задачи с #CityGA нужны будут методы, связанные с получением мероприятий и событий в городах:
Список городов - их id используются в остальных методах
Список событий
Список мест, куда сходить
Список показов для фильмов в кино

Эти методы мы будем использовать для информирования пользователей о событиях в городе по их личным предпочтениям.

Это простая API-документация для анализа. И у нас ещё есть более интересная интеграция с системой email рассылок DashaMail, которую мы также проанализируем 🤝

#ИнтеграцииGA
🔥274👍4❤‍🔥1
Гайд по Postman - KudaGo и DashaMail [GetAnalyst].pdf
16.3 MB
📙 Практический гайд по Postman - тестирование #KudaGoAPI и #DashaMailAPI 📙

Одним из первых и важнейших шагов при интеграции с внешней системой является исследовательское тестирование API. Например, через Postman.

Почему?
👉 Документация может быть устаревшей или неполной.
👉 В ней могут отсутствовать примеры или важные детали о полях.
👉 API может вести себя иначе, чем предполагается по описанию.
Аналитик начинает «угадывать», как оно работает, и ставит задачи разработке наобум.

В итоге — ошибки в логике, лишняя переписка с разработчиками, затянутое внедрение и разочарование от интеграции, которая
«не взлетела с первого раза»....

❗️ Именно поэтому исследовательское тестирование API — это не просто полезный навык, а необходимая часть работы аналитика при интеграции.

Чтобы погрузиться в процесс исследовательского тестирования API на практике для проекта #CityGA, подготовила для вас практический гайд по тестированию в Postman:
🔸 KudaGo API
🔸 DashaMail API

Внутри:
1. Погружение в Postman с нуля
2. Инструкция по получению API-ключа для DashaMail (ключ GetAnalyst, чтобы не проходить шаг запроса ключа у тех. поддержки - получить тут)
3. Пошаговая инструкция по тестированию KudaGo API
4. Пошаговая инструкция по тестированию DashaMail API

Выполняйте задания по инструкции и пробуйте решать задания из гайда. Если что-то не получается, то вопросы можно задавать в комментариях.

Сохраняйте в избранное и обязательно выполните эту практику до конца этой недели 🤝

#ИнтеграцииGA
520🔥5👍31❤‍🔥1
⭐️ Интеграционный Use Case: разбираемся на примере интеграции с #KudaGoAPI и #DashaMailAPI ⭐️

Интеграционный Use Case отличается от обычного тем, что он содержит технические детали:
+ вызовы API,
+ сохранение данных в БД,
+ обмен данными между микросервисами через брокеры,
+ и другие.

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

Разбираемся подробнее на примере для #CityGA, где у нас UI в процессе работы вообще отсутствует 😱


📌 Use Case:
+ Автоматическая рассылка событий по расписанию

👉 Приложения и системы:
+ Backend CityGA
+ Kafka Broker

👉 Внешние системы:
+ KudaGo API
+ DashaMail API

👉 Предусловия:
+ Для каждого города задан часовой пояс
+ В CityGA сохранены предпочтения пользователей по категориям и выбран город
+ В DashaMail заранее созданы адресные списки под каждую группу категорий
+ В Kafka создан топики notifications.email.events для получения сообщений о необходимости запуска рассылки


👉 Основной сценарий:

1. Для каждого поддерживаемого города в системе еженедельно, по средам, в 10:00 его часового пояса, срабатывает планировщик задач в Backend.

2. Backend рассчитывает окно предстоящей недели - с чт по ср.
Пример:
Сегодня 17 сентября 2025 (ср).
Плановое окно для выбора новых мероприятий:
18.09.2025 00:00 → .24.09.2025 23:59:59 (GMT+3).
Для KudaGo это Unix-секунды:
actual_since=1758178800,
actual_until=1758783599.


3. Выполняется первичный запрос по событиям в выбранном городе на указанный период, без фильтра по категориям, в API KudaGo:
GET /public-api/v1.4/events

+
Получаем до 10 записей за один запрос от KudaGo
+ Использовать порядок сортировки favorites_count при получении данных от KudaGo
+
Исключать события «всегда доступно»/«без времени» - фильтрация на стороне CityGA

3.1. Сформировать сообщение в топик Kafka notifications.email.events для отправки рассылки, со списком из 10 полученных событий от KudaGo и с id листа подписчиков на город, у которых не настроены фильтры по категориям.


4. Далее повторять запрос по событиям в выбранном городе на указанный период, через API KudaGo, с фильтрами по категориям.
GET /public-api/v1.4/events

Например:
+ у одной группы пользователей в избранном только бизнес-события, выполнить запрос только с фильтром по этой категории на 10 записей;
+ у другой группы пользователей в избранном бизнес-события и детские мероприятия, выполнить запрос только с фильтром по этим двум категориям на 10 записей;
и т.д.

4.1. По каждому уникальному набору фильтров формировать сообщение в топик Kafka notifications.email.events для отправки рассылки, со списком из 10 полученных событий от KudaGo и с id листа подписчиков.

Повторять 4 и 4.1 для всех уникальных наборов категорий у пользователей в городе.

-------

5. Сервис Уведомлений последовательно читает сообщения из брокера Kafka.

5.1. После считывания очередного сообщения Сервис Уведомлений формирует HTML шаблон письма для рассылки.

5.2. Сервис Уведомлений вызывает API DashaMail для создания и отправки рассылки, передавая на вход созданный HTML-шаблон, id листа контактов из DashaMail и другие параметры (см. маппинг), метод:
campaigns.create


5.3. Сервис Уведомлений логирует вызов метода внешней системы.

-------


👉 Альтернативные сценарии и дополнительные детали
Всё будет, но не сейчас.
Оформим в Confluence 😎


Это первый подход к описанию логики работы системы.
Use Case ещё будет доработан.


📌 Вопросы,которые остаются после первого подхода к написанию интеграционного Use Case:
А. Есть ли у вас предложения по улучшению логики работы (алгоритма)?
Б. Должны ли мы что-то в процессе работы сохранить в БД?
В. Дейстительно ли метод campaigns.create сразу создает и отправляет рассылку? Нужны дополнительные действия?
Г. Можем ли мы фильтровать события «всегда доступно»/«без времени» на стороне KudaGo?
Д. Откуда мы получаем комбинации категорий?

Это то, что сейчас точно упущено в Use Case.

Рассуждайте, пробуйте отвечать на мои вопросы и задавайте свои в комментариях 🙌 Будем улучшать его вместе!


#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥17👍6🔥43
GetAnalyst_Сбор_данных_о_событиях_в_городе_из_KudaGo_по_расписанию.pdf
1.2 MB
⭐️ Шаблон задачи на Интеграцию для Confluence:
📌 Пример интеграции Kafka + Backend + БД + Внешняя система
⭐️

В этом месяце мы разбираем интеграционный процесс в системе #CityGA:
автоматическая рассылка мероприятий для города, получаемых из #KudaGoAPI, с отправкой email пользователям через #DashaMailAPI.


Прежде чем поставить задачу на интеграцию, мы:
Описали архитектуру в C4
Изучили API-документацию внешних систем
Выполнили исследовательское тестирование API в Postman
Сделали черновой Use Case по процессу
Показали процесс на UML-диаграмме


❗️ Несмотря на то, что в Use Case рассылка email и сбор данных были объединены, на самом деле это два разных процесса и две разных задачи на разработку.

Почему?
Kafka используется, чтобы вынести отправку email в отдельный асинхронный поток. Основная джоба перебирает связки город + категории и готовит данные, а затем отправляет их в Kafka. Уже после этого сервис уведомлений независимо обрабатывает события (сообщения) и рассылает письма.

Так мы не блокируем работу основного Backend и делаем процесс более надёжным и масштабируемым: сбор данных и рассылка работают параллельно, каждый в своей зоне ответственности.



⭐️ Подготовила для вас заполненный шаблон постановки задачи на интеграцию с внешней системой KudaGo и внутренней интеграцией с Kafka.

Внутри:
▫️ общее описание процесса
▫️ схема архитектуры в C4 — только часть, относящаяся к автоматизации этого процесса
▫️ детальный технический Use Case с альтернативными сценариями
▫️ пример JSON-сообщения для Kafka
▫️ UML Sequence для описанного Use Case с исходным кодом для PlantUML
▫️ маппинги данных: БД–Kafka–API KudaGo
▫️ требования к логированию.



🔖 Cохраняйте образец требований на интеграцию в личный архив. Примеры всегда полезны 😉

#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
27🔥13😱1
🧩 Маппинг в интеграциях - что это и зачем 🧩

Маппинг - это процесс сопоставления полей (данных) из одной системы с соответствующими полями в другой системе.
Это нужно, так как разные системы могут описывать один и тот же объект данных по-разному.

➡️ Этот процесс всегда необходим в задачах на интеграции.



Маппинг описывают в виде таблицы.
Допустимо делать и в виде структурированного списка, но по опыту - таблицы удобнее.

➡️ В таблице с маппингом делают несколько основных колонок:

▫️ название параметра на разговорном языке;
▫️ описание, требования к валидации, ФЛК (форматно-логический контроль) и преобразованиям, если это необходимо;
▫️ названия параметра в API каждой системы (например, поле из JSON, поле из xml или другого формата сообщения, query из URL и др);
▫️ название параметра в БД системы, если она есть в описании Use Case.
▫️ типы данных в каждой системе / БД.

Допустима вариативность с колонками.
Их может быть больше, а может быть и меньше.



Для задачи #CityGA в примере постановки задачи есть два маппинга:

👉 1. БД CityGA - API KudaGo
При запросе данных из KudaGo необходимо брать часть параметров из БД и подставлять в #KudaGoAPI.

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

👉 2. БД CityGA - API KudaGo - Kafka (json)
🖼 На картинке к посту показала наглядно
После получения ответа от #KudaGoAPI, формируется сообщение для Kafka, на основе которого сервис уведомлений затем будет делать рассылку.

Видно, что данные в JSON-ответе от #KudaGoAPI расходятся с JSON-сообщением для Kafka. Часть данных в сообщении Kafka из БД CityGA.

Чтобы показать разработчикам на основе каких данных формируется JSON для Kafka, мы сделали соответствующую таблицу маппинга.



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

Это обязательная часть требований в задачах на интеграции 🙌

#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍239