Files
67/README.md
2026-06-22 22:39:08 +03:00

114 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fable Media Platform
Рабочий scaffold по `plan.md` и `ТЗ_единый.md`: университетская платформа управления медиаконтентом, а не общий сайт университета.
## Что реализовано
- React + TailwindCSS frontend на русском языке.
- Публичный контур: главная, каталог, поиск, материалы, медиа, мероприятия как тип контента, спикеры.
- Персонифицированный контур: демо-вход, профиль, роли, подписки, уведомления, комментарии.
- Административный контур: dashboard, пользователи и роли, очередь модерации, журнал действий, форма черновика.
- Elysia gateway на Node.js с CORS, request ID, rate limiting, service proxy, token-style fallback auth и RBAC checks.
- Go microservices для auth, user, content, taxonomy, speaker, subscription, notification, comment, search, analytics, audit, media.
- Рабочие backend endpoints: регистрация, вход, профиль, контент CRUD, медиа, категории, теги, спикеры, подписки, уведомления, комментарии, поиск, аналитика, admin users/roles/audit.
- PostgreSQL migration для сущностей из ТЗ.
- Docker Compose для локального запуска всех контуров.
Все данные в интерфейсе и API являются явно демонстрационными заглушками. Реальные люди, подразделения, интеграции, юридические сведения и брендовые материалы не добавлялись.
Backend теперь использует PostgreSQL через GORM в Go-сервисах. Демо-данные остаются только как seed-набор для локального запуска и проверки сценариев.
## Локальный запуск
Установить зависимости:
```bash
pnpm install
```
Запустить весь проект без Docker:
```bash
npm run dev
```
Это одновременно запускает Go backend services, Node gateway и React/Vite frontend.
Запустить backend без Docker: все Go-сервисы + Node gateway:
```bash
npm run dev:backend
```
Для этого локально должен быть доступен PostgreSQL на `127.0.0.1:5432` или должен быть задан `DATABASE_URL`.
Запустить только gateway с fallback demo API:
```bash
npm run dev:gateway
```
`npm run dev:gateway` оставляет только gateway. Для рабочего backend-контура используйте `npm run dev:backend`, потому что Go-сервисы теперь требуют реальную БД и не должны подменяться скрытым demo-store.
Запустить frontend:
```bash
npm run dev:web
```
Проверить Go services:
```bash
npm run test:go
```
Docker сейчас необязателен, но PostgreSQL обязателен для Go-сервисов. Для текущей разработки используйте `npm run dev:backend` и `npm run dev:web`.
Проверить сборку всего проекта:
```bash
npm run check
```
Запуск всего окружения через Docker, если он понадобится позже:
```bash
docker compose up --build
```
В Docker Compose gateway проксирует `/api/*` в Go-сервисы. Frontend nginx также проксирует `/api/*` в gateway, поэтому `http://localhost:5173` работает как единое приложение.
Frontend: `http://localhost:5173`.
Gateway health: `http://localhost:3000/health`.
Internal services health through gateway: `http://localhost:3000/api/services/health`.
## Демо-вход
Логин: `demo_admin`
Пароль: `demo_password`
Auth service принимает демо-учетную запись из seed-данных, проверяет хэш пароля и выдает подписанный token для локального backend-контура.
## Backend API
- `POST /api/auth/register`, `POST /api/auth/login`, `GET /api/auth/me`, `POST /api/auth/logout`, `POST /api/auth/change-password`
- `GET /api/content`, `GET /api/content/:id`, `POST /api/content`, `PATCH /api/content/:id`, `DELETE /api/content/:id`
- `GET /api/media`, `GET /api/events`, `GET /api/categories`, `GET /api/tags`, `GET /api/speakers`
- `GET /api/search?q=...`, `GET /api/subscriptions`, `POST /api/subscriptions`
- `GET /api/notifications`, `PATCH /api/notifications/:id/read`
- `GET /api/comments/:contentId`, `POST /api/comments/:contentId`
- `GET /api/analytics/summary`, `GET /api/admin/dashboard`, `GET /api/admin/users`, `GET /api/admin/roles`, `GET /api/admin/audit`
## Открытые вопросы из плана
- Финальное название платформы.
- Разрешенные логотипы и брендовые материалы.
- Источник реальных данных для миграции.
- Точная матрица ролей и прав.
- Являются ли мероприятия отдельной сущностью или типом контента.
- Production runtime и инфраструктура для gateway.
- Формулы показателей эффективности контента.