refactor: shared YAML types via tf-tools/lib (yaml-generator + resource-generator)
TOOLS/lib/types.go — canonical ServiceSpec, ParamSpec, OperationSpec, OutputParam. Both generators use type aliases, one source of truth for YAML contract. docs-generator stays as-is (will be replaced by LLM-based generator).
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# 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-контракт для всех генераторов.
|
||||
|
||||
Типы: `ServiceSpec`, `OperationSpec`, `ParamSpec`, `OutputParam`, `Lifecycle`.
|
||||
|
||||
Генераторы используют type aliases: `type ServiceSpec = lib.ServiceSpec`.
|
||||
|
||||
При добавлении поля в 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/ — документация
|
||||
```
|
||||
|
||||
## Осталось
|
||||
|
||||
- [x] yaml-generator → lib
|
||||
- [ ] resource-generator → lib
|
||||
- [ ] docs-generator → lib
|
||||
Reference in New Issue
Block a user