From 9b5a2a6fb04dc4597ea393f4b15ad26ddbdf7297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 9 Aug 2026 10:53:54 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=82=D1=80=D0=B5=D1=82=D1=8C=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4-=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20=D0=A1=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/code-review-request-v3.md | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 HISTORY/code-review-request-v3.md diff --git a/HISTORY/code-review-request-v3.md b/HISTORY/code-review-request-v3.md new file mode 100644 index 0000000..57ffbcb --- /dev/null +++ b/HISTORY/code-review-request-v3.md @@ -0,0 +1,40 @@ +# Code Review v3 — Go Terraform Registry (финальный) + +## Контекст + +Реестр на проде: `https://tf-registry.containerk8s.services.ngcloud.ru` +После ревью v2: структура переписана, HTML в embed, proxyHandler фикс, таймауты, валидация key. + +## Файлы + +``` +server/ +├── main.go # vars, main() +├── handlers.go # типы, root, discovery, healthz, readyz, debug +├── proxy.go # proxyHandler +├── router_versions.go # router, listVersions, downloadVersion +├── gpg_key.go # GPG-ключи +├── docs.go # docs-хендлер +├── embed.go # embed templates/index.html +├── logo.svg +└── templates/index.html +Dockerfile +``` + +## Вопросы + +1. **Структура пакета** — всё в `package main`, разнесено по файлам. Ок для команды или стоит выносить в `internal/`? + +2. **embed подход** — `embed.go` с `//go:embed templates/index.html`, `rootHandler` читает через `templateFS.ReadFile`, заменяет `{{.Version}}`. Ок или лучше `html/template`? + +3. **proxyHandler** — `io.Copy(w, obj)` с MinIO Object, таймаут 60s, валидация key по s3Prefix. Всё ок? + +4. **listVersions** — `context.Background()` без таймаута для `ListObjects`. Стоит добавить? + +5. **downloadVersion** — `defer` внутри `if err == nil` (defer shasumsObj.Close). Перепроверь — это ок? + +6. **/debug** — показывает ENV (включая секреты S3_ACCESS_KEY/S3_SECRET_KEY). Оставить или убрать? + +7. **Dockerfile** — ENV с дефолтами, секреты в jsonEnv. Нормальный паттерн? + +8. **Общее** — перед тем как объявить готовым к проду, что ещё?