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