Маркетплейс картин: доска объявлений с комиссией, платными объявлениями и подписной моделью для авторов
MVP представляет собой доску объявлений и мини-маркетплейс для продажи картин и художественных работ. Платформа позволяет авторам размещать работы на продажу, а покупателям — находить и приобретать картины с защитой транзакций через эскроу-платежи. Монетизация осуществляется через комиссию с продаж, платные объявления (выделение в поиске) и подписную модель для авторов с расширенными возможностями.
Ключевые принципы: простота публикации (до 5 минут на объявление), безопасные платежи (эскроу до подтверждения получения), соблюдение законодательства РФ (ФЗ-152, оферта, правила ОРИ при наличии переписки).
| Роль | Права |
|---|---|
| Гость | Просмотр объявлений, поиск, фильтрация, регистрация |
| Пользователь | Профиль, адреса доставки, способы оплаты, покупки, отзывы, жалобы |
| Продавец | Все права пользователя + создание объявлений, управление витриной, вывод средств, статистика |
| Модератор | Модерация объявлений, обработка жалоб, блокировка контента |
| Админ | Полный доступ: пользователи, выплаты, настройки комиссий, отчёты |
| Бухгалтер/Юрист | Просмотр транзакций, актов, юридических документов (read-only + экспорт) |
{email, password, name, captcha, ref} → Out: 201 {user, token}{email, password} → Out: 200 {token, refreshToken, user}{refreshToken} → Out: 200 {token}{email} → Out: 200 {ok}200 {user}200 {profile}{name, bio, photo, payoutDetails} → Out: 200 {profile}{title, description, price, currency, photos[], category, tags[], delivery_options, visibility} → Out: 201 {listing}q, category, min_price, max_price, city, tag, sort, page, per_page → Out: 200 {items[], meta}200 {listing}{title, description, price, ...} → Out: 200 {listing}204{listing_id, buyer_id, delivery_option, payment_method} → Out: 201 {order, payment_url}{event, payment_id, status, ...} → Out: 200 {ok}200 {order, payment_status}{reason, description} → Out: 201 {dispute}{seller_id, amount, payout_method, details} → Out: 201 {payout}200 {items}Требования к контрактам: JSON REST, документация в OpenAPI/Swagger, защита JWT+RBAC, вебхуки подписываются HMAC-SHA256.
| Сущность | Ключевые поля | Связи |
|---|---|---|
| users | id, email, name, role, created_at | → listings (1:N), → orders (1:N) |
| profiles | id, user_id, bio, photo, payout_details | → users (1:1) |
| listings | id, seller_id, title, description, price, category, status, photos | → users (N:1), → orders (1:N) |
| categories | id, name, parent_id, slug | → categories (self-ref) |
| tags | id, name, slug | ↔ listings (M:N via listing_tags) |
| orders | id, listing_id, buyer_id, status, total, commission | → listings (N:1), → users (N:1) |
| payments | id, order_id, provider, amount, status, ext_id | → orders (1:1) |
| payouts | id, seller_id, amount, status, method | → users (N:1) |
| disputes | id, order_id, reason, status, resolution | → orders (1:1) |
| notifications | id, user_id, type, payload, read | → users (N:1) |
| moderation_log | id, listing_id, moderator_id, action, reason | → listings, → users |
| promo_services | id, listing_id, type, expires_at | → listings (N:1) |
ФЗ-152: Согласие на обработку ПДн при регистрации, политика конфиденциальности, право на удаление данных, хранение данных на территории РФ.
ОРИ: Если реализована внутренняя переписка — требования Роскомнадзора по идентификации и хранению сообщений.
Платежи: PCI-compliant провайдеры, не хранить PAN карт. Для РФ — ЮKassa / Tinkoff / CloudPayments; для экспорта — Stripe.
Документы: Публичная оферта, Политика конфиденциальности, Правила публикации, Cookie-Notice — обязательные страницы на сайте.