Модель данных
Prisma-схема — 34 модели, 14 enums, 24 миграции
Схема: prisma/schema.prisma. Все мутации — через Prisma 6, физического удаления нет (soft delete через deletedAt).
| Модель | Назначение |
|---|
User | Пользователь: email, role, companyId, telegramId, permissionOverridesJson, isActive |
Session | Сессии (token, expiresAt) |
Account | Учётные данные / OAuth |
Verification | Токены верификации |
| Модель | Назначение |
|---|
Company | Компания: type (CLIENT / MONSTER), plan (TRIAL / STARTER / PRO / ENTERPRISE) |
Permission | Ключ права, например task.create |
RolePermission | Матрица роль → permission |
UserPermission | Точечные overrides прав конкретного пользователя |
Invitation | Приглашение: email, роль, компания, срок действия |
| Модель | Назначение |
|---|
Task | Задача: title, description, status, dueDate, assignedTo, isTarget, поля v7.6 (productName, article, price, comment) |
Material | Материалы задачи: тип (MaterialType), файл, soft delete |
ContentBrief | Контент-бриф: hook, voice text, ad text, блоки |
AIPrompt | Сгенерированный AI-промпт: shortTz, fullTz, scenePlan, voiceover, версия |
Reference | Референс (видео/фото): категория, теги, thumbnail, isArchived |
ReferenceCategory | Категории референсов — database-driven (name, slug, sortOrder) |
| Модель | Назначение |
|---|
TaskCatalogGroup | Группа каталога: вкладка (PRODUCTS / FABRICS / SERVICES / FUNCTIONS), title, порядок |
TaskCatalogItem | Позиция в группе: label, searchKeywords |
TaskSelectedItem | Выбранные позиции в задаче (снапшот label/group) |
TaskStyle | Выбранные стили ролика |
TaskInteriorType | Типы интерьера (RESIDENTIAL / COMMERCIAL) |
| Модель | Назначение |
|---|
ReadyContent | Готовый ролик: status, version, parentVersionId (цепочка версий), isFinal, платформы, кто загрузил/утвердил |
ReadyContentFile | Файлы контента (несколько на запись, sortOrder) |
RevisionRequest | Запрос правок: текст, status (OPEN / RESOLVED), к какой версии относится |
| Модель | Назначение |
|---|
AIProviderConfig | Провайдер: gemini/openai, модель, apiKey, isPrimary, fallbackOrder, статус теста |
AISystemConfig | Системный конфиг: месячный бюджет USD, порог (80%), последняя ошибка/успех |
AIUsageLog | Лог использования: токены, стоимость, кэш-хиты |
PromptTemplate | Шаблоны промптов по операциям |
| Модель | Назначение |
|---|
CalendarItem | Событие календаря: задача, дата, lane, порядок, исполнитель |
Notification | In-app уведомление: тип, entity, readAt |
PushSubscription | Браузерная push-подписка (endpoint, ключи) |
AuditLog | Аудит: действие, entity, meta, ip, userAgent |
ThemePreference | Выбранная тема пользователя (8 тем) |
FileObject | Файл в S3: storageKey, bucket, size, кто загрузил |
SafebotItem | Скачанное из Instagram видео: url, статус, ссылка на mp4, promoted task |
Role 7 ролей: super_admin … client_viewer
TaskStatus NEED_TO_DO, IN_PROGRESS, ON_REVIEW, ON_REVISION, APPROVED
ReadyContentStatus ON_REVIEW, ON_REVISION, APPROVED, ARCHIVED
RevisionStatus OPEN, RESOLVED
NotificationType TASK_CREATED, TASK_STATUS_CHANGED, REFERENCE_UPLOADED,
CONTENT_UPLOADED, REVISION_REQUESTED,
CONTENT_RETURNED_TO_REVIEW, CONTENT_APPROVED, SYSTEM
CompanyType CLIENT, MONSTER
CompanyPlan TRIAL, STARTER, PRO, ENTERPRISE
ThemeName warm_gold, cold_tech, premium_mint, lime_growth,
rose_mint, sand_mint, violet_ice, olive_pearl
MaterialType FABRIC_PHOTO, PRODUCT_PHOTO, INTERIOR, FABRIC_VIDEO, DOCUMENT, OTHER
AIProvider GEMINI, OPENAI, CLAUDE
AIOperation GENERATE_PROMPT, GENERATE_COPY, SHORTEN_TZ, VALIDATE_TZ, STRUCTURE_REVISION
SafebotItemStatus PENDING, DOWNLOADING, DOWNLOADED, FAILED, PROMOTED
CatalogTabKey PRODUCTS, FABRICS, SERVICES, FUNCTIONS
InteriorCategory RESIDENTIAL, COMMERCIAL
24 миграции в prisma/migrations/, история с 2026-05-31. Ключевые вехи:
| Дата | Миграция | Что добавила |
|---|
| 2026-05-31 | init | Базовая схема |
| 2026-06-01 | v76_smart_selector_catalog | Каталог Smart Selector |
| 2026-06-01 | add_invitation_model | Приглашения |
| 2026-06-03 | soft_delete_task | Soft delete задач |
| 2026-06-04 | safebot | Instagram downloader |
| 2026-06-08 | add_user_permission | Permission overrides |
| 2026-06-12 | add_ai_provider_config | AI-провайдеры в БД |
| 2026-06-12 | add_reference_category_table | Database-driven категории |
| 2026-06-13 | add_ready_content_files | Несколько файлов на контент |
| 2026-06-16 | add_push_subscription, add_telegram_id, add_notification_types | 3 канала уведомлений |
Применение: pnpm db:migrate (dev) / prisma migrate deploy (prod, входит в build и Railway deploy hook).