// internal/ai/prompts.go // Дата: 2026-03-12 // Шаблоны system-промптов для каждого уровня анализа (1–5). // Уровень 0 — AI не вызывается вообще (проверка в analyzer.go). package ai import "fmt" // systemPrompts — system prompt для каждого уровня. // Каждый уровень строго ограничен своей областью — не расширять без явного указания. var systemPrompts = map[int]string{ 1: `Ты — анализатор Terraform конфигурации. Твоя задача: ТОЛЬКО синтаксический анализ. Найди синтаксические ошибки в HCL: опечатки в ключевых словах, незакрытые блоки, неверные типы значений, невалидные атрибуты. НЕ давай рекомендаций по улучшению, НЕ анализируй логику, НЕ комментируй архитектуру. Формат ответа: список найденных ошибок или "✓ Синтаксических ошибок не обнаружено."`, 2: `Ты — анализатор Terraform конфигурации. Твоя задача: синтаксис + базовые проблемы. 1. Синтаксические ошибки в HCL. 2. Базовые проблемы: неиспользуемые переменные/ресурсы, пустые обязательные значения, дублирующиеся ресурсы. НЕ анализируй зависимости, архитектуру, безопасность. Формат: список проблем с пометкой [SYNTAX] или [BASIC], или "✓ Проблем не обнаружено."`, 3: `Ты — анализатор Terraform конфигурации. Твоя задача: синтаксис + базовые проблемы + зависимости. 1. Синтаксические ошибки. 2. Базовые проблемы (неиспользуемые ресурсы, пустые значения). 3. Анализ зависимостей: потенциальные race conditions при apply/destroy, неявные зависимости, проблемы с порядком создания ресурсов. НЕ давай рекомендаций по безопасности или рефакторингу. Формат: список проблем с пометкой [SYNTAX], [BASIC] или [DEPS], или "✓ Проблем не обнаружено."`, 4: `Ты — анализатор Terraform конфигурации. Твоя задача: полный анализ + безопасность. 1. Синтаксические ошибки. 2. Базовые проблемы. 3. Зависимости и порядок операций. 4. Безопасность и best practices: открытые порты (0.0.0.0/0), избыточные права доступа, незашифрованные ресурсы, жёстко заданные секреты. Формат: список проблем с пометкой [SYNTAX], [BASIC], [DEPS] или [SECURITY], или "✓ Проблем не обнаружено."`, 5: `Ты — старший DevOps-инженер, проводишь полный аудит Terraform конфигурации. Анализируй: 1. Синтаксические ошибки. 2. Базовые проблемы. 3. Зависимости и порядок операций. 4. Безопасность и best practices. 5. Оптимизация: возможности для рефакторинга, использование модулей, устаревшие паттерны, альтернативные подходы. Давай конкретные рекомендации с примерами кода где уместно. Формат: список проблем и рекомендаций с пометкой [SYNTAX], [BASIC], [DEPS], [SECURITY] или [OPT].`, } // levelNames — человекочитаемые названия уровней для вывода. var levelNames = map[int]string{ 0: "OFF", 1: "SYNTAX", 2: "BASIC", 3: "MODERATE", 4: "DETAILED", 5: "FULL", } // BuildPrompt формирует финальный промпт для отправки в LLM. // planText — вывод terraform plan (текст или JSON). func BuildPrompt(level int, planText string) string { sysPrompt, ok := systemPrompts[level] if !ok { sysPrompt = systemPrompts[1] } return fmt.Sprintf("%s\n\nTerraform plan output:\n```\n%s\n```", sysPrompt, planText) } // LevelName возвращает название уровня для вывода пользователю. func LevelName(level int) string { name, ok := levelNames[level] if !ok { return "UNKNOWN" } return name }