Документация
Project-X CMS версия 1.1.0
Последние обновления
2025-12-13
- API для управления контентом (Content Management API)
- Реализована полнофункциональная система API для управления контентом
- Создан ApiContentController с 6 основными endpoints:
- POST /api/content/movies - создание фильмов
- POST /api/content/series - создание сериалов
- POST /api/content/series/{series_id}/seasons - добавление сезонов
- POST /api/content/seasons/{season_id}/episodes - добавление эпизодов
- GET /api/content - получение списка контента с фильтрацией
- GET /api/content/{id} - получение детальной информации о контенте
- Поддержка Bearer Token и X-API-Key аутентификации
- Интеграция с существующей системой API ключей и rate limiting
- Валидация всех входных данных с детальными сообщениями об ошибках
- Поддержка транзакций для обеспечения целостности данных
- Автоматическая привязка жанров, студий и языков дубляжа к контенту
- Создание фильмов с полными метаданными:
- title, description, duration, release dates
- poster_url, video_url, status
- привязка жанров, студий озвучки, языков дубляжа
- Создание сериалов с иерархией:
- Series → Seasons → Episodes
- Поддержка нескольких сезонов на сериал
- Поддержка нескольких эпизодов на сезон
- Гибкая фильтрация при получении контента:
- По типу (movie/series)
- По статусу (draft/published/reserved/needs_clarification)
- Пагинация (limit/offset)
- Детальная информация о контенте включает:
- Все метаданные контента
- Список жанров с ID и названиями
- Список студий озвучки
- Список языков дубляжа
- Для сериалов: полная иерархия сезонов и эпизодов
- Комплексная валидация входных данных:
- Обязательные поля (title для всех типов)
- Валидация типов данных (integer для duration, date для release_date)
- Валидация формата дат (YYYY-MM-DD)
- Валидация массивов (genres, studios, dubbing_languages)
- Проверка существования связанных сущностей
- Проверка прав доступа через API ключи
- Rate limiting для предотвращения злоупотреблений
- IP whitelist и endpoint filtering
- Полное логирование всех API запросов
- Создана полная документация на украинском языке:
- API_CONTENT_MANAGEMENT.md (1,562 строки)
- API_CONTENT_QUICKSTART.md (371 строка)
- Создана полная документация на русском языке:
- API_CONTENT_MANAGEMENT_RU.md (1,562 строки)
- API_CONTENT_QUICKSTART_RU.md (371 строка)
- Создан итоговый документ:
- API_CONTENT_IMPLEMENTATION_SUMMARY.md (295 строк)
- API_CONTENT_README.md (78 строк)
- Документация включает:
- Детальное описание всех endpoints с примерами запросов/ответов
- Полные примеры интеграции на PHP и Python
- Классы-клиенты для упрощения интеграции
- Best practices и рекомендации по безопасности
- Примеры пакетного импорта из JSON файлов
- Обработка ошибок и rate limiting
- Добавлены ссылки в боковую панель документации (DocsController.php)
- PHP класс ProjectXApiClient с методами:
- createMovie(), createSeries()
- createSeason(), createEpisode()
- getContent(), getContentById()
- Python класс ProjectXApiClient с аналогичными методами
- Примеры создания сложных структур (сериал → сезоны → эпизоды)
- Примеры пакетного импорта контента из JSON файлов
- Примеры обработки ошибок и retry логики
2025-12-13
- Система оформления заказов и ценообразования
- Реализована полнофункциональная система кошика для клиентов
- Создана таблица client_order_carts для хранения активных кошиков
- Создана таблица client_order_cart_items для товаров в кошике
- Model OrderCart с методами:
- getActiveCartForClient() - получение активного кошика
- ensureActiveCart() - создание кошика если не существует
- markAsOrdered() - пометка кошика как оформленного
- Model OrderCartItem с методами:
- addItem() - добавление товара в кошик
- removeItem() - удаление товара
- getItemsByCart() - получение всех товаров кошика
- getTotalHours() - расчет общего количества часов
- clearCart() - очистка кошика после оформления
- JavaScript client-cart-actions.js для AJAX операций с кошиком
- Расширена система заказов для поддержки множественных товаров
- Создана таблица order_items для хранения деталей товаров в заказе
- Model OrderItem с методами:
- createEntries() - сохранение списка товаров заказа
- getByOrderId() - получение товаров заказа
- getByOrderIds() - пакетное получение для нескольких заказов
- Обновлена Model Order для работы с order_items
- Два режима создания заказа:
- Single Item Mode - заказ одного фильма/эпизода
- Cart Mode - заказ нескольких товаров из кошика
- Сохранение полных метаданных каждого товара в order_items
- ClientOrderController с 13 методами:
- catalog() - каталог контента с фильтрацией
- cart() - просмотр кошика
- addToCart() / removeFromCart() - API для управления кошиком
- selectEpisodes() - выбор эпизодов сериала
- checkout() - оформление заказа
- create() - создание заказа
- success() - страница успешного оформления
- myOrders() - список заказов клиента
- view() - детальный просмотр заказа
- cancel() - отмена заказа
- Созданы 7 view шаблонов:
- catalog.php - каталог с пагинацией и фильтрами
- cart.php - просмотр кошика с таблицей товаров
- select-episodes.php - выбор эпизодов сериала по сезонам
- checkout.php - форма оформления с выбором студии/микса
- success.php - подтверждение успешного заказа
- my-orders.php - список заказов с фильтрацией и статистикой
- view.php - детали заказа с товарами
- Создана комплексная система ценообразования
- Таблица studio_prices для хранения цен студий:
- Цены на фильмы и сериалы отдельно
- Цены для каждой комбинации студия + язык озвучки
- Поддержка активации/деактивации цен
- Model Pricing с методами для управления ценами студий:
- getAllStudioPrices() - получение всех цен
- createStudioPrice() / updateStudioPrice() / deleteStudioPrice()
- getStudioLanguages() - языки озвучки студии
- PricingController::studioPrices() - административная панель управления
- Реализована система миксов (несколько студий в одном заказе)
- Таблица mix_studios для хранения миксов
- Таблица mix_studio_members для связи микс-студия (many-to-many)
- Таблица mix_prices для цен миксов
- Таблица mix_dubbing_languages для языков озвучки миксов
- Model Pricing с методами для миксов:
- getAllMixes() - получение всех миксов
- createMix() / updateMix() / deleteMix()
- getMixStudios() - студии в миксе
- createMixPrice() / updateMixPrice() / deleteMixPrice()
- getActiveMixPricesByContentType() - активные цены
- PricingController::mixPrices() - управление миксами и ценами
- View edit-mix.php для редактирования состава миксов
- Реализована система скидок за объем
- Таблица volume_discounts для хранения уровней скидок:
- min_hours - минимальное количество часов для скидки
- discount_percentage - процент скидки (0-100)
- Model Pricing с методами для скидок:
- getAllVolumeDiscounts()
- createVolumeDiscount() / updateVolumeDiscount() / deleteVolumeDiscount()
- getApplicableVolumeDiscount() - получение лучшей скидки
- calculateDiscount() - расчет процента скидки
- Автоматическое применение скидок при оформлении заказа
- PricingController::volumeDiscounts() - управление скидками
- Расчет стоимости заказа с учетом:
- Типа контента (фильм = 2 часа, эпизод = 1 час по умолчанию)
- Цены за единицу (price_per_unit)
- Количества товаров в заказе
- Скидки за объем (volume_discount_percentage)
- Формула: total_cost = price_per_unit × количество_товаров × (100 - скидка%) / 100
- Сохранение всех параметров в таблице orders:
- duration_minutes - общая длительность
- price_per_minute - цена за минуту
- total_cost - итоговая стоимость
- volume_discount_percentage - примененная скидка
- Поддержка блокировки контента при заказе (exclusive_lock)
- Автоматическое создание записей в content_locks
- Изменение статуса контента на 'reserved'
- Разблокировка при отмене заказа
- Order::createLockIfNeeded() - создание блокировки
- Order::unlockContent() - снятие блокировки
- Добавлена поддержка источника релиза (release_origin):
- 'streaming' - для потоковых платформ
- 'cinema' - для кинотеатрального проката
- Сохранение в таблице orders
- Отображение в формах оформления заказа
- Migration_20251210_001_CreateClientOrderCartTables
- Создание client_order_carts и client_order_cart_items
- Migration_20251215_001_AddMixFieldsToOrders
- Добавление mix_id, mix_price_id, volume_discount_percentage
- Migration_20251220_001_CreateOrderItemsTable
- Создание order_items для хранения товаров заказа
- Migration_20251214_001_AddReleaseOriginColumnToOrders
- Добавление release_origin
- Migration_20251230_001_AllowNullStudioLanguageInOrders
- Разрешение NULL для studio_dubbing_language_id (для миксов)
- Интуитивный каталог контента с фильтрами:
- Фильтрация по типу (фильмы/сериалы)
- Фильтрация по жанру
- Фильтрация по году выпуска
- Текстовый поиск
- Пагинация 12 товаров на странице
- Удобный кошик с возможностью:
- Добавления/удаления товаров через AJAX
- Просмотра общего количества часов
- Перехода к оформлению одним кликом
- Гибкий процесс оформления заказа:
- Выбор между студией и миксом
- Динамическая загрузка языков озвучки
- Автоматический расчет стоимости со скидкой
- Добавление комментария к заказу
- Личный кабинет клиента:
- Список всех заказов с фильтрацией по статусу
- Поиск по названию контента/студии
- Статистика заказов по статусам
- Детальный просмотр каждого заказа
- Централизованная панель управления ценообразованием:
- Главная страница со счетчиками
- Управление ценами студий
- Управление миксами и их составом
- Управление ценами миксов
- Управление скидками за объем
- Полная поддержка CRUD операций для всех типов цен
- Динамическая загрузка зависимых данных (языки студий/миксов)
- Валидация всех входных данных
- Система активации/деактивации без удаления
2025-11-27
- Обновление документации для v1.1.0
- Обновлены все документы до версии 1.1.0
- Добавлены новые разделы в документацию для администраторов:
- API Key Management - управление API ключами через админ-панель
- WordPress Integration - интеграция плагина CF7 с REST API
- Расширена документация для разработчиков:
- Подробное описание REST API (v1.1.0)
- Инструкции по использованию Project-X CF7 Integration плагина
- Примеры кода для интеграции
- Обновлены все даты и версии документов на 1.1.0 (27 ноября 2025)
- Обновлено описание системы в system/overview.md
2025-11-27
- REST API и система управления API ключами (Фаза 14-15)
- Реализирована полнофункциональная система управления API ключами в админ-панеле
- Создан Model\ApiKey с методами для генерации, валидации и управления ключами
- Реализовано SHA-256 криптографическое хеширование для безопасного хранения ключей
- Создана админ-панель с тремя таблицами:
- api_keys - основная таблица ключей со всеми параметрами
- api_key_usage_logs - полное логирование всех запросов
- api_rate_limit_counters - счетчики для контроля rate limiting
- Добавлены 4 индекса для оптимизации производительности запросов
- Реализована поддержка IP whitelist для ограничения источников запросов
- Реализована фильтрация ендпоинтов с поддержкой wildcard-паттернов
- Поддерживаются гибкие rate limits: per-hour и per-day на каждый ключ
- Добавлена поддержка expiration date для автоматического истечения ключей
- Реализован полный audit trail для отозвания ключей
- ApiKeyManagementController с 8 основными методами:
- index() - список всех ключей с фильтрацией и статистикой
- view($id) - детальный просмотр ключа с логами использования за 30 дней
- editForm($id) и edit($id) - редактирование параметров ключа
- deactivate/activate/revoke - управление статусом ключа
- delete($id) - удаление ключа со всеми логами
- statistics() - аналитика использования (топ пользователи, топ ендпоинты, графики)
- Создано 4 view шаблона:
- index.php - список ключей с таблицей DataTables и модальным окном создания
- view.php - детальная информация и логи использования
- edit.php - форма редактирования всех параметров ключа
- statistics.php - система аналитики на уровне всех ключей
- Добавлено меню-пункт "API Key Management" в админ-панель для Admin и Developer ролей
- Реализована система permissions: доступ только для Admin и Developer
- Добавлено 60+ новых ключей локализации на 3 языках (Ukrainian, Russian, English)
- ApiRegistrationController с поддержкой публичных API ендпоинтов
- POST /api/auth/register - создание запроса на регистрацию пользователя через API
- Поддерживает Bearer Token аутентификацию
- Поддерживает X-API-Key header аутентификацию
- Проверка IP whitelist источника запроса
- Проверка прав ключа на доступ к ендпоинту
- Проверка rate limiting перед обработкой
- Валидация всех полей формы регистрации
- Возвращает JSON с статусом и ID запроса
- GET /api/auth/registration-status - получение статуса запроса на регистрацию
- Поддерживает Bearer Token и X-API-Key аутентификацию
- Возвращает текущий статус и метаданные запроса
- GET /api/auth/check-email - проверка доступности email адреса
- Быстрая проверка существования email в системе
- Поддерживает аутентификацию по API ключу
- Полная документация всех ендпоинтов в /docs/v1.1.0/API_DOCUMENTATION.md
- SHA-256 хеширование обеспечивает что сырой ключ никогда не хранится в БД
- Rate limiting предотвращает брутфорс и злоупотребление API
- IP whitelist позволяет ограничить источники запросов
- Endpoint filtering контролирует доступ к конкретным ендпоинтам
- Полное логирование всех запросов для аудита и мониторинга
- Bearer Token и X-API-Key поддержка двух способов аутентификации
- Система отозвания ключей с audit trail кто и когда отозвал ключ
- Поддержка expiration date для автоматического истечения ключей
- Migration_20251127_001_CreateApiKeysTable содержит:
- Создание всех 3 таблиц с правильными типами данных и ограничениями
- PostgreSQL trigger для автоматического обновления updated_at
- Создание 7 индексов для оптимизации производительности
- Корректные FOREIGN KEY со ссылками на users и CASCADE удалением
- PostgreSQL комментарии для документирования схемы
- Методы up() и down() для миграции и откаты
- Успешно выполнена на PostgreSQL базе данных
- Создан файл /docs/v1.1.0/API_DOCUMENTATION.md (572 строки)
- Полное руководство по использованию API для разработчиков
- Секции: аутентификация, API ключи, регистрация, rate limiting, безопасность
- Примеры запросов на PHP, JavaScript, Python, Bash
- Полная документация всех ендпоинтов с request/response форматами
- Коды ошибок и их описания
- Инструкции админ-панели для управления ключами
2024-11-21
- Реализована полнофункциональная система документации проекта
- Создан контроллер DocsController с поддержкой парсинга Markdown
- Реализована система поиска по всей документации
- Добавлен контроль доступа к документам на основе ролей пользователей
- Создана структура документации по разделам и функциональности
- Написаны подробные руководства для всех ролей пользователей
- Добавлена поддержка синтаксис-хайлайтинга для кодовых блоков
- Реализована система версионирования документов через changelog
- Создана техническая документация по архитектуре и безопасности
- Интегрирована документация в главное меню системы
- Добавлена навигация по документам через хлебные крошки
- Реализована боковая панель с быстрой навигацией по разделам
2024-11-20
- Реализирован модуль System Logs Viewer для просмотра системных логов
- Добавлена возможность фильтрации логов по уровню серьезности
- Реализована функция скачивания и удаления log-файлов
- Добавлены языковые строки для системы логирования (34 записи на 3 языках)
- Обновлена документация по RBAC в справочнике проекта
- Добавлены вспомогательные функции форматирования размера файлов
- Реализована цветовая кодировка уровней логирования
2024-11-19
- Добавлена динамическая дата в подвал всех страниц системы
- Созданы страницы Политики конфиденциальности на 3 языках (RU, UK, EN)
- Созданы страницы Условий использования на 3 языках (RU, UK, EN)
- Реализирован контроллер PagesController для управления статическими страницами
- Обновлены шаблоны dashboadr.php и auth.php с динамическим годом в подвале
- Созданы ссылки на политику и условия в подвал страниц
- Создан новый шаблон app.php для публичных страниц
2024-11-18
- Удален доступ роли Partner к функциям создания и редактирования контента
- Создана страница ошибки 403.php для отображения отказа в доступе
- Обновлен ContentController для ограничения всех методов только для администраторов
- Реализована система проверки прав доступа на уровне контроллера
2024-11-17
- Реализована комплексная система контроля доступа на основе ролей (RBAC)
- Добавлены методы canAccessSection() и canPerformAction() в класс Auth
- Создана матрица прав доступа для 11 основных разделов системы
- Обновлено меню панели управления с динамической видимостью пунктов
- Определена иерархия ролей: Admin > Developer > Moderator > Partner > Client
- Документировано управление правами доступа в справочнике .claude
2024-11-16
- Обновлен интерфейс модерации заказов в зависимости от статуса
- Изменена логика отображения кнопок действий для различных статусов заказа
- Скрыты кнопки "Одобрить" и "Уточнить" для заказов в статусе "Выполняется"
- Добавлена кнопка "Завершена" для заказов в обработке