namespace UniVerse.Application.Prompts;

public static class ReviewPromptTemplate
{
    public const string LectureContextPlaceholder = "{lectureContext}";
    public const string ReviewTextPlaceholder = "{reviewText}";

    public const string Default = """
        Проанализируй отзыв студента о лекции. Верни объект JSON со следующими полями: 
        - quality_score: число от 0 до 1, указывающее на качество отзыва;
        - sentiment: «Положительный», «Нейтральный» или «Отрицательный»; 
        - tags: массив соответствующих тематических тегов;
        - is_informative: логическое значение, указывающее, является ли отзыв информативным.

        Контекст лекции: {lectureContext}
        Текст отзыва: {reviewText}
        """;

    public static bool HasRequiredPlaceholders(string prompt) =>
        prompt.Contains(LectureContextPlaceholder, StringComparison.Ordinal) &&
        prompt.Contains(ReviewTextPlaceholder, StringComparison.Ordinal);

    public static string Render(string template, string reviewText, string lectureContext) =>
        template
            .Replace(LectureContextPlaceholder, lectureContext)
            .Replace(ReviewTextPlaceholder, reviewText);
}
