-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
optimize getlecture #53
base: main
Are you sure you want to change the base?
Conversation
Coverage Report
Summary
|
rating_api/routes/lecturer.py
Outdated
result.mark_freebie, result.mark_kindness, result.mark_clarity = 0, 0, 0 | ||
|
||
for comment in approved_comments: | ||
result.mark_freebie += comment.mark_freebie | ||
result.mark_kindness += comment.mark_kindness | ||
result.mark_clarity += comment.mark_clarity | ||
|
||
general_marks = [ | ||
lecturer_to_result.mark_freebie, | ||
lecturer_to_result.mark_kindness, | ||
lecturer_to_result.mark_clarity, | ||
result.mark_freebie / len(approved_comments), | ||
result.mark_kindness / len(approved_comments), | ||
result.mark_clarity / len(approved_comments), | ||
] | ||
lecturer_to_result.mark_general = sum(general_marks) / len(general_marks) | ||
result.mark_general = sum(general_marks) / len(general_marks) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
result изначально имеет вид:
class LecturerGetAll(Base):
lecturers: list[LecturerGet] = []
limit: int
offset: int
total: int
А тут вместо добавления оценок лекторам, создаются новые поля в result и перезаписываются при каждой итерации по лектору
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Аналогично нужно поправить ручку get_lecturer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Также выкатили пр на тесты, так что стоит написать тесты на:
- Запрос всех лекторов с комментами
- Запрос одного лектора с комментами
- Запрос всех лекторов с оценками
- Запрос одного лектора с оценками
💩 Code linting failed, use |
💩 Code linting failed, use |
1 similar comment
💩 Code linting failed, use |
Изменения:
В get lecturer оставил всего один цикл for по всем комментариям, чтобы улучшить реализацию, а также, все проверки производятся на каждой итерации.
Детали реализации:
Простым языком, я ввёл переменные result.mark_freebie, result.mark_kindness, result.mark_clarity и в них на цикле for забиваются значения оценок по разным критериям, после вводим список general_marks в который кладем среднее арифметическое от оценок лежащих в каждом из resalts. После этого делаем последний шаг - Находим среднее арифметическое всех видов оценок (халявность, полярность, доброта). Вот и всё дорогой проверяющий.
Check-List
black
иisort
для Back-End илиPrettier
для Front-End?