Skip to content

Commit a8665c9

Browse files
Update README.md
1 parent 4886f68 commit a8665c9

1 file changed

Lines changed: 121 additions & 14 deletions

File tree

README.md

Lines changed: 121 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,127 @@
1-
# timetable-backend
2-
Бэкэнд сервиса расписания студентов физфака
1+
# Сервис расписания
32

4-
# Установка
5-
## Google API
6-
* Чтобы подключить Google API, нужно создать приложение в google cloud console , получить client_secret.json
7-
и закинуть его в репозиторий
3+
Серверная часть сервиса хранения и управления информацией о расписании
84

9-
* https://developers.google.com/calendar/api/quickstart/python
5+
## Функционал
6+
1. Управление учебными группами, аудиториями
7+
2. Управление событями, комменатриями к событиям
8+
3. Управление преподавателями, фотографиями преподователей и комментариями к преподавателям
109

11-
## dotenv
12-
* Переименовать `.env.example` в `.env`
13-
* Внести в `.env` корректные переменные окружения
10+
- Про понятия использоованные в этом пункте можно почитать ниже(см. Основные абстракции)
1411

1512
## Запуск
16-
```console
17-
foo@bar:~$ python3 -m venv venv
18-
foo@bar:~$ pip install -r requirements.txt
19-
foo@bar:~$ uvicorn --reload --log-level debug calendar_backend.routes.base:app
13+
14+
1. Перейдите в папку проекта
15+
16+
2. Создайте виртуальное окружение командой и активируйте его:
17+
```console
18+
foo@bar:~$ python3 -m venv venv
19+
foo@bar:~$ source ./venv/bin/activate # На MacOS и Linux
20+
foo@bar:~$ venv\Scripts\activate # На Windows
21+
```
22+
23+
3. Установите библиотеки
24+
```console
25+
foo@bar:~$ pip install -r requirements.txt
26+
foo@bar:~$ pip install -r requirements.dev.txt
27+
```
28+
4. Запускайте приложение!
29+
```console
30+
foo@bar:~$ python -m calendar_backend
31+
```
32+
33+
## ENV-variables description
34+
35+
- `DB_DSN=postgresql://postgres@localhost:5432/postgres` – Данные для подключения к БД
36+
- `STATIC_PATH` - путь до папки, в которой лежит статика. например, фотографии преподавателей
37+
- `REQUIRE_REVIEW_PHOTOS` - требовать ли ревью фотографии преподавателя(Если нет, то она сразу ппоявится в выдаче. Если да, то нужно будет подтверждение этой фотографии от пользователя с достаточными скоупами)
38+
- `REQUIRE_REVIEW_LECTURER_COMMENT` - требовать ли ревью комментариев к преподавателям(аналогично `REQUIRE_REVIEW_PHOTOS`)
39+
- `REQUIRE_REVIEW_EVENT_COMMENT`- требовать ли ревью комментариев к событиям(аналогично `REQUIRE_REVIEW_PHOTOS`)
40+
- `SUPPORTED_FILE_EXTENSIONS` - поддеедживаемые форматы файлов. На данный момент форматы конкретно изображений.
41+
- Остальные общие для всех АПИ параметры описаны [тут](https://github.com/profcomff/.github/wiki/%5Bbackend%5D-Настройки-приложения)
42+
43+
## Основные абстракции
44+
45+
- `Учебная группа`. Имеет поля: номер, имя. В имя записывается название кафедры. В номер - номер группы, например 442м
46+
- `Преподаватель`. Имеет поля: Имя, Фамилия, Отчество, Описание. Описание можно загружать текстом в формате .md
47+
- `Фотография преподавателя`. Имеет отношение к конкретному преподавателю. Загрузить может любой пользователь и в зависимости от настроек приложения(см ENV-variables description) может выдаваться по запросу сразу или после аппрува этой фотографии от модератора. Ревью может быть как положительным, так и отрицательным.
48+
- `Комментарий к преподавателю`. Имеет отношение к конкретному преподавателю. Загрузить может любой пользователь и в зависимости от настроек приложения(см ENV-variables description) может выдаваться по запросу сразу или после аппрува этого комментария от модератора. Ревью может быть как положительным, так и отрицательным.
49+
- `Аудитория`. Имеет поля: номер и направление(север, юг), здание, урл до карты здания в Яндекс картах, например.
50+
- `Событие`. Одно событие может происходить сразу в нескольких аудиториям, сразу для нескольких групп, несколькими преподавателями. Событие имеет название, время начала и конца. Событие может быть не только парой, но и чем то иным. Например, пара - это событие. Мероприятие "Первый снег" - это событие
51+
- `Комментарий к событию`. Имеет отношение к конкретному событию. Загрузить может любой пользователь и в зависимости от настроек приложения(см ENV-variables description) может выдаваться по запросу сразу или после аппрува этого комментария от модератора. Ревью может быть как положительным, так и отрицательным.
52+
53+
54+
## Сценарий использования
55+
56+
### Создать группу
57+
58+
Дёрнуть ручку `POST /group`. вы передаете
59+
```json
60+
{
61+
"name": "string", // название кафедры
62+
"number": "string" // номер группы
63+
}
64+
```
65+
66+
### Создать аудиторию
67+
68+
Дёрнуть ручку `POST /room`. вы передаете
69+
```json
70+
{
71+
"name": "string", // название аудитории
72+
"building": "string", // название здания (например, Физический факультет)
73+
"building_url": "string", // урл до карты здания
74+
"direction": "North" // север/юг(если здание == Физический факультет)
75+
}
76+
```
77+
78+
### Создать преподавателя
79+
80+
Дёрнуть ручку `POST /lecturer`. вы передаете
81+
```json
82+
{
83+
"first_name": "string", // имя
84+
"middle_name": "string", // фамилия
85+
"last_name": "string", // отчество
86+
"description": "string" // описание в формате .md
87+
}
88+
```
89+
90+
### Создать событие
91+
92+
Дёрнуть ручку `POST /event`. вы передаете
93+
```json
94+
{
95+
"name": "string", // название
96+
"room_id": [0], // айдишники аудиторий, в которых оно проходит
97+
"group_id": [0], // айдишники групп, у которых оно проходит
98+
"lecturer_id": [0], // айдишники преподавателей, которые его ведут
99+
"start_ts": "2023-10-29T06:07:09.827Z", // время начала
100+
"end_ts": "2023-10-29T06:07:09.827Z" // время конца
101+
}
102+
```
103+
104+
### Получить список необработнных модераторами фотографий преподавателей
105+
106+
Дёрнуть ручку `GET /lecturer/photo/review`
107+
108+
### Ревью фотографии
109+
110+
Дёрнуть ручку `POST /lecturer/photo/review/{id}`. вы передаете
111+
```json
112+
{
113+
"action": "Approved" // Подтвердить фотографии или ("Declined")
114+
}
20115
```
116+
117+
### Ревью комментария
118+
119+
Дёрнуть ручку `POST /lecturer/{lecturer_id}/comment/{id}/review`. вы передаете action в query-string. С комментариями к событиям аналогично
120+
121+
## Contributing
122+
123+
- Основная [информация](https://github.com/profcomff/.github/wiki/%255Bdev%255D-Backend-%25D1%2580%25D0%25B0%25D0%25B7%25D1%2580%25D0%25B0%25D0%25B1%25D0%25BE%25D1%2582%25D0%25BA%25D0%25B0) по разработке наших приложений
124+
125+
- [Ссылка](https://github.com/profcomff/timetable-api/blob/main/CONTRIBUTING.md) на страницу с информацией по разработке timetable-api
126+
127+

0 commit comments

Comments
 (0)