refactor: resolve the unexpected wrong payload

This commit is contained in:
Mahen 2026-04-13 13:41:16 +07:00
parent a684cd5a6e
commit 450e76cbe9
3 changed files with 23 additions and 4 deletions

View File

@ -7,8 +7,9 @@ import {
scrapeProduct, scrapeProduct,
getAIRecommendation, getAIRecommendation,
} from "../services/analyze.service"; } from "../services/analyze.service";
import { analyzeSchema } from "../app/validation/analyze.schema"; import { analyzeSchema } from "../app/validation/analyze.schema";
import { getMetricId } from "../services/metric.service"; import { getMetricId } from "../services/metric.service";
import { getBrandId } from "../services/brand.service";
export const useAnalyseText = () => { export const useAnalyseText = () => {
const { data: session } = useSession(); const { data: session } = useSession();
@ -145,12 +146,14 @@ export const useAnalyseText = () => {
} }
const metricIdValue = await getMetricId(); const metricIdValue = await getMetricId();
const brandId = await getBrandId(candidates[0].name);
console.log("Payload to AI:", { console.log("Payload to AI:", {
user_email: session.user.email, user_email: session.user.email,
metric_id: metricIdValue,
candidateCount: candidates.length, candidateCount: candidates.length,
totalReviews: candidates.reduce((acc, c) => acc + c.reviews.length, 0), totalReviews: candidates.reduce((acc, c) => acc + c.reviews.length, 0),
metric_id: metricIdValue,
brand_id: brandId,
}); });
setProgress({ status: "AI sedang menganalisis ulasan...", percent: 70 }); setProgress({ status: "AI sedang menganalisis ulasan...", percent: 70 });
@ -159,6 +162,7 @@ export const useAnalyseText = () => {
user_email: session.user.email as string, user_email: session.user.email as string,
candidates: candidates, candidates: candidates,
metric_id: metricIdValue, metric_id: metricIdValue,
brand_id: brandId as number,
}, },
{ signal: abortControllerRef.current?.signal }, { signal: abortControllerRef.current?.signal },
); );
@ -179,7 +183,7 @@ export const useAnalyseText = () => {
} catch (error: any) { } catch (error: any) {
if (error.name === "AbortError" || signal.aborted) { if (error.name === "AbortError" || signal.aborted) {
console.log("🛠️ Request dibatalkan secara aman."); console.log("🛠️ Request dibatalkan secara aman.");
return; return;
} }
console.error("Analysis Error:", error); console.error("Analysis Error:", error);

View File

@ -65,8 +65,9 @@ export const getAnalysisData = async (email: string) => {
export const getAIRecommendation = async ( export const getAIRecommendation = async (
payload: { payload: {
user_email: string; user_email: string;
metric_id: number | 1;
candidates: { name: string; url: string; reviews: string[] }[]; candidates: { name: string; url: string; reviews: string[] }[];
metric_id: number | 1;
brand_id: number | 1;
}, },
options?: { signal?: AbortSignal }, options?: { signal?: AbortSignal },
): Promise<AIRecommendationResponse> => { ): Promise<AIRecommendationResponse> => {

View File

@ -1,3 +1,4 @@
import prisma from "@/lib/prisma";
import { AnalysisData } from "../types"; import { AnalysisData } from "../types";
export const formatBrandStats = (userAnalysis: AnalysisData[]) => { export const formatBrandStats = (userAnalysis: AnalysisData[]) => {
@ -42,3 +43,16 @@ export const formatBrandStats = (userAnalysis: AnalysisData[]) => {
return formattedBrands; return formattedBrands;
}; };
export const getBrandId = async (brandName: string) => {
const brand = await prisma.brand.findFirst({
where: {
name: brandName,
},
select: {
brandId: true,
},
});
return brand?.brandId ?? null;
};