Reactive EngineeringRE Docs
Архитектура

Архитектура

Как взаимодействуют web-приложение, worker, PostgreSQL и внешние каналы.

Customer Support состоит из двух процессов, собранных из одного репозитория. Web обслуживает интерфейс, авторизацию, API и Server Actions. Worker отвечает за плановый сбор отзывов и фоновые уведомления. Общее состояние хранится в PostgreSQL.

Границы модулей

КаталогОтветственность
src/appМаршруты, layouts и серверные проверки доступа
src/features/feedbackApp Feedback, providers, sync, ответы и уведомления
src/features/qr-feedbackEntities, QR-коды, публичные отправки и аналитика
src/features/access-controlПользователи, роли, permissions и Audit Log
src/features/settingsБрендинг, безопасность и UI интеграций
src/components/uiУниверсальные shadcn primitives без бизнес-логики
src/libPrisma, Better Auth, SMTP и серверная безопасность

Client Components не обращаются к Prisma и внешним provider API напрямую. Мутации проходят через Server Actions или API routes и повторно проверяют права.

Ключевые решения

  • scheduled sync вынесен из Next.js в отдельный worker;
  • импорт повторяем и идемпотентен благодаря уникальному внешнему ID;
  • атомарные leases защищают от двух одновременных sync;
  • credentials шифруются до записи в БД;
  • workflow обращения отделён от состояния ответа на внешней площадке;
  • QR-отправки immutable, удаление логическое;
  • audit содержит безопасные метаданные, но не секреты и не полные тексты.

On this page