# Документация # Проектная документация # Виденье проекта [https://docs.google.com/document/d/1MiBwh1aJ6nsGZyaqJgGu5FnaC\_Xvub0CWArW\_Endo8w/edit?usp=sharing](https://docs.google.com/document/d/1MiBwh1aJ6nsGZyaqJgGu5FnaC_Xvub0CWArW_Endo8w/edit?usp=sharing) # Функциональные требования [https://docs.google.com/document/d/1XaGeG-V8wc3K0vuZUWEoluA0S7fye5aCzVjIofLX6Fs/edit?usp=sharing](https://docs.google.com/document/d/1XaGeG-V8wc3K0vuZUWEoluA0S7fye5aCzVjIofLX6Fs/edit?usp=sharing) # Архитектура [https://gitlab.rarus.ru/dr-1C-retail/index-spp-doc](https://gitlab.rarus.ru/dr-1C-retail/index-spp-doc)# Принцип расчета индекса **1. Индекс** - отношение число посетителей к коммерческой площади объектов за N-периодичность, где N может принимать значения: день, неделя, месяц, квартал и год. Индекс всегда разбивается на N-периодичность. Правила выбора периода каждой N-периодичности: - день - календарный день - неделя - календарная неделя (с понедельника по воскресенье) - месяц - календарный месяц (с первого дня месяца по последний день месяца) - квартал - календарный квартал (с первого дня квартала по последний день квартала) - год - календарный год (с первого дня года по последний день года) **Общая формула расчета индекса:** [ ](https://rzn-wb-02.1c-hosting.com/uploads/images/gallery/2023-09/image-1695146709412.png), где [ -](https://rzn-wb-02.1c-hosting.com/uploads/images/gallery/2023-09/image-1695146736914.png) посещаемость объекта за m-день по счету периодичности, N - количество календарных дней в периодичности, S - площадь объекта. Например: **Объект:** ТЦ "Солнышко" **Площадь:** 136000 м^2. **Посещаемость**:
День | Посещаемость |
04.09.2023 | 460 792 |
05.09.2023 | 349 621 |
06.09.2023 | 347 337 |
07.09.2023 | 339 815 |
08.09.2023 | 340 794 |
09.09.2023 | 341 773 |
10.09.2023 | 350 024 |
11.09.2023 | 395 949 |
12.09.2023 | 354 614 |
13.09.2023 | 404 033 |
14.09.2023 | 363 209 |
15.09.2023 | 369 375 |
16.09.2023 | 351 758 |
17.09.2023 | 365 543 |
**Кейс (URL)** | **Право** | **Минимальное значение права** | **Сверка ORGANIZATION\_ID** |
Запрос данных из dadata. **POST: /dadata/suggest/address** | dadata | view | |
Запрос данных пресета запроса индекса (для отрисовки отчета беком). **GET: /index/query/preset/{preset\_id}** | index\_query\_preset | view | |
Запрос индекса в json **POST: /index/query** | index\_query | view | |
Экспорт индекса в файл **POST: /index/query/{format}** | index\_query | view | |
Запрос списка шаблонов запроса индекса **GET: /reports** | report | view | ✔ |
Запрос информации по конкретному шаблону запроса индекса **GET: /reports/{report\_id}** | report | view | ✔ |
Создание нового шаблона запроса индекса **POST: /reports** | report | edit | ✔ |
Изменение конкретного шаблона запроса индекса **PATCH: /reports/{report\_id}** | report | edit | ✔ |
Удаление конкретного шаблона запроса индекса **DELETE: /reports/{report\_id}** | report | edit | ✔ |
Запрос списка шаблонов рассылок **GET: /campaigns** | campaign (report?) | view | ✔ |
Запрос информации по конкретному шаблону рассылки **GET: /campaigns/{campaign\_id}** | campaign (report?) | view | ✔ |
Создание нового шаблона рассылки **POST: /campaigns** | campaign (report?) | edit | ✔ |
Изменение конкретного шаблона рассылки **PATCH: /campaigns/{campaign\_id}** | campaign (report?) | edit | ✔ |
Удаление конкретного шаблона рассылки **DELETE: /campaigns/{campaign\_id}** | campaign (report?) | edit | ✔ |
Запрос списка ролей **GET: /roles** | role | view | |
Запрос списка прав **GET: /roles/rights** | role | view | |
Создание новой роли **POST: /roles** | role | edit | |
Изменение конкретной роли **PATCH: /roles/{role\_id}** | role | edit | |
Удаление конкретной роли **DELETE: /roles/{role\_id}** | role | edit | |
Запрос списка пользователей **GET: /users** | user | view | ✔ |
Запрос информации по конкретному пользователю **GET: /users/{user\_id}** | user | view | ✔ |
Создание нового пользователя **POST: /users** | user | edit | ✔ |
Изменение конкретного пользователя **PATCH: /users/{user\_id}** | user | edit | ✔ |
Изменение пароля конкретного пользователя **PATCH: /users/{user\_id}/password** \* при изменении собственного пароля - без проверки ролей. | user, None\* | edit | None\* | ✔ |
Удаление конкретного пользователя **DELETE: /users/{user\_id}** | user | edit | ✔ |