import { WorkoutSession } from '../types'; import { api } from './api'; export const createFitnessChat = (history: WorkoutSession[]): any => { // The original returned a Chat object. // Now we need to return something that behaves like it or refactor the UI. // The UI likely calls `chat.sendMessage(msg)`. // So we return an object with `sendMessage`. // Summarize data to reduce token count while keeping relevant context const summary = history.slice(0, 10).map(s => ({ date: new Date(s.startTime).toLocaleDateString('ru-RU'), userWeight: s.userBodyWeight, exercises: s.sets.map(set => `${set.exerciseName}: ${set.weight ? set.weight + 'кг' : ''}${set.reps ? ' x ' + set.reps + 'повт' : ''} ${set.distanceMeters ? set.distanceMeters + 'м' : ''}`).join(', ') })); const systemInstruction = ` Ты — опытный и поддерживающий фитнес-тренер. Твоя задача — анализировать тренировки пользователя и давать краткие, полезные советы на русском языке. Учитывай вес пользователя (userWeight в json), если он указан, при анализе прогресса в упражнениях с собственным весом. Вот последние 10 тренировок пользователя (в формате JSON): ${JSON.stringify(summary)} Если пользователь спрашивает о прогрессе, используй эти данные. Отвечай емко, мотивирующе. Избегай длинных лекций, если не просили. `; return { sendMessage: async (userMessage: string) => { const res = await api.post('/ai/chat', { systemInstruction, userMessage }); return { response: { text: () => res.response } }; } }; };