Commit Graph

29 Commits

Author SHA1 Message Date
vasyansk 2aca92d070 fix(api): tenant-проверка account/template в CreateDomain (HIGH), атомарный import через транзакцию (MEDIUM) 2026-07-03 15:08:16 +07:00
vasyansk ae6a4d7f4c feat(api): CRUD accounts/templates/domains + import зон (полный цикл), secret не в ответах
Task 9 Фазы 1B: узкий интерфейс TenantStore (внутри store.Account/Template/Domain,
без db.* в api) реализован тонкими обёртками в internal/store/tenant.go; API.Store/
Cipher/Reg добавлены к существующему Svc. Роуты POST/GET/DELETE для accounts/
templates/domains + POST /accounts/{aid}/import (ListZones -> CreateDomain на зону).
accountResponse не содержит секрет ни в каком виде.
2026-07-03 14:53:29 +07:00
vasyansk 763919d23f feat(server): Loader/Recorder на Store, wiring cmd/server (config→migrate→pool→api) 2026-07-03 14:41:09 +07:00
vasyansk 05dc586646 fix(api): 400 на битое тело apply, маскирование internal-ошибок, лимит тела 2026-07-03 14:35:43 +07:00
vasyansk fdf90a7c23 feat(api): chi-роутер, check/apply хендлеры, changeset DTO 2026-07-03 14:28:06 +07:00
vasyansk 8a2d985197 feat(service): Check/Apply оркестрация с guard на prune 2026-07-03 14:22:59 +07:00
vasyansk 635b05361f refactor(store): sqlc override uuid→google/uuid.UUID (убирает pgtype boilerplate) 2026-07-03 14:20:03 +07:00
vasyansk 34bc49ee8c feat(store): sqlc-запросы, dto TemplateDoc, Repository, интеграционные тесты CRUD 2026-07-03 14:08:37 +07:00
vasyansk 9c29d40269 fix(store): postgres.BasicWaitStrategies() — устраняет flaky first-run на macOS
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 14:04:23 +07:00
vasyansk 5588e10e05 merge 1B wave: worktree-agent-a59d2fd8fdbcc99aa 2026-07-03 14:03:05 +07:00
vasyansk a3bb9474a4 merge 1B wave: worktree-agent-af74a8911eb1561ff 2026-07-03 14:03:05 +07:00
vasyansk 788f1db80e feat(store): goose-миграции схемы + seed default tenant, тест на testcontainers 2026-07-03 13:56:21 +07:00
vasyansk 3b7ed8434b feat(registry): резолвинг провайдера по имени 2026-07-03 13:41:56 +07:00
vasyansk 7c82bafaaa feat(crypto): AES-256-GCM шифрование секретов учёток 2026-07-03 13:41:52 +07:00
vasyansk fc10451340 feat(config): загрузка env-конфига (DSN, ENC-ключ, listen) 2026-07-03 13:35:47 +07:00
vasyansk c0c8e3188d merge backlog: worktree-agent-aca0d858dec169a39 2026-07-03 13:16:27 +07:00
vasyansk b62f7d58cd merge backlog: worktree-agent-a0d4f6f75e1f8f7cd 2026-07-03 13:16:27 +07:00
vasyansk 70f9bc6793 harden(selectel): защита пагинации от неподвижного offset, тест New, документирование disabled 2026-07-03 13:13:24 +07:00
vasyansk c42d242a3b feat(diff): prune-guard Updates()/Prunes() + фиксация семантики dedup 2026-07-03 13:12:10 +07:00
vasyansk 1505997b19 refactor(model): slices.Sort/Equal вместо ручного цикла 2026-07-03 13:11:18 +07:00
vasyansk cb2f826dc2 test(diff): пустой шаблон — массовый Delete управляемых, NS остаётся ReadOnly 2026-07-03 12:57:36 +07:00
vasyansk 86338f846a fix(selectel): nil-guard в ApplyChanges + тесты пагинации rrset и nil-diff 2026-07-03 12:57:30 +07:00
vasyansk b50972f38d fix(model): TXT сравнивается байт-точно (без схлопывания пробелов) 2026-07-03 12:57:24 +07:00
vasyansk 9b38f081f4 test(selectel): покрытие id-not-found, токена на мутациях, пагинации и HTTP-ошибок 2026-07-03 12:48:59 +07:00
vasyansk c0f5748817 feat(selectel): реализация Provider — ListZones, GetRecords, ApplyChanges 2026-07-03 12:41:31 +07:00
vasyansk 9f209c8931 feat(provider): интерфейс Provider, Credentials, Zone 2026-07-03 12:36:18 +07:00
vasyansk bd4f8c5a8c feat(diff): диф-движок шаблон↔зона с Actionable и ReadOnly для NS/SOA
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 12:32:33 +07:00
vasyansk 304632b8cf test(model): покрытие SRV, неполных MX/SRV значений и изоляция теста приоритета MX 2026-07-03 12:27:39 +07:00
vasyansk dd91c93bda feat(model): нейтральная модель Record с нормализацией и Equal 2026-07-03 12:22:38 +07:00