Правила Monorepo
Целевая Структура
Pin/
docs/
src/
services/
gateway/
front-ends/
contracts/
shared/
building-blocks/
deploy/
scripts/
Политика Import И Reference
src/services/identityне может ссылаться наsrc/services/accounting, и наоборот.- Синхронные межсервисные вызовы идут через typed HTTP/gRPC clients, описанные как ports и реализованные infrastructure adapters.
- Асинхронная коммуникация идет через event contracts в
src/contracts, пока contracts не опубликованы как NuGet packages. - Common primitives живут в
src/sharedилиsrc/building-blocks. - Frontend apps не импортируют service internals; они используют gateway OpenAPI clients или shared API packages, сгенерированные из gateway contracts.
Shared Packages
Talent.Common.Domain: ids, entity base types, value object base types, domain events.Talent.Common.Application: command/query abstractions, result mapping, validation pipeline.Talent.Common.Infrastructure: EF helpers, transaction boundaries, MassTransit integration helpers, idempotency, distributed locks, options validation.Talent.Common.Observability: correlation middleware, tracing enrichers, logging scopes, metrics naming helpers, Sentry scrubbing.Pin.Contracts.*: versioned event contracts per bounded context.
Docker Compose
- Infrastructure compose запускает только platform dependencies.
- Service compose запускает
api,migrator,background. .batlauncher использует явное имя проекта:docker compose -p Pin-accounting up --build --parallel.- Launcher валидирует
.env, compose file и health containers.
Дисциплина Документации
- Любой новый сервис требует service spec, API outline, event outline и ADR, если появляется новая технология или cross-service pattern.
- Любое изменение event требует versioning notes в
docs/09-events/event-contracts.md. - Любое изменение схемы денег, identity, KYC, provider callbacks или partner payouts требует migration notes и rollback notes.
- Вся документация пишется на русском UTF-8.
- Большие документы дробятся согласно правилам документации.
- Любая новая операция описывает observability, transaction boundary, side effects, state transitions, idempotency и DoR/DoD.
- Запрещены размытые постановки без конкретных полей, permissions, статусов, событий и ошибок.
- Общие инфраструктурные механизмы документируются в Shared/Common Infrastructure один раз. Service docs ссылаются на них и не копируют описание таблиц/полей.
- Для Inbox/Outbox используется MassTransit; custom service-specific
OutboxMessage/InboxMessageсущности запрещены.