§01
Обзор
- Что это: управляющий бэкенд для фискализации/платежей сети Restaurant chain (UZ) — веб-аналог
ofdplugin(#40, C# для iiko). Админка управляет организациями (мультитенантность), продуктами, терминалами, типами оплаты, ролями/правами; синхронизирует данные с iiko Cloud и платёжными провайдерами. - Тип / статус / роль: web-app (API + админка) / active / solo (~11/14 коммитов пользователя; 3 — Shahzod).
- Активный период: 2026-02-07 → 2026-02-27 (~3 недели, компактно). 13 сессий CC.
§02
Стек
- API (`api/`): Elysia.js (Bun) + bearer-auth + typebox, Drizzle ORM + PostgreSQL (
postgres), Redis (ioredis), jose (JWT), otp-generator, radash/lodash, dayjs. - Admin (`admin/`): Next.js + react-hook-form + Zustand (product store).
- Crons (`crons/`): фоновая синхронизация.
- Модули API: organizations (мультитенант), organizations_users, products, terminals, payment_types, roles/permissions/users/users_roles/roles_permissions (полный RBAC), cache_control.
§03
Что реализовано
- RBAC + мультитенант: модули roles/permissions/users + organizations.
- Синхронизация типов оплаты (
f0be309,40f6e27): эндпоинт синка + кнопка в админке, подтягивает/обновляет типы оплаты из внешнего сервиса по каждой организации; интеграция UzCard, card_type. - Синхронизация терминалов через iiko Cloud API (
d3a9e39). - Синхронизация продуктов (
5ba77cf— ограничена одной организацией вместо всех;f0be309). - SPIC-селектор (
6a2e731— фискальные коды продуктов из отдельного эндпоинта). - UI: миграция форм на react-hook-form, Zustand-store + плавающий тулбар + поиск/сортировка продуктов, русификация.
- Объём: 14 коммитов, ~11 пользователя, 3 недели.
§04
Технические челленджи
- Интеграция с iiko Cloud API (
d3a9e39): синхронизация терминалов из облака iiko в свою БД. → интеграция API с ресторанной платформой (облачная, в отличие от plugin-based в ofdplugin). - Синхронизация типов оплаты с внешним провайдером (
f0be309): синк по каждой организации (UzCard/Humo), маппинг card_type, ручной триггер из админки с уведомлениями. → доменная работа с платёжными системами UZ. - Коды SPIC (
6a2e731): селектор фискальных классификаторов продуктов (SPIC — обязательный код фискализации в Узбекистане). → знание локальной фискальной специфики. - Мультитенантный RBAC (organizations + roles/permissions/users_roles/roles_permissions): полная модель прав поверх Elysia/Drizzle.
- Фиксы области синхронизации (
5ba77cf— по одной организации, а не по всем) — корректная изоляция данных тенантов.
§05
AI-разработка
- Найдено сессий: 13 .jsonl.
.claude/. - Что сделано с AI: построение модулей/синков, миграция форм на react-hook-form, фиксы drizzle-kit v0.31 (dialect/url), вынос типов drizzle-orm в корневой workspace. Чистые описательные коммиты.
- Паттерн: Claude Code для быстрой сборки CRUD+sync бэкенда на Elysia/Drizzle.
§06
Достижения и метрики
- Solo-бэкенд фискализации/платежей за ~3 недели: мультитенант, RBAC, 3 синхронизации (платежи/терминалы/продукты), SPIC.
- Современный стек (Elysia/Bun/Drizzle/Redis/jose).
- Небольшой объём; метрик нет.