AI-конвеєр, архітектура, що вже реалізовано в MVP і як ми це покажемо на демо. Продуктова частина — на головній.
Кожна задача — окремий виклик із виходом за zod-схемою. Невалідна відповідь — одна повторна спроба, далі передбачувана резервна поведінка. Модель викликає лише воркер, жоден компонент UI.
moderatePostПост і фотоallow / needs_approval / reject + причина→ «Чекає схвалення»structurePostВільний тексттип, заголовок ≤ 60, деталі, дата події→ перші 60 символівcaptionPhotoФото + тема челенджужартівливий підпис ≤ 60 символів→ без підписуweeklyRecapДані екрана за 7 днів≤ 5 пунктів, кожен з sourceId→ сцену не показуємоpollFromTextОдна фраза адмінапитання, 2–5 варіантів, дедлайн→ ручна формаOllama на машині команди: дані не їдуть у сторонні сервіси. Hosted Gemma — резерв змінною середовища.
ai_jobs у Postgres, FOR UPDATE SKIP LOCKED, одна задача на GPU, до 2 повторів. Модель прогріта весь час демо.
Пост обгорнутий роздільниками з інструкцією не виконувати його. Збір коштів завжди йде на схвалення.
Клієнти пишуть через Next.js, читають і отримують оновлення напряму з Supabase під RLS. Уся робота з моделлю — у воркері поруч із GPU: він не відкриває портів і сам ходить у базу.
TV
/tv/[slug]?key — короткий JWT лише на читання
Браузер
стрічка / та екран /s/[slug]
Телефон
/join → /p/[slug], анонімний вхід
Next.js на Vercel
Route Handlers, zod на вході, rate limits
Supabase
Postgres + RLS, Realtime → клієнтам, Storage для фото й логотипів
Воркер
черга ai_jobs, розклад: погода, свята, підсумок
Ollama · Gemma 4
локально, без вхідних портів
Пунктир — те, що працює на машині з GPU. Hosted-провайдер вмикається змінною LLM_PROVIDER=google.
apps/ web/ Next.js: /tv /p /join /s /me /admin /api worker/ черга ai_jobs, розклад, виклики llm packages/core/ llm/ провайдер, задачі, схеми, промпти widgets/ реєстр 8 віджетів, toCards() scenes/ генератор сцен для TV db/ типи Supabase, клієнти supabase/ міграції з RLS, seed
Усі сценарії зі специфікації — обов’язкові й бажані — реалізовані, задеплоєні й перевірені наскрізно з реальною моделлю.
85
юніт- та інтеграційних тестів + e2e «пост з телефона з’являється на TV»
< 8 с
від «Надіслати» до картки на TV з локальною Gemma 4 E4B
1 команда
pnpm setup:local — ідемпотентний скрипт розгортання для всієї команди
Прод
Vercel + Supabase, воркер із моделлю на машині команди