Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/semyon-dev/znai-krai
Бэкенд и API проекта "Знай край"
https://github.com/semyon-dev/znai-krai
backend go google-sheets goolge-maps mongodb nonprofit-organizations znai-krai
Last synced: about 2 months ago
JSON representation
Бэкенд и API проекта "Знай край"
- Host: GitHub
- URL: https://github.com/semyon-dev/znai-krai
- Owner: semyon-dev
- License: other
- Created: 2020-03-27T19:59:31.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-01T20:34:50.000Z (over 1 year ago)
- Last Synced: 2024-06-19T23:14:48.162Z (7 months ago)
- Topics: backend, go, google-sheets, goolge-maps, mongodb, nonprofit-organizations, znai-krai
- Language: Go
- Homepage: https://znai-krai.zekovnet.ru/
- Size: 3.86 MB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Знай край
Бэкенд социального и некоммерческого проекта Руси Сидящей - Знай Край. Проект был начат [на хакатоне Новой Газеты](https://projector2020.te-st.ru/).### Используемые технологии на бэкенде
* Golang v1.14
* MongoDB
* Gin
* Google Sheets API
* Google Maps API
* Yandex Search API### Ссылки
* Сайт проекта [znai-krai.zekovnet.ru](https://znai-krai.zekovnet.ru/)
* Публичный API https://api.znai-krai.zekovnet.ru/ и https://api-znaikrai.herokuapp.com/
* Исходный код сайта: https://github.com/kniazevgeny/znaikrai### Лицензия
znai-krai is licensed under the [Creative Commons Attribution NonCommercial ShareAlike (CC-NC-SA)](https://github.com/semyon-dev/znai-krai/blob/master/LICENSE)Лицензия позволяет другим перерабатывать, исправлять и развивать проект на некоммерческой основе, до тех пор пока они упоминают оригинальное авторство и лицензируют производные работы на аналогичных лицензионных условиях. Все новые работы, основанные на этом проекте, должны иметь эту же лицензию, поэтому все производные работы также должны носить некоммерческий характер.
### Contributing
Мы открыты к предложениям и изменениям, вы можете испрользовать issues или [связаться с нами](https://t.me/semyon_dev).### Запуск
Необходимо добавить переменные окружения (можно через .env в корне проекта)
Подробнее смотрите пакет config
`go run main.go`
Или скомпилировать в единый бинарник:
`go build main.go`
### Документация к API методам
##### Публичные методыПротокол: HTTP, формат данных: JSON
методы для получения ФСИН учреждений
Все сразу
```
GET /places
```
Ответ: массив мест:
```
[
{"_id": "5ed2c5fd0c4a85b90ef09431",
"name": "ФКУ «ИК № 10 ГУФСИН по Приморскому краю»",
"type": "Исправительная колония",
"position": {
"lat": 43.987453,
"lng": 132.337293
},
"coronavirus": false,
"number_of_violations": 0},
]
```
Пояснение:
`_id` - уникальный id места (нужен для /places/:id) \
`name` - полное название учреждения \
`type` - тип колонии \
`position` - геолокация \
`coronavirus` - имеется ли информация о коронавирусе \
`number_of_violations` - кол-во нарушений по нашей информации \Конкретное место:
```
GET /places/
```
Пример ответа для запроса /places/5ed2c5fd0c4a85b90ef09431:
```
{
"place": {
"_id": "5ed2c5fd0c4a85b90ef09431",
"name": "ФКУ «ИК № 10 ГУФСИН по Приморскому краю»",
"type": "Исправительная колония",
"position": {
"lat": 43.987453,
"lng": 132.337293
},
"coronavirus": false,
"number_of_violations": 0,
"location": "Михайловский район, пос. Горное",
"notes": "",
"phones": [
"+7 (42346) 3-82-33",
"+7 (42346) 3-81-31"
],
"hours": "пн-пт 8:00–16:12",
"website": "http://25.fsin.su/kontaktnaya-informatsiya-po-uchrezhdeniyam-kraya.php?clear_cache=Y",
"address": "Россия, Приморский край, Михайловский район, поселок Горное, улица Ленина, 25",
"warning": "",
"violations": null,
"corona_violations": null
}
}
```
Помимо параметров из /places будут:
`location` - местоположение (Город, поселок и тд)
`notes` - заметки учреждения (из википедии)
`phones` - массив телефонов
`hours` - часы работы
`website` - веб сайт
`address` - полный адрес
`warning` - предупреждение (например, место нуждается в проверке)
`violations` - нарушения
`corona_violations` - информация о коронавирусеметоды для получения нарушений
Нарушения (в том числе по короне) есть только для конкретных учреждений
* получение всех нарушений у которых есть информация по коронавирусу \
`GET /corona_places`* получение всех нарушений \
`GET /violations`методы для получения аналитики
* пояснения по разным параметрам (скорее для аналитики) \
`GET /explanations`* аналитика по разным параметрам (общая статистика) \
`GET /analytics`
Пример ответа:
```
{
"total_count": 4995,
"total_count_appeals": 377,
"total_count_appeals_corona": 105,
"violations_stats": {
"communication": {
"total_count": 1124,
"total_count_appeals": 967,
"count_by_years": {
"2014": 54,
"2015": 103,
"2016": 99,
"2017": 76,
"2018": 104,
"2019": 2
},
"subcategories": {
"can_prisoners_submit_complaints": {
"total_count": 175,
"total_count_appeals": 366,
"values": {
"Да": 84,
"Затрудняюсь ответить": 107,
"Нет": 175
}
},
...
}
```
Параметры:
`total_count` - общее кол-во нарушений по всех заявкам и типам
`total_count_appeals` - общее кол-во заявок
`total_count_appeals_corona` - общее кол-во заявок по коронавирусу
`violations_stats` - категории аналитики, внутри:
`subcategories` - подкатегорииДругое
* получение всех вопросов для создания новых нарушений со стороны клиента `(/form)` \
`GET /formQuestions`##### Закрытые методы ([свяжитесь](https://t.me/semyon_dev), чтобы получить доступ)
Закрытые методы
* сообщение новых нарушений (форм, заявок)
```
POST /form
place_id string
Параметры нужно получать из GET /formQuestions
```* создание сообщений по коронавирусу (форм - заявок)
```
POST /form_corona
Параметры:
name_of_fsin string (название МЛС)
place_id string
region string
contacts string
info string
```* сообщение ошибок/багов
```
POST /report
Параметры:
email string
bug string
place_id string
name_of_fsin string
```* подписка на email рассылку
```
POST /mailing
Параметры:
name string (Имя)
email string (обязательный параметр)
```* Deprecated: отзывы с Google Maps
```
GET /reviews/
```