docs(uuid-case): зафиксировать фактический механизм сохранения регистра

- core/refsvc.go: комментарий ссылался на несуществующий блок 'Restore user-provided
  casing' в instance.go. Факт: ref_svc исключены из read-back (InputField только при
  RefSvcId==0), UUID внутри JSON нормализуются при отправке (BuildJSON ->
  LowercaseUUIDsInText).
- docs/60_strategy/terraform_case_sensitivity_fix.md: §4 помечен как историческая
  справка (подхода originalVappUid в коде нет); актуальные §10-§11.

Проверено: go build ./... OK; go test ./internal/... -short -> PASS.
This commit is contained in:
Repinoid
2026-09-30 20:38:37 +03:00
parent 8519ba0f44
commit 0e26e98384
2 changed files with 16 additions and 2 deletions
@@ -90,6 +90,16 @@ schema.StringAttribute{
## 4. Правильное решение ## 4. Правильное решение
> ⚠️ **Историческая справка (пометка 2026-09-30).** Описанный ниже подход «Restore user-provided
> casing» (`originalVappUid` в шаблоне `instance.go`) в текущем коде **отсутствует**.
> Фактическая реализация регистра UUID:
> 1. ref_svc-атрибуты **исключены из read-back**: шаблон `instance.go` добавляет `InputField` только
> при `eq .RefSvcId 0`, поэтому в state остаётся регистр из config;
> 2. UUID-подстроки **внутри JSON** нормализуются при отправке
> (`resources_core.BuildJSON` → `jsonutil.LowercaseUUIDsInText`).
>
> Разделы §10–§11 ниже — актуальные. Раздел 4 оставлен как история разбора.
**Источник истины**: plan = config = "6214BA32-..." (регистр пользователя, неизменен) **Источник истины**: plan = config = "6214BA32-..." (регистр пользователя, неизменен)
**Задача**: state после apply тоже должен быть "6214BA32-..." **Задача**: state после apply тоже должен быть "6214BA32-..."
+6 -2
View File
@@ -17,8 +17,12 @@ import (
// указанного сервиса. // указанного сервиса.
// //
// ВАЖНО (uuid-case, 2026-03): API облака возвращает UUID всегда в нижнем регистре. // ВАЖНО (uuid-case, 2026-03): API облака возвращает UUID всегда в нижнем регистре.
// Для отправки в API нормализуем к lowercase, но в state сохраняем регистр // Для отправки в API нормализуем к lowercase. В state регистр пользователя сохраняется
// пользователя (см. шаблон instance.go, блоки "Restore user-provided casing"). // потому, что ref_svc-атрибуты ИСКЛЮЧЕНЫ из read-back (шаблон instance.go добавляет
// InputField только при `eq .RefSvcId 0`), а UUID-подстроки ВНУТРИ JSON нормализуются
// при отправке (`resources_core.BuildJSON` -> `jsonutil.LowercaseUUIDsInText`).
// (Блока "Restore user-provided casing" в instance.go нет — он описан только в доке
// docs/60_strategy/terraform_case_sensitivity_fix.md как исторический подход.)
func (c *UniversalClient) resolveRefSvcParamValues(ctx context.Context, opParams []universalCfsParam, params map[int]string) (map[int]string, error) { func (c *UniversalClient) resolveRefSvcParamValues(ctx context.Context, opParams []universalCfsParam, params map[int]string) (map[int]string, error) {
if len(params) == 0 || len(opParams) == 0 { if len(params) == 0 || len(opParams) == 0 {