Files
SQS-service/doc/thinking/opus-review-prompt-2026-10-05.md
T

6.2 KiB

Промпт для Opus — анализ архитектуры shared-sqs (2026-10-05)

Назначение: дать модели Opus контекст и точный список файлов для чтения, чтобы она проанализировала архитектуру shared-sqs и выдала идеи архитектуры (в т.ч. «КРАКО» — критический разбор архитектуры) без чтения лишних файлов.


ЗАДАЧА

Проанализируй архитектуру сервиса shared-sqs (SQS-совместимая очередь, Go, мультитенантная, форк GoAWS) и выдай:

  1. Критический разбор архитектуры (КРАКО) — слабые и сильные места, риски, узкие места, что мешает назвать сервис готовым к продакшну.
  2. Идеи по архитектуре — как довести сервис до production-ready: приоритизированный список доработок (P0/P1/P2) с обоснованием.

Не меняй код. Только читай и анализируй.

ЧТО ЧИТАТЬ (allowlist — ТОЛЬКО эти файлы, ничего больше)

Точка входа и роутинг:

  • app/cmd/goaws.go
  • app/cmd/seed.go
  • app/router/router.go

Конфигурация:

  • app/conf/config.go
  • app/conf/goaws.yaml

SQS-реализация (ядро):

  • app/gosqs/gosqs.go
  • app/gosqs/receive_message.go
  • app/gosqs/send_message.go
  • app/gosqs/create_queue.go
  • app/gosqs/validation.go
  • app/gosqs/tenant_helpers.go

Аутентификация / изоляция тенантов:

  • app/auth/auth_middleware.go
  • app/auth/jwt.go
  • app/auth/cache.go
  • app/tenant/tenant_store.go

Модели данных:

  • app/models/models.go
  • app/models/constants.go
  • app/models/globals.go

Персистентность:

  • app/persistence/redis.go

Биллинг и метрики:

  • app/billing/billing.go
  • app/metrics/metrics.go

Admin API:

  • app/admin/admin.go

Интерфейсы:

  • app/interfaces/interfaces.go

Документация (для контекста состояния):

  • README.md
  • doc/architecture/tenant-isolation.md
  • doc/billing-and-metrics.md
  • doc/byoc-credentials.md
  • HANDOFF-NEW-CHAT.md

⛔ ГДЕ НЕ ЛАЗИТЬ

  • Не читать doc/legacy/** (исторический план, старые решения — устарели).
  • Не читать deployments/** (легаси k8s/helm).
  • Не читать doc/thinking/nubes-* (сетевые тикеты платформы — отдельная задача, не относится к разбору архитектуры кода).
  • Не читать тесты *_test.go — они нужны только как сигнал «что покрыто»; для анализа архитектуры достаточно факта наличия из списка app/gosqs/*.
  • Не искать файлы за пределами перечисленного списка.

КЛЮЧЕВОЙ КОНТЕКСТ (факты, которые уже установлены — не перепроверять с нуля)

  • Стек: Go 1.23, gorilla/mux v1.8.0, redis/go-redis/v9, lib/pq, prometheus/client_golang. Сервис — один Go-бинарник.
  • Состояние: прод v0.1.35, все тесты зелёные, нагрузка 168 591 операция без сервисных ошибок. НО есть известные открытые вопросы (ниже).
  • Персистентность: Redis write-through cache. Память — источник правды для чтения; Redis — для восстановления после рестарта. Записи в Redis асинхронные (кроме DeleteMessagePersist — синхронно).
  • Изоляция тенантов: очередь хранится по ключу {AccessKey}:{queueName}; TenantStore с тремя индексами (byID, byAccessKey, byEmail).
  • JWT-валидация: подпись НЕ проверяется (trusted perimeter) — только структура + exp + PingNubesAPI() (проверка token через API Gateway).
  • Биллинг: асинхронная запись в PostgreSQL (таблица sqs_usage_records), опционально (включается при BILLING_PG_HOST).
  • Внешняя проблема (НЕ код, на анализ кода не влияет): периодические сетевые таймауты ~31–33с на внешнем шлюзе Nubes + MSS-баг для больших тел. Разобрано в тикете — это задача платформы, не кода.

ИЗВЕСТНЫЕ ОТКРЫТЫЕ ВОПРОСЫ (кандидаты в «доделать» — проверь их актуальность по коду)

  1. BYOC-credentials — backend CreateFixed есть, но Admin API/UI (POST /admin/tenants с произвольными ключами) помечен TODO.
  2. Подпись JWT не проверяется — насколько это приемлемо для multi-tenant прод-сервиса, или нужно усилить.
  3. Дрейф доков — версии в README/Makefile/HANDOFF не всегда совпадают.
  4. Легаси — невычищенные следы старого k8s/helm-деплоя и SNS.

ФОРМАТ ОТВЕТА

  1. КРАКО — короткий критический разбор: что хорошо, что плохо, главные риски (по коду, а не по платформе).
  2. Приоритизированный план доработок (P0/P1/P2), с указанием конкретных файлов и сути правки.
  3. Список противоречий/несоответствий между доками и кодом, если найдёшь.