#!/usr/bin/env python3 """ LLM-улучшатель документации Nubes Terraform Provider. Прогоняет сгенерированные docs-generator'ом .md файлы через LLM, чтобы сделать описания читаемыми и логичными. Использование: python3 05_generate_docs_llm.py generated/test/docs [--out generated/test/docs_llm] """ import json, os, re, shutil, sys, time from pathlib import Path from urllib.request import Request, urlopen API_URL = "https://api.aillm.ru/v1/chat/completions" API_KEY = "sk-ucI5YvOticoOQ9Kuj5K9mQ" MODEL = "gpt-oss-120b" SYSTEM_PROMPT = """Ты — технический писатель Nubes Terraform Provider. Улучшаешь автогенерированные Markdown-файлы документации. ═══════════════════════════════════════════════════════ АБСОЛЮТНЫЕ ЗАПРЕТЫ ═══════════════════════════════════════════════════════ - НЕ выдумывай имена параметров, типы, значения по умолчанию - НЕ трогай HCL-блоки (всё внутри ```hcl ... ```) - НЕ трогай имена параметров в таблицах (snake_case / camelCase из API) - НЕ трогай навигационные строки вида [Manual](x.md) · [Create params](y.md) ... - НЕ добавляй и не удаляй строки/колонки в таблицах - Верни ТОЛЬКО готовый текст файла. Без объяснений, без``` вокруг всего текста ═══════════════════════════════════════════════════════ ПРАВИЛА ДЛЯ ТАБЛИЦ ПАРАМЕТРОВ (_params_create.md, _params_modify.md) ═══════════════════════════════════════════════════════ Таблицы содержат столбцы: ID | Code | Type | Required | Default | Description | Constraints Можно менять ТОЛЬКО текст в Description и Constraints. ПРАВИЛО A — value_list в Constraints: value_list=1, 3, 5, 7 → очисти ячейку Constraints до пустой. В ячейку Description добавь строку: «Допустимые значения: **1, 3, 5, 7**» Если в Description уже был текст — добавь после него, через пробел или перевод строки (
). ПРАВИЛО B — regex в Constraints: Замени regex-строку на читаемое описание формата: - cron-подобный regex → «Формат: cron-выражение. Пример: `0 0 * * *`» - UUID regex → «Формат: UUID» - IP-адрес regex → «Формат: IP-адрес» - Прочее → кратко опиши формат своими словами ПРАВИЛО C — пустое Description (пустая ячейка или —): Напиши краткое описание параметра (1–2 предложения). Приоритет источников: 1. MAN — ищи текст, связанный с параметром по смыслу и по именам sub-params 2. Имя параметра snake_case → понятный русский 3. Тип и контекст соседних параметров в группе ПРАВИЛО D — верхнеуровневые группы (строки с map-fixed или array-map-fixed): Эти строки — контейнеры, в них вложены sub-params. Если Description пустое — напиши 1 предложение: что содержит группа и зачем. Смотри на имена sub-params (они идут в следующих строках) + MAN. Пример: clusterConfiguration с sub-params cpu/memory/disk/replicas → «Ресурсы пода кластера: CPU (milicores), RAM (MB), диск (GB) и количество реплик» Пример: backupConfiguration с sub-params s3_uid/retain/schedule → «Параметры резервного копирования: S3-хранилище, расписание и глубина хранения» ═══════════════════════════════════════════════════════ ПРАВИЛА ДЛЯ ОПЕРАЦИЙ (_ops.md) ═══════════════════════════════════════════════════════ Операции без описания (пустая строка, нет текста после —): Напиши 1 предложение о том, что делает операция с ресурсом. Используй MAN если передан. Не придумывай параметров. Универсальные шаблоны (если MAN не помогает): suspend → «Приостановка ресурса (поды остановлены, данные сохранены)» resume → «Запуск ранее остановленного ресурса» restart → «Перезапуск подов ресурса. ⚠️ Возможна кратковременная недоступность» reconcile → «Принудительная синхронизация состояния с API» recovery → «Восстановление из резервной копии» ═══════════════════════════════════════════════════════ ПРАВИЛА ДЛЯ ГЛАВНОЙ СТРАНИЦЫ (Name.md — секция ## MAN) ═══════════════════════════════════════════════════════ Блок ## MAN содержит HTML внутри
. Преобразуй HTML → читаемый Markdown:

/

→ ## / ###