обработка пустышек в вопросах АИ

This commit is contained in:
Nastya 2025-07-07 03:28:51 +03:00
parent b43ef6d219
commit b671a85505
5 changed files with 33 additions and 5 deletions

@ -2,7 +2,7 @@ import useSWR from "swr";
import { getAndParceData } from "./quizRelase"; import { getAndParceData } from "./quizRelase";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { initDataManager, statusOfQuiz } from "@/utils/hooks/useQuestionFlowControl"; import { initDataManager, statusOfQuiz } from "@/utils/hooks/useQuestionFlowControl";
import { addQuestions, setQuizData, useQuizStore } from "@/stores/useQuizStore"; import { addQuestions, changeNextLoading, setQuizData, useQuizStore } from "@/stores/useQuizStore";
/* /*
У хука есть три режмиа работы: "line" | "branch" | "ai" У хука есть три режмиа работы: "line" | "branch" | "ai"
@ -74,10 +74,17 @@ export function useQuizData(quizId: string, preview: boolean = false) {
limit: 1, limit: 1,
needConfig: false, needConfig: false,
}); });
console.log(
"AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE AI RESPONSE "
);
console.log(data);
addQuestions(data.questions); addQuestions(data.questions);
changeNextLoading(false);
return data; return data;
} catch (_) { } catch (p) {
console.log(p);
setPage(questions.length); setPage(questions.length);
changeNextLoading(false);
} }
} }
}, },

@ -168,8 +168,10 @@ export async function getAndParceData(props: GetDataProps) {
} }
//Парсим строки в строках //Парсим строки в строках
console.log("до парса_______________________");
const quizSettings = replaceSpacesToEmptyLines(parseQuizData(quizDataResponse)); const quizSettings = replaceSpacesToEmptyLines(parseQuizData(quizDataResponse));
console.log("после парса_______________________");
console.log(quizSettings);
//Единоразово стрингифаим ВСЁ распаршенное и удаляем лишние пробелы //Единоразово стрингифаим ВСЁ распаршенное и удаляем лишние пробелы
const res = JSON.parse( const res = JSON.parse(
JSON.stringify({ data: quizSettings }) JSON.stringify({ data: quizSettings })

@ -27,6 +27,7 @@ export interface GetQuizDataResponse {
} }
export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizSettings, "recentlyCompleted"> { export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizSettings, "recentlyCompleted"> {
console.log(quizDataResponse);
const readyData = { const readyData = {
cnt: quizDataResponse.cnt, cnt: quizDataResponse.cnt,
show_badge: quizDataResponse.show_badge, show_badge: quizDataResponse.show_badge,
@ -35,8 +36,22 @@ export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizS
} as QuizSettings; } as QuizSettings;
const items: QuizSettings["questions"] = quizDataResponse.items.map((item) => { const items: QuizSettings["questions"] = quizDataResponse.items.map((item) => {
const content = JSON.parse(item.c); const content = item.c
? JSON.parse(item.c)
: {
hint: { text: "", video: "" },
rule: { children: [], main: [], parentId: "", default: "" },
back: "",
originalBack: "",
autofill: false,
placeholder: "",
innerNameCheck: false,
innerName: "",
required: false,
answerType: "single",
onlyNumbers: false,
};
if (item.c) content.id = Math.floor(Math.random() * 9999999999) + 1;
return { return {
description: item.desc, description: item.desc,
id: item.id, id: item.id,
@ -51,6 +66,7 @@ export function parseQuizData(quizDataResponse: GetQuizDataResponse): Omit<QuizS
readyData.questions = items; readyData.questions = items;
if (quizDataResponse?.settings !== undefined) { if (quizDataResponse?.settings !== undefined) {
console.log("попытка парсануть сеттингс", quizDataResponse.settings);
readyData.settings = { readyData.settings = {
fp: quizDataResponse.settings.fp, fp: quizDataResponse.settings.fp,
rep: quizDataResponse.settings.rep, rep: quizDataResponse.settings.rep,

@ -13,5 +13,6 @@ const isProduction = !(
//туризм больше не в исключениях //туризм больше не в исключениях
if (!isProduction) domain = "https://s.hbpn.link"; if (!isProduction) domain = "https://s.hbpn.link";
domain = "https://hbpn.link";
export { domain, isProduction }; export { domain, isProduction };

@ -44,6 +44,8 @@ export function useAIQuiz() {
useEffect(() => { useEffect(() => {
if (currentQuestion.type === "result") showResult(); if (currentQuestion.type === "result") showResult();
if (currentQuestion) changeNextLoading(false); if (currentQuestion) changeNextLoading(false);
console.log("questions");
console.log(questions);
}, [currentQuestion, questions]); }, [currentQuestion, questions]);
//Показать визуалом юзеру результат //Показать визуалом юзеру результат