From 96edb0937ef7c0569fc681e9dd3269fbbe03b096 Mon Sep 17 00:00:00 2001 From: Fedorov Vladimir Date: Sat, 3 Oct 2026 01:40:24 +0700 Subject: [PATCH] update --- docs/GO_STANDARD.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/GO_STANDARD.md b/docs/GO_STANDARD.md index 2470b16..08e7588 100644 --- a/docs/GO_STANDARD.md +++ b/docs/GO_STANDARD.md @@ -41,18 +41,21 @@ cmd// сборка и запуск приложения ```text cmd → app → services → repos - ↘ modules + └──────────────→ modules ``` -- По прикладной логике `app` зависит только от `services`; `proto` используется - как транспортный контракт. Прямые зависимости от `repos` и `modules` в - handlers и mapping запрещены. -- `cmd` собирает граф зависимостей и может импортировать `services`, `repos` и - `modules` для wiring. +- `modules` — технический слой, доступный из любого уровня (`cmd`, `app`, + `services`, `repos`). `proto` используется как транспортный контракт. +- Прямые зависимости `app` от `repos` запрещены в production-коде handlers и + mapping; прикладные операции идут через `services`. +- `cmd//main.go` — composition root: для инициализации и wiring он может + импортировать любой внутренний слой (`app`, `services`, `repos`, `modules`). - `services` не импортируют `app` и `proto`. - `repos` не знают о protobuf, HTTP, gRPC, ролях транспорта и UI. -- `modules` не знают о конкретном use case приложения. Если код нужен только - одному сервису, он остаётся в этом сервисе. +- `modules` не импортируют `app`, `services` и `repos`, не знают о конкретном + use case приложения и могут зависеть только от стандартной библиотеки и + других технических модулей без циклических зависимостей. Если код нужен + только одному сервису, он остаётся в этом сервисе. - Циклические зависимости запрещены; не исправляй их дополнительным `common`-пакетом без конкретной общей ответственности.