Добавлены новые сообщения об ошибках и возможность повторной генерации уроков с использованием ИИ в компонентах LessonList и LessonForm. Обновлены локализации для поддержки новых функций.
This commit is contained in:
@@ -105,8 +105,31 @@ const LessonList = () => {
|
||||
useEffect(() => {
|
||||
if (isSuccessGenerateLessons) {
|
||||
console.log(generateLessons)
|
||||
|
||||
// Проверяем корректность ответа API
|
||||
if (typeof generateLessons?.body === 'string') {
|
||||
toast({
|
||||
title: t('journal.pl.lesson.aiGenerationError'),
|
||||
description: t('journal.pl.lesson.tryAgainLater'),
|
||||
status: 'error',
|
||||
duration: 5000,
|
||||
isClosable: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
}, [isSuccessGenerateLessons])
|
||||
}, [isSuccessGenerateLessons, generateLessons])
|
||||
|
||||
useEffect(() => {
|
||||
if (errorGenerateLessons) {
|
||||
toast({
|
||||
title: t('journal.pl.lesson.aiGenerationError'),
|
||||
description: t('journal.pl.lesson.tryAgainLater'),
|
||||
status: 'error',
|
||||
duration: 5000,
|
||||
isClosable: true,
|
||||
});
|
||||
}
|
||||
}, [errorGenerateLessons])
|
||||
|
||||
const onSubmit = (lessonData) => {
|
||||
toastRef.current = toast({
|
||||
@@ -201,11 +224,8 @@ const LessonList = () => {
|
||||
setSuggestedLessonToCreate(null)
|
||||
|
||||
// Сбрасываем флаги генерации, чтобы при повторном открытии формы
|
||||
// генерация запускалась снова
|
||||
if (generateLessons) {
|
||||
// Сбрасываем данные генерации (если в API есть такая возможность)
|
||||
// или при повторном открытии формы будем перезапрашивать данные
|
||||
}
|
||||
// генерация запускалась снова при необходимости
|
||||
// (особенно если была ошибка в предыдущей генерации)
|
||||
}
|
||||
|
||||
// Обработчик открытия формы создания новой лекции
|
||||
@@ -213,8 +233,12 @@ const LessonList = () => {
|
||||
setShowForm(true)
|
||||
|
||||
// Запускаем генерацию лекций только при открытии формы создания новой лекции
|
||||
// и если генерация ещё не была запущена
|
||||
if (isTeacher(user) && !editLesson && !generateLessons && !isLoadingGenerateLessons) {
|
||||
// и если генерация ещё не была запущена или предыдущая попытка завершилась с ошибкой
|
||||
const shouldGenerateAgain = !generateLessons ||
|
||||
typeof generateLessons?.body === 'string' ||
|
||||
errorGenerateLessons;
|
||||
|
||||
if (isTeacher(user) && !editLesson && (!isLoadingGenerateLessons && shouldGenerateAgain)) {
|
||||
generateLessonsMutation(courseId)
|
||||
}
|
||||
}
|
||||
@@ -226,6 +250,13 @@ const LessonList = () => {
|
||||
// Не запускаем генерацию при редактировании
|
||||
}
|
||||
|
||||
// Обработчик повторной генерации предложений ИИ
|
||||
const handleRetryAiGeneration = () => {
|
||||
if (isTeacher(user) && !isLoadingGenerateLessons) {
|
||||
generateLessonsMutation(courseId)
|
||||
}
|
||||
}
|
||||
|
||||
if (isLoading) {
|
||||
return <XlSpinner />
|
||||
}
|
||||
@@ -294,10 +325,11 @@ const LessonList = () => {
|
||||
lesson={editLesson || suggestedLessonToCreate || undefined}
|
||||
title={editLesson ? t('journal.pl.lesson.editTitle') : t('journal.pl.lesson.createTitle')}
|
||||
nameButton={editLesson ? t('journal.pl.edit') : t('journal.pl.common.create')}
|
||||
aiSuggestions={generateLessons?.body || []}
|
||||
aiSuggestions={generateLessons?.body}
|
||||
isLoadingAiSuggestions={isLoadingGenerateLessons}
|
||||
onSelectAiSuggestion={handleSelectAiSuggestion}
|
||||
selectedAiSuggestion={suggestedLessonToCreate}
|
||||
onRetryAiGeneration={handleRetryAiGeneration}
|
||||
/>
|
||||
) : (
|
||||
<Button
|
||||
|
||||
Reference in New Issue
Block a user