vault backup: 2026-05-19 10:54:40

This commit is contained in:
2026-05-19 10:54:40 +03:00
parent e966f0af4e
commit af0f0a1628

View File

@@ -16,84 +16,6 @@
Формат воспроизводится через `log/slog` с кастомным JSON handler'ом + `ReplaceAttr` для приведения уровней к нижнему регистру. Формат воспроизводится через `log/slog` с кастомным JSON handler'ом + `ReplaceAttr` для приведения уровней к нижнему регистру.
## Стратегия
Публичный API `klog` **не меняется** — сервисы обновляют vendor и ничего не ломается.
Единственное breaking изменение: `SetLogger(*zap.Logger)``SetLogger(*slog.Logger)`.
Используется только в тестах через `zap.NewNop()`.
**Решение:** добавить `SetNopLogger()` — тесты меняют одну строку без импорта zap.
---
## Шаг 0 — tools (делается первым, разблокирует всё остальное)
| # | Файл | Что менять | Сложность |
|---|------|------------|-----------|
| 1 | `tools/klog/log.go` | Переписать на `log/slog` с кастомным JSON handler'ом, сохранить формат, добавить `SetNopLogger()` | Средняя |
| 2 | `tools/go.mod` | Удалить `go.uber.org/zap` из `require` | Низкая |
| 3 | `tools/vendor/` | `go mod tidy && go mod vendor` | Низкая |
После выпустить тег `v3.9.0`.
---
## Шаг 1 — тесты с `klog.SetLogger(zap.NewNop())` (критично)
Это **единственные места**, где внешний код завязан на тип `*zap.Logger`.
После обновления vendor без этих правок сервисы **не скомпилируются**.
Замена везде одинаковая: `klog.SetLogger(zap.NewNop())``klog.SetNopLogger()`
| # | Репозиторий | Файл | Сложность |
|---|-------------|------|-----------|
| 4 | `pilot` | `internal/service/agreement_link_test.go` | Низкая |
| 5 | `pilot` | `internal/service/application_test.go` | Низкая |
| 6 | `pilot` | `internal/service/distro_download_link_test.go` | Низкая |
| 7 | `pilot` | `internal/service/distro_test.go` | Низкая |
| 8 | `pilot` | `internal/service/download_history_test.go` | Низкая |
| 9 | `pilot` | `internal/service/download_link_test.go` | Низкая |
| 10 | `pilot` | `internal/service/mail_test.go` | Низкая |
| 11 | `hr` | `internal/service/department_test.go` | Низкая |
| 12 | `rubytech` | `internal/service/client_test.go` | Низкая |
| 13 | `rubytech` | `internal/service/customer_test.go` | Низкая |
| 14 | `rubytech` | `internal/service/project_test.go` | Низкая |
| 15 | `user` | `internal/private/graph/resolver_test.go` | Низкая |
| 16 | `user` | `internal/service/role_test.go` | Низкая |
| 17 | `user` | `internal/service/session_test.go` | Низкая |
| 18 | `user` | `internal/service/user_test.go` | Низкая |
---
## Шаг 2 — vendor-бамп во всех сервисах (рутина, не требует изменений кода)
Для сервисов без `SetLogger(zap.NewNop())` достаточно только обновить vendor.
Для `pilot`, `hr`, `rubytech`, `user` — сначала шаг 1, потом vendor-бамп.
```bash
go get gitlab.adsw.io/platform/tools/v3@v3.9.0
go mod vendor
```
| # | Репозиторий | Зависимость | Сложность |
|---|-------------|-------------|-----------|
| 19 | `accounting` | — | Низкая |
| 20 | `async` | — | Низкая |
| 21 | `document-generator` | — | Низкая |
| 22 | `education` | — | Низкая |
| 23 | `file-manager` | — | Низкая |
| 24 | `hr` | после п.11 | Низкая |
| 25 | `mailer` | — | Низкая |
| 26 | `partner` | — | Низкая |
| 27 | `pilot` | после пп.410 | Низкая |
| 28 | `private-api-gateway` | — | Низкая |
| 29 | `public-api-gateway` | — | Низкая |
| 30 | `rubytech` | после пп.1214 | Низкая |
| 31 | `store` | — | Низкая |
| 32 | `unisender` | — | Низкая |
| 33 | `user` | после пп.1518 | Низкая |
| 34 | `yandex` | — | Низкая |
--- ---
## Шаг 3 — api-gateway (отдельно, не блокирует остальное) ## Шаг 3 — api-gateway (отдельно, не блокирует остальное)
@@ -109,21 +31,6 @@ go mod vendor
--- ---
## Порядок выполнения
```
Шаг 0: tools/klog/log.go → slog + SetNopLogger() → тег v3.9.0
├─► Шаг 1: исправить 15 тестовых файлов (pilot, hr, rubytech, user)
└─► Шаг 2: vendor-бамп в каждом сервисе по мере готовности (в течение месяца)
└─► Шаг 3: api-gateway — решить вопрос с abstractlogger (отдельно)
```
Шаг 0 и Шаг 1 должны быть выполнены **до** того, как любой сервис обновит vendor.
| Сервис | Готовность | Пролит | | Сервис | Готовность | Пролит |
| ------------ | :--------: | :----: | | ------------ | :--------: | :----: |