univex/
├── microservices/
│ ├── gateway/ # HTTP-шлюз пользователей (Fiber v2, JWT)
│ │ ├── cmd/server/ # Точка входа HTTP-сервера
│ │ ├── internal/
│ │ │ ├── delivery/http/ # 65+ обработчиков маршрутов
│ │ │ │ ├── dto/ # 38 файлов Data Transfer Objects
│ │ │ │ ├── converter/ # Конвертеры account, p2p
│ │ │ │ └── responser/ # Построение HTTP-ответов
│ │ │ ├── manager/jwt/ # JWT-менеджер токенов
│ │ │ ├── storage/redis/ # Redis: сессии, кэш
│ │ │ └── locator/ # Service locator для gRPC-клиентов
│ │ └── docs/ # Swagger (OpenAPI) спецификация
│ ├── admin-gateway/ # HTTP-шлюз администраторов (Fiber v2, Casbin RBAC)
│ │ ├── cmd/server/
│ │ ├── internal/
│ │ │ ├── delivery/http/ # 83+ обработчиков маршрутов
│ │ │ │ ├── dto/ # 50+ файлов DTO
│ │ │ │ ├── converter/
│ │ │ │ └── responser/
│ │ │ ├── casbin/ # Обёртка над Casbin enforcer (делегирует в univex-id)
│ │ │ ├── manager/jwt/
│ │ │ └── locator/
│ │ └── docs/ # Swagger (OpenAPI) спецификация
│ ├── univex-id/ # Основной Identity-сервис (gRPC, 95+ RPC)
│ │ ├── cmd/
│ │ │ ├── server/ # gRPC-сервер
│ │ │ ├── temporal_worker/ # Temporal workflow worker
│ │ │ ├── notification_worker/# Обработка уведомлений
│ │ │ ├── terminal_status/ # Обработка статусов KYC
│ │ │ ├── migrator/ # Миграции БД
│ │ │ └── init_roles/ # Инициализация ролей Casbin
│ │ ├── internal/
│ │ │ ├── usecase/ # 15 доменов бизнес-логики
│ │ │ │ ├── account/ # Регистрация, логин, бан, тиры (39 файлов)
│ │ │ │ ├── admin/ # CRUD админов, сессии, 2FA
│ │ │ │ ├── confirm/ # Email/Phone/Google подтверждения
│ │ │ │ ├── exchange/ # Балансы, переводы, вывод, API-ключи
│ │ │ │ ├── role/ # Casbin enforcer, RBAC-модель, политики
│ │ │ │ ├── restriction/ # Ограничения на операции
│ │ │ │ ├── google2fa/ # TOTP/Google Authenticator
│ │ │ │ ├── elliptic/ # Интеграция с Elliptic (AML)
│ │ │ │ ├── wallet_address_book/
│ │ │ │ ├── fiat_places/
│ │ │ │ ├── user_notes/
│ │ │ │ ├── user_notification/
│ │ │ │ ├── admin_notification/
│ │ │ │ ├── balance_operation/
│ │ │ │ └── hash/ # Хеширование паролей
│ │ │ ├── storage/sql/ # PostgreSQL (48 миграций)
│ │ │ ├── storage/redis/ # Redis: сессии, коды, кэш
│ │ │ ├── rpc/ # gRPC-обработчики + middleware
│ │ │ ├── temporal/ # Воркфлоу: signup, signin, ban, apikey, withdrawal, transfer
│ │ │ └── metrics/ # Prometheus-метрики
│ │ └── postgres/migrations/ # 48 SQL-миграций
│ ├── ledger/ # Учёт и хранение балансов (gRPC, 26 RPC)
│ │ ├── cmd/
│ │ │ ├── server/
│ │ │ ├── temporal_worker/
│ │ │ └── migrator/
│ │ ├── internal/
│ │ │ ├── usecase/ # 5 доменов
│ │ │ │ ├── exchange/ # Балансы, переводы, вывод, депозиты
│ │ │ │ ├── balance_operation/ # CRUD операций с балансами
│ │ │ │ ├── frozen_assets/ # Заморозка/разморозка активов
│ │ │ │ ├── funded_codes/ # Предоплаченные коды
│ │ │ │ └── restriction/ # Ограничения операций
│ │ │ ├── hasher/ # SHA-256 хеширование для контроля целостности
│ │ │ ├── storage/sql/
│ │ │ └── temporal/ # Воркфлоу: withdrawal, transfer, fiat, freeze/unfreeze
│ │ └── postgres/migrations/ # 11 SQL-миграций
│ ├── p2p/ # P2P-торговля (gRPC, 43 RPC)
│ │ ├── cmd/
│ │ │ ├── server/
│ │ │ ├── temporal_worker/
│ │ │ ├── migrator/
│ │ │ └── cleanup/ # Очистка устаревших данных
│ │ ├── internal/
│ │ │ ├── usecase/ # 8 доменов
│ │ │ │ ├── order/ # State machine ордеров (8 файлов)
│ │ │ │ ├── advertisement/ # CRUD объявлений
│ │ │ │ ├── message/ # Чат между участниками
│ │ │ │ ├── payment_method/ # Способы оплаты
│ │ │ │ ├── feedback/ # Отзывы и рейтинги
│ │ │ │ ├── blacklist/ # Чёрный список
│ │ │ │ ├── balance/ # P2P-балансы
│ │ │ │ └── account/ # Статистика аккаунтов
│ │ │ ├── storage/sql/
│ │ │ ├── storage/redis/ # Redis: кэш, блокировки
│ │ │ └── temporal/ # Воркфлоу: order lifecycle
│ │ └── postgres/migrations/ # 31 SQL-миграция
│ ├── exchange-integration/ # Прокси к Exchange Admin gRPC (60 RPC)
│ │ ├── cmd/{server,migrator}/
│ │ ├── internal/
│ │ │ ├── clients/admin/ # gRPC-клиент к Exchange Admin
│ │ │ ├── rpc/ # 10 обработчиков по доменам
│ │ │ ├── storage/sql/
│ │ │ └── domain/
│ │ └── postgres/migrations/ # 2 SQL-миграции
│ ├── trades-aggregator/ # Агрегатор торговых данных (gRPC streaming, 2 RPC)
│ │ ├── cmd/{server,worker,migrator}/
│ │ ├── internal/
│ │ │ ├── tradeworker/ # Фоновая агрегация через HTTP-клиент Exchange API
│ │ │ ├── rpc/
│ │ │ └── storage/sql/
│ │ └── postgres/migrations/ # 2 SQL-миграции
│ ├── email/ # Email-сервис (gRPC + SQS)
│ │ ├── cmd/{server,queue,migrator}/
│ │ └── internal/{clients/smtp, handler, queue, storage/sql, usecase/email}/
│ ├── sms-gate/ # SMS-шлюз (gRPC + SQS)
│ │ ├── cmd/{server,sqs,migrator}/
│ │ └── internal/{clients/sns, clients/telegram, delivery/grpc, delivery/sqs, usecase/sms}/
│ └── sumsub-integration/ # KYC-интеграция (gRPC + Fiber webhook)
│ ├── cmd/{server,webhook,migrator}/
│ └── internal/{clients/sumsub, http, rpc, usecase/applicant}/
├── proto/ # Protobuf-определения (37 файлов, 14 пакетов)
│ ├── admin/ # 11 proto: accounts, alerts, apikeys, assets, blockchain,
│ │ # hotwallets, info, operations, ping, tickers, tiers
│ ├── blockchain/ # 7 proto: hotwallet, network, topup, transit_wallet, tx, wallet, withdrawal
│ ├── engine/ # 5 proto: account, candle, orderbook, service, tier
│ ├── exchange_integration/ # 3 proto: основной + blockchain + tickers
│ ├── ledger/ # 1 proto: 26 RPC
│ ├── p2p/ # 1 proto: 43 RPC
│ ├── univex_id/ # 3 proto: основной (95+ RPC) + admins + roles
│ ├── email/ # 1 proto
│ ├── sms_gate/ # 1 proto
│ ├── sms_intent/ # 1 proto
│ ├── sumsub_integration/ # 1 proto
│ ├── trades_aggregator/ # 1 proto
│ ├── reason/ # 1 proto: 127 кодов ошибок
│ └── passport_terminal_status_event/ # 1 proto
├── pkg/ # Общие пакеты (17 пакетов)
│ ├── temporal/ # Обёртки Temporal: WorkflowBase, ActivityBase,
│ │ │ # interceptors, helpers
│ │ ├── workflow_api/ # Executor для прямых и child-воркфлоу
│ │ ├── activity_api/ # Executor для активитей (обычных и local)
│ │ ├── default_options/ # Worker/Client interceptors для дефолтных опций
│ │ └── helpers/ # Мерж RetryPolicy, ActivityOptions
│ ├── clients/ # HTTP/gRPC клиенты
│ │ ├── apigen/ # Сгенерированный клиент Exchange API (OpenAPI 3.0)
│ │ ├── exchange/ # HTTP-клиент для получения сделок
│ │ └── elliptic/ # Клиент Elliptic API (AML)
│ ├── hawk/ # Error tracking + Temporal middleware
│ ├── metrics/ # Prometheus-обёртка для метрик
│ ├── validator/ # Валидация входных данных
│ ├── sha256/ # SHA-256 хеширование
│ ├── sqlxtrm/ # Обёртка транзакций sqlx
│ ├── deps/ # DI-хелперы (transaction factory)
│ ├── utils/ # Утилиты: decimal, time, temporal helpers
│ ├── balogan/ # Обёртка логгера
│ ├── jsonify/ # JSON-утилиты
│ ├── pointer/ # Хелпер pointer.Ref()
│ ├── slicex/ # Операции над слайсами
│ ├── find/ # Поиск по коллекциям
│ └── mocks/ # Моки для тестов (Temporal client)
└── internal/ # Общий внутренний код
├── config/ # Загрузка конфигурации (Viper + cleanenv)
├── migrator/ # Обёртка Goose для миграций
├── generated/proto/ # Сгенерированный protobuf Go-код
└── temporal/ # Общая Temporal-инфраструктура
├── activities/ # 36+ модулей активитей (shared между сервисами)
├── workflows/ # 10 типов воркфлоу (signup, signin, ban, transfer, withdrawal, fiat, freeze, order, apikey, manual_operation)
├── signals/ # Обработка сигналов подтверждения (2FA, email, admin)
├── domain/ # Shared-модели для воркфлоу
├── common/ # Task queues, сигналы, ошибки
└── config/ # Конфигурация Temporal-клиента