docs(todo): план разбиения client.go (1678 строк) на модули

This commit is contained in:
Repinoid
2026-09-22 18:56:11 +03:00
parent aca15e8f69
commit 57bf79d85b
+34
View File
@@ -0,0 +1,34 @@
# TODO: разбить `provider/internal/core/client.go`
Файл разросся до **1678 строк** — монолит, смешаны зоны ответственности. Разбить на отдельные файлы в пакете `core` (мелкими модулями).
⚠️ НЕ трогать без явной команды. Только рефакторинг-план.
## Предлагаемое разбиение
| Файл | Зона ответственности |
|---|---|
| `client.go` | Core-структура `UniversalClient`, конструктор, `doRequest`, retry, `buildURL`, sanitize auth |
| `client_http.go` | `doRequest`, `formatAPIError`, retry-логика, `User-Agent`/DDoS-Guard |
| `instance_find.go` | `FindInstanceByDisplayName` (+search/fallback-пути, `isInstanceDeleted`, `isInstanceDeletedError`) |
| `instance_state.go` | `GetInstanceStateRaw`, `GetInstanceState`, `GetInstanceStateParams`, `GetInstanceStateDetails`, `validateInstanceStatus` |
| `instance_create.go` | `CreateGenericInstanceUniversalV6`, `createInstanceWithContext` |
| `instance_operation.go` | `RunInstanceOperationUniversal`, `RunInstanceOperationUniversalWithDefaults`, `RunInstanceOperationUniversalByCode`, `RunRedeployOperation`, `fetchOperationCfsParams` |
| `operation_wait.go` | `waitForOperationFinish`, `waitForInstanceIdle`, печать этапов |
| `params_ref.go` | `resolveRefSvcParamValues`, `resolveRefSvcParams`, `ResolveRefSvcParamValue`, `ResolveS3UidInAllMapFixed` |
| `params_norm.go` | `normalizeUniversalValueV6`, `buildMapFixedDefault`, `normalizeInstanceParamValue` |
| `instance_output.go` | (уже вынесено отдельно) `instance_outputs.go` |
| `instance_params.go` | (уже отдельно) `instance_params.go` |
## Уже вынесено (не трогать)
- `instance_params.go`
- `instance_outputs.go`
- `refsvc_resolve.go`
## Правила при рефакторинге
1. Только перенос функций — без изменения логики (чистый move).
2. Сохранить `debug(...)`-логи и комментарии `// НЕ МЕНЯТЬ`.
3. `go build ./... && go vet ./internal/core/` после каждого шага.
4. Коммит после каждого вынесенного блока (правило «коммит после каждой правки»).