Files
nika-gallery/db/migrations/bot_adapter.sql
germanandClaude Opus 4.8 3f1c5dbd7b feat(bot): сайт-адаптер единого бота флота + фикс redirect на 1nika.ru
Реализован контракт /api/bot/* из servaki-webhub-bot/SPEC.md:
- GET  /api/bot/health (публичный) -> {ok, site}
- GET  /api/bot/publications?status=&limit= -> список works
- POST /api/bot/publications {title,body,media[]} -> черновик works -> {id}
- POST /api/bot/publications/:id/publish -> published -> {id,url}
- DELETE /api/bot/publications/:id -> удаление (media cascade)
- POST /api/bot/materials (multipart file) -> media -> {id,url}

Аутентификация Authorization: Bearer <BOT_API_TOKEN> (middleware/botAuth,
сравнение постоянного времени; 503 без токена в env, 401 при несовпадении).
Маппинг: публикация<->works, материал<->media. Миграция bot_adapter.sql
разрешает media.type='file'. multer 2.x.

Фикс Яндекс-redirect и домена: nika-gallery.ru -> 1nika.ru в .env.example
(YANDEX_REDIRECT_URI, FRONTEND_URL, SITE_URL, NEXT_PUBLIC_*, SMTP_USER) и
nginx server_name. Секреты не в git (client_id/secret - на Я.Диске).

Добавлен docs/DEPLOY.md (VPS runbook: DNS, .env, SSL, миграции, бот).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 23:24:20 +03:00

17 lines
925 B
PL/PgSQL

-- nika-gallery: миграция «Сайт-адаптер бота флота».
-- Аддитивно к db/schema.sql и club_access.sql. Идемпотентна.
-- Задача: feat/bot-adapter — ручки /api/bot/* под единый @servaki_online_bot.
--
-- Единственное изменение схемы: media может хранить произвольные материалы
-- (не только image/video), которые бот присылает через POST /api/bot/materials.
-- Всё остальное (works как «публикации», media как «материалы») уже есть в schema.sql.
BEGIN;
-- Разрешаем media.type = 'file' (pdf, документы и пр. от бота).
ALTER TABLE media DROP CONSTRAINT IF EXISTS media_type_check;
ALTER TABLE media ADD CONSTRAINT media_type_check
CHECK (type IN ('image', 'video', 'file'));
COMMIT;