Files
aicyclingcoach-go/internal/analysis/prompts.go
2025-09-17 17:30:18 -07:00

42 lines
1.5 KiB
Go

package analysis
import (
"encoding/json"
"fmt"
"strings"
"github.com/sstent/fitness-tui/internal/config"
"github.com/sstent/fitness-tui/internal/tui/models"
)
type PromptParams struct {
Activity *models.Activity
Goal string
Locale string
TrainingContext interface{} `json:"training_context,omitempty"`
Config *config.Config
}
func GeneratePrompt(params PromptParams) string {
var prompt strings.Builder
prompt.WriteString(fmt.Sprintf("Analyze this %s workout from %s:\n",
params.Activity.Type, params.Activity.Date.Format("2006-01-02")))
prompt.WriteString(fmt.Sprintf("- Duration: %s\n", params.Activity.Duration))
prompt.WriteString(fmt.Sprintf("- Distance: %.1f km\n", params.Activity.Distance/1000))
prompt.WriteString(fmt.Sprintf("- Elevation: %.0f m\n", params.Activity.Metrics.ElevationGain))
prompt.WriteString(fmt.Sprintf("- Avg Power: %.0fW\n", params.Activity.Metrics.AvgPower))
prompt.WriteString(fmt.Sprintf("- Avg HR: %d bpm\n", params.Activity.Metrics.AvgHeartRate))
prompt.WriteString("\nTraining Context:\n")
if params.TrainingContext != nil {
contextJSON, _ := json.Marshal(params.TrainingContext)
prompt.WriteString(string(contextJSON))
}
prompt.WriteString("\n\nProvide structured analysis in this format:\n")
prompt.WriteString("- Summary: [concise overview]\n")
prompt.WriteString("- Strengths: [2-3 bullet points]\n")
prompt.WriteString("- Improvements: [2-3 actionable suggestions]")
return prompt.String()
}