From 57bf79d85b12b5442cd1b9b8cf619c2495c35b22 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Tue, 22 Sep 2026 18:56:11 +0300 Subject: [PATCH] =?UTF-8?q?docs(todo):=20=D0=BF=D0=BB=D0=B0=D0=BD=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B1=D0=B8=D0=B5=D0=BD=D0=B8=D1=8F=20client.go=20?= =?UTF-8?q?(1678=20=D1=81=D1=82=D1=80=D0=BE=D0=BA)=20=D0=BD=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D1=83=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/TODO/client_go_split.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 docs/TODO/client_go_split.md diff --git a/docs/TODO/client_go_split.md b/docs/TODO/client_go_split.md new file mode 100644 index 0000000..c7dab5b --- /dev/null +++ b/docs/TODO/client_go_split.md @@ -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. Коммит после каждого вынесенного блока (правило «коммит после каждой правки»).