diff --git a/frontend/src/stores/lectures.ts b/frontend/src/stores/lectures.ts index e8f2e3e..e7c259d 100644 --- a/frontend/src/stores/lectures.ts +++ b/frontend/src/stores/lectures.ts @@ -1,15 +1,14 @@ import { defineStore } from 'pinia' import { computed, ref } from 'vue' import { lecturesApi, usersApi } from '@/api' -import { mapApiLecture, mapApiReview } from '@/api/mappers' -import type { Lecture, Review } from '@/types' +import { mapApiLecture } from '@/api/mappers' +import type { Lecture } from '@/types' import type { LectureQuery } from '@/api/types' import { useUserStore } from './user' export const useLecturesStore = defineStore('lectures', () => { const lectures = ref([]) const registered = ref([]) - const reviewsByLecture = ref>({}) const loading = ref(false) const error = ref(null) @@ -65,14 +64,6 @@ export const useLecturesStore = defineStore('lectures', () => { } } - async function fetchReviews(lectureId: string) { - try { - reviewsByLecture.value[lectureId] = (await lecturesApi.reviews(lectureId)).map(mapApiReview) - } catch { - reviewsByLecture.value[lectureId] = [] - } - } - async function register(lectureId: string) { const lecture = lectures.value.find(item => item.id === lectureId) if (!lecture || lecture.freeSeats === 0 || lecture.registrationClosed || registered.value.includes(lectureId)) return @@ -111,7 +102,6 @@ export const useLecturesStore = defineStore('lectures', () => { return { lectures, registered, - reviewsByLecture, loading, error, all, @@ -120,7 +110,6 @@ export const useLecturesStore = defineStore('lectures', () => { fetchLectures, fetchLecture, fetchRegisteredForCurrentUser, - fetchReviews, register, unregister, isRegistered, diff --git a/frontend/src/views/student/DashboardView.vue b/frontend/src/views/student/DashboardView.vue index fc755a9..4617e3c 100644 --- a/frontend/src/views/student/DashboardView.vue +++ b/frontend/src/views/student/DashboardView.vue @@ -5,7 +5,6 @@ import { useAuthStore } from '@/stores/auth' import { useLecturesStore } from '@/stores/lectures' import { useUserStore } from '@/stores/user' import GlassCard from '@/components/ui/GlassCard.vue' -import StatsWidget from '@/components/ui/StatsWidget.vue' import LectureCard from '@/components/ui/LectureCard.vue' import ProgressBar from '@/components/ui/ProgressBar.vue' import AchievementBadge from '@/components/ui/AchievementBadge.vue' @@ -90,7 +89,6 @@ async function registerLecture(id: string) {
-
@@ -122,13 +120,6 @@ async function registerLecture(id: string) { -
- - - - -
-
@@ -186,7 +177,7 @@ async function registerLecture(id: string) {
- Напоминания + Увидомления
diff --git a/frontend/src/views/student/LectureDetailView.vue b/frontend/src/views/student/LectureDetailView.vue index 3961932..1bc2d59 100644 --- a/frontend/src/views/student/LectureDetailView.vue +++ b/frontend/src/views/student/LectureDetailView.vue @@ -21,14 +21,12 @@ const lecture = computed(() => lecturesStore.all.find(l => l.id === lectureId.va const isRegistered = computed(() => (lecture.value ? lecturesStore.isRegistered(lecture.value.id) : false)) const slotRegistrationDisabled = computed(() => !userStore.hasEnrollmentSlotAvailable && !isRegistered.value) const isAttended = computed(() => lecture.value?.status === 'completed') -const reviews = computed(() => lecturesStore.reviewsByLecture[lectureId.value] ?? []) const similarLectures = computed(() => lecturesStore.all.filter(l => l.id !== lectureId.value).slice(0, 3)) onMounted(async () => { if (!lecturesStore.all.length) await lecturesStore.fetchLectures() await lecturesStore.fetchLecture(lectureId.value) - await lecturesStore.fetchReviews(lectureId.value) }) async function registerLecture() { @@ -109,21 +107,6 @@ async function registerLecture() {
- - -
LLM-сводка отзывов
-

- Студенты отмечают «понятные примеры» и «много практики». Предлагается добавить больше времени на вопросы и - прикладные кейсы. Средняя оценка — 4.8/5. -

-
-
-
{{ review.userName }} {{ review.sentiment }}
-
{{ review.text }}
-
-
-

Отзывов пока нет.

-
@@ -155,11 +138,6 @@ async function registerLecture() { .info-value { font-weight: 700; } .info-sub { font-size: 13px; color: var(--color-text-secondary); margin-top: 4px; } .tags { display: flex; flex-wrap: wrap; gap: 6px; } -.summary { font-size: 14px; color: var(--color-text-secondary); line-height: 1.5; } -.reviews { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; } -.review { padding: 10px; border-radius: var(--radius-sm); background: rgba(255,255,255,0.6); border: 1px solid var(--color-border-glass); } -.review-head { font-weight: 600; margin-bottom: 4px; } -.review-body { font-size: 13px; color: var(--color-text-secondary); } .cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); diff --git a/frontend/src/views/student/ReviewFormView.vue b/frontend/src/views/student/ReviewFormView.vue index a6dcb7d..3fc799b 100644 --- a/frontend/src/views/student/ReviewFormView.vue +++ b/frontend/src/views/student/ReviewFormView.vue @@ -1,17 +1,19 @@ diff --git a/frontend/src/views/teacher/TeacherDashboardView.vue b/frontend/src/views/teacher/TeacherDashboardView.vue index 1544536..9e6ac7d 100644 --- a/frontend/src/views/teacher/TeacherDashboardView.vue +++ b/frontend/src/views/teacher/TeacherDashboardView.vue @@ -46,17 +46,7 @@ watch(() => auth.user?.id, fetchTeacherLectures) -
Заметность за пределами направления
-
-
- {{ visibility }}% студентов из других институтов -
- -
-
- - -
Ближайшие открытые лекции
+
Ближайшие лекции