Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 3.11 KB

README.md

File metadata and controls

48 lines (35 loc) · 3.11 KB

Архитектура микросервисная.

Backend.

Бэк опрашивает группы раз в 5 минут, новые посты анализирует, находит GEO из текста, кладет в базу. Существующие посты обновляются, если имело место редактирование. Сейчас работа ведется только с одной группой, добавить еще - дело 5 минут.

Для обработки текста используется https://www.pullenti.ru/ Для получения координат по адресу Google Geo API БД: mongo

API

  • для получения N штук из базы /api/posts
  • для получения новых, чтобы отправить всем подписчикам оповещение /api/posts&onlyNew=true
  • служебное API

В api можно задать:

  • геолокацию пользователя - строкой [geo]
  • количество [count] - по умолчанию: 5
  • [distance] - параметр, от которого зависит, насколько рядом нужно искать точки раздачи еды. Задается в метрах. По умолчанию 3000.

Параметр distance имеет ограничения применения. Например "город Санкт-Петербург" определится где-то в центре (широта/долгота),а если человек будет искать на окраине, то ему оповещалки не придут. Точность системы полностью зависит пользователей: насколько корректно они напишут адрес.

Для запуска приложения нужно создать файл .env и определить переменные: VK_APP_ID VK_APP_SECRET VK_APP_TOKEN SESSION_SECRET GOOGLE_API_KEY PORT=80 (используется в docker container) HOST=0.0.0.0 (специально для docker container)

Запуск: docker-compose up [-d] web

Для улучшения работы получения адреса из текста нужно разобраться с TerminCollection в pullenti Но в ближайшее время ожидаеся обновление: будут добавлены станции метро РФ и другие мелкие фиксы.

Бот

https://github.com/AnastasiaKolev/telegrambot-foodsharing Опрашивает бэк (в дальнейшем - бэк сам будет отправлять эвенты) на предмет новых сообщений. Хранение юзеров реализуется на стороне бота, но в дальнейшем необходимо сделать отдельный user service.

P.S.:

Разработанный проект является прототипом, который нельзя использовать на постоянное основе "как есть" без внедрения систем безопасности.