add api
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
'use server';
|
'use server';
|
||||||
|
|
||||||
import React, { useState } from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import { AccountWithParams } from '@/packages/features/accounts/src/types/accounts';
|
import { AccountWithParams } from '@/packages/features/accounts/src/types/accounts';
|
||||||
|
|
||||||
@@ -15,14 +15,14 @@ export default async function Recommendations({
|
|||||||
account: AccountWithParams;
|
account: AccountWithParams;
|
||||||
}) {
|
}) {
|
||||||
const { analyses, countryCode } = await loadAnalyses();
|
const { analyses, countryCode } = await loadAnalyses();
|
||||||
const [isLoadingTimeSlots, setIsLoadingTimeSlots] = useState(false);
|
|
||||||
const analysisResults = analysisResponses;
|
const analysisResults = analysisResponses;
|
||||||
console.log('selectedDate', isLoadingTimeSlots);
|
|
||||||
const analysisRecommendations = await loadRecommendations(
|
const analysisRecommendations = await loadRecommendations(
|
||||||
analysisResults,
|
analysisResults,
|
||||||
analyses,
|
analyses,
|
||||||
account,
|
account,
|
||||||
);
|
);
|
||||||
|
|
||||||
const orderAnalyses = analyses.filter((analysis) =>
|
const orderAnalyses = analyses.filter((analysis) =>
|
||||||
analysisRecommendations.includes(analysis.title),
|
analysisRecommendations.includes(analysis.title),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import { cache } from 'react';
|
import { cache } from 'react';
|
||||||
|
|
||||||
import { AccountWithParams } from '@/packages/features/accounts/src/types/accounts';
|
import { AccountWithParams } from '@/packages/features/accounts/src/types/accounts';
|
||||||
|
import { getSupabaseServerClient } from '@/packages/supabase/src/clients/server-client';
|
||||||
|
import { createServerClient } from '@supabase/ssr';
|
||||||
import OpenAI from 'openai';
|
import OpenAI from 'openai';
|
||||||
|
|
||||||
import PersonalCode from '~/lib/utils';
|
import PersonalCode from '~/lib/utils';
|
||||||
@@ -75,18 +77,30 @@ async function recommendationsLoader(
|
|||||||
if (!account?.personal_code) {
|
if (!account?.personal_code) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
const supabaseClient = getSupabaseServerClient();
|
||||||
|
|
||||||
const client = new OpenAI();
|
const analysesRecommendationsPromptId =
|
||||||
const { gender } = PersonalCode.parsePersonalCode(account.personal_code);
|
'pmpt_68ca9c8bfa8c8193b27eadc6496c36440df449ece4f5a8dd';
|
||||||
console.log('analysisResponses', analysisResponses);
|
|
||||||
console.log('analyises', analyses);
|
|
||||||
const latestUniqueAnalysResponses =
|
const latestUniqueAnalysResponses =
|
||||||
getLatestUniqueAnalysResponses(analysisResponses);
|
getLatestUniqueAnalysResponses(analysisResponses);
|
||||||
// const latestResponseTime = getLatestResponseTime(latestUniqueAnalysResponses);
|
const latestResponseTime = getLatestResponseTime(latestUniqueAnalysResponses);
|
||||||
// const latestISO = latestResponseTime
|
const latestISO = latestResponseTime
|
||||||
// ? new Date(latestResponseTime).toISOString()
|
? new Date(latestResponseTime).toISOString()
|
||||||
// : 'none';
|
: 'none';
|
||||||
// console.log('latestResponseTime', latestResponseTime);
|
|
||||||
|
const previouslyRecommended = await supabaseClient
|
||||||
|
.schema('medreport')
|
||||||
|
.from('ai_responses')
|
||||||
|
.select('*')
|
||||||
|
.eq('account_id', account.id)
|
||||||
|
.eq('prompt_id', analysesRecommendationsPromptId)
|
||||||
|
.eq('latest_data_change', latestISO);
|
||||||
|
|
||||||
|
const openAIClient = new OpenAI();
|
||||||
|
const { gender, age } = PersonalCode.parsePersonalCode(account.personal_code);
|
||||||
|
const weight = account.accountParams?.weight || 'unknown';
|
||||||
|
console.log('analysisResponses', analysisResponses);
|
||||||
|
console.log('analyises', analyses);
|
||||||
const formattedAnalysisResponses = latestUniqueAnalysResponses.map(
|
const formattedAnalysisResponses = latestUniqueAnalysResponses.map(
|
||||||
({ name, value }) => ({ name, value }),
|
({ name, value }) => ({ name, value }),
|
||||||
);
|
);
|
||||||
@@ -95,23 +109,20 @@ async function recommendationsLoader(
|
|||||||
title,
|
title,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
console.log('formattedAnalyses', JSON.stringify(formattedAnalyses));
|
const response = await openAIClient.responses.create({
|
||||||
console.log(
|
|
||||||
'latestUniqueAnalysResponses',
|
|
||||||
JSON.stringify(latestUniqueAnalysResponses),
|
|
||||||
);
|
|
||||||
|
|
||||||
const response = await client.responses.create({
|
|
||||||
model: 'gpt-5-mini',
|
model: 'gpt-5-mini',
|
||||||
store: false,
|
store: false,
|
||||||
prompt: {
|
prompt: {
|
||||||
id: 'pmpt_68ca9c8bfa8c8193b27eadc6496c36440df449ece4f5a8dd',
|
id: analysesRecommendationsPromptId,
|
||||||
variables: {
|
variables: {
|
||||||
analyses: JSON.stringify(formattedAnalyses),
|
analyses: JSON.stringify(formattedAnalyses),
|
||||||
results: JSON.stringify(formattedAnalysisResponses),
|
results: JSON.stringify(formattedAnalysisResponses),
|
||||||
gender: gender.value,
|
gender: gender.value,
|
||||||
|
age: age.toString(),
|
||||||
|
weight: weight.toString(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
max_output_tokens: 100,
|
||||||
});
|
});
|
||||||
|
|
||||||
const json = JSON.parse(response.output_text);
|
const json = JSON.parse(response.output_text);
|
||||||
|
|||||||
Reference in New Issue
Block a user