Files
tf_provider/HISTORY/2026-07-06_architectural_refactoring.md
T

3.8 KiB

2026-07-06 — Архитектурный рефакторинг tf_provider

Контекст

После анализа Claude Opus (HISTORY/OPUS/2026-07-06_architectural_analysis.md) выявлены архитектурные проблемы и выполнены исправления.

Выполненные изменения

1. Реструктуризация проекта

Было:                          Стало:
devops/                        TOOLS/scripts/        (все .sh)
devops/profiles/               TOOLS/config/         (profile.env, services_list, timeouts)
devops/ARCHITECTURE.md         TOOLS/ARCHITECTURE.md
devops/config/                 УДАЛЕНО (дубликат profiles)
provider/resources_yaml/       УДАЛЕНО (сгенерированное → generated/)
provider/internal/resources_gen/ УДАЛЕНО (сгенерированное → generated/)
                               generated/{test,prod,dev}/  (вывод пайплайна)

2. Независимость генераторов

  • yaml-generator — требует NUBES_OUTPUT_DIR, без default в provider/
  • resource-generator — требует NUBES_RESOURCES_DIR + NUBES_RESOURCES_GEN_DIR
  • docs-generator — требует --resources, --docs, --version флаги
  • Удалён detectVersion() — больше не читает provider/main.go
  • Удалён detectRoot(), pickPath() — нет хардкод-путей

3. Общая библиотека типов

Создан TOOLS/lib/ — единый YAML-контракт. Модуль: tf-tools/lib.

Подключены:

  • yaml-generator → type alias ParamSpec = lib.ParamSpec и др.
  • resource-generator → type alias OutputParam, OperationSpec, ParamSpec

НЕ подключён:

  • docs-generator — будет заменён на LLM-генератор, не трогаем

При добавлении поля в YAML — править lib/types.go, несогласованность ловится компилятором.

4. Синхронизация версий

  • provider/main.go: 5.0.75 → 5.0.60 (соответствует последней сборке)
  • profile.env: три переменные → одна VERSION
  • 03_build, 04_publish: ${PROVIDER_VERSION:-${RELEASE_VERSION:-}}${VERSION}

5. Автосборка бинарников

01_generate_yamls.sh: если исходники новее бинарника — пересборка.

6. Удалённый мусор

  • devops/config/ — дубликат profiles
  • 02_generate_resources_and_docs.sh + _template.sh — legacy, заменены v2
  • cloud-dashboard/, tools/ (root), internal/ (root), universal_rebuild/
  • 18 одноразовых файлов (check_ops.py, s.sh, ...)

7. Слияние ops-generator → docs-generator

--ops флаг. Три генератора вместо четырёх.

8. Документация LLM

docs/LLM_DOCS_GENERATION.md — подход, промпт, тест на Postgres (gpt-oss-120b, 9/10).

Текущее состояние

tf_provider/
├── TOOLS/            — всё для генерации (код + скрипты + настройки)
│   ├── yaml-generator/
│   ├── resource-generator/
│   ├── docs-generator/
│   ├── lib/          — общие YAML-типы
│   ├── scripts/
│   ├── config/{test,prod,dev}/
│   └── ARCHITECTURE.md
├── provider/         — только исходники
├── generated/        — вывод пайплайна (gitignored)
└── docs/             — документация

Осталось

  • yaml-generator → lib
  • resource-generator → lib
  • docs-generator → lib