descriptionОписание
Техническое задание на доработку мобильного приложения "ArtBook" для создания фотокниг из детских рисунков
1. Обновленное описание проекта
Текущий статус: Приложение находится на стадии разработки с реализованным базовым функционалом. Необходима доработка модулей экспорта, заказа и интеграции с бэкендом.
Аналоги: "Это Слон" - приложение для создания фотокниг.
Цель доработки: Доведение приложения до коммерческой версии с полным циклом: создание книги → оформление заказа → оплата → передача в типографию → доставка.
2. Существующий функционал (не требует изменений)
2.1. Реализованные модули:
Стартовый экран
Выбор количества страниц (листов) в книге
Модуль загрузки изображений
Загрузка с галереи устройства
Съемка через камеру
Кропинг изображений с сохранением
Редактор макета
Страница с выбранными фото
Drag-and-drop между страницами
Перемещение изображений
Превью книги
Предпросмотр расположения изображений
Назначение обложки
Поддержка форматов:
Вертикальный (А4 портрет)
Горизонтальный (А4 альбом)
3. Требуемые доработки
3.1. Модуль 5: Система экспорта в типографию (ВЫСОКИЙ ПРИОРИТЕТ)
3.1.1. Генерация печатного файла
dart
// Требуемый функционал:
[ ] Создание PDF строго по типографским стандартам
[ ] Автоматическая расстановка вылетов под обрез (bleed 3 мм)
[ ] Добавление меток обрезки (crop marks)
[ ] Конвертация RGB → CMYK с ICC профилем
[ ] Минимальное разрешение 300 DPI
[ ] Встраивание шрифтов/конвертация в кривые
[ ] Нумерация страниц
[ ] Информационная страница с параметрами заказа
3.1.2. Валидация перед экспортом
dart
[ ] Проверка всех изображений на разрешение ≥ 300 DPI
[ ] Проверка безопасной зоны (важные элементы не ближе 5 мм к обрезу)
[ ] Проверка цветового режима
[ ] Предупреждение о потенциальных проблемах печати
3.2. Модуль 6: Система заказов (ВЫСОКИЙ ПРИОРИТЕТ)
3.2.1. Экран оформления заказа
dart
// Структура экрана:
[ ] Шаг 1: Выбор количества экземпляров (1-10)
[ ] Шаг 2: Выбор параметров печати:
- Тип бумаги: глянцевая/матовая
- Плотность бумаги: 130/150/200 г/м²
- Тип обложки: мягкая/твердая
- Ламинация обложки: глянцевая/матовая
[ ] Шаг 3: Ввод данных доставки:
- ФИО получателя
- Телефон
- Адрес (с интеграцией DaData)
- Выбор службы доставки:
* СДЭК
* Boxberry
* Почта России
* Самовывоз (если есть пункты выдачи)
[ ] Шаг 4: Расчет стоимости:
- Отображение итоговой суммы
- Разбивка по позициям
- Стоимость доставки (рассчитывается по API)
[ ] Шаг 5: Подтверждение заказа
3.2.2. Управление заказами
dart
[ ] История заказов пользователя
[ ] Текущий статус каждого заказа:
- Создан
- Ожидает оплаты
- Оплачен
- Передан в печать
- В доставке
- Доставлен
- Отменен
[ ] Уведомления об изменении статуса (push + email)
[ ] Возможность повторного заказа
3.3. Модуль 7: Платежная система (ВЫСОКИЙ ПРИОРИТЕТ)
3.3.1. Интеграция с ЮКасса (YooKassa)
dart
// Требования к реализации:
[ ] Поддержка способов оплаты:
- Банковские карты (Visa, Mastercard, МИР)
- Apple Pay / Google Pay
- SberPay
- ЮMoney
[ ] Соответствие PCI DSS
[ ] Сохранение карт для быстрой оплаты (с согласия пользователя)
[ ] Мобильный SDK ЮКасса для Flutter
[ ] Обработка статусов оплаты:
- pending (ожидает оплаты)
- waiting_for_capture (удержана, ожидает списания)
- succeeded (успешно оплачена)
- canceled (отменена)
3.3.2. Логика оплаты
dart
[ ] Оплата только после генерации макета
[ ] Автоматическая отправка файла в типографию после успешной оплаты
[ ] Возврат средств при отмене заказа
[ ] Чек по 54-ФЗ (онлайн-касса через ЮКасса)
3.4. Модуль 8: Бэкенд и серверная часть (ВЫСОКИЙ ПРИОРИТЕТ)
3.4.1. Архитектура бэкенда
yaml
Предлагаемая технология: Node.js + Express + PostgreSQL
Или: Django + PostgreSQL (если команда знает Python)
Обязательные модули:
1. Auth Service (аутентификация)
2. Order Service (управление заказами)
3. Payment Service (интеграция с ЮКасса)
4. Delivery Service (расчет доставки)
5. Print Service (взаимодействие с типографией)
6. Notification Service (уведомления)
3.4.2. Основные API endpoints
dart
// Примерная структура API:
// 1. Аутентификация
POST /api/auth/register
POST /api/auth/login
POST /api/auth/refresh
POST /api/auth/logout
// 2. Проекты пользователя
GET /api/projects
POST /api/projects
GET /api/projects/{id}
PUT /api/projects/{id}
DELETE /api/projects/{id}
// 3. Заказы
POST /api/orders # Создание заказа
GET /api/orders # Список заказов
GET /api/orders/{id} # Детали заказа
POST /api/orders/{id}/pay # Инициирование оплаты
// 4. Оплата (webhook от ЮКасса)
POST /api/payments/webhook
// 5. Доставка
GET /api/delivery/calculate # Расчет стоимости
GET /api/delivery/pvz # Список ПВЗ
// 6. Экспорт
POST /api/export/generate-pdf
GET /api/export/status/{taskId}
3.4.3. База данных
sql
-- Основные таблицы:
1. users (пользователи)
2. projects (проекты фотокниг)
3. orders (заказы)
4. payments (платежи)
5. deliveries (доставка)
6. print_files (файлы для печати)
3.5. Модуль 9: Интеграция с типографией (СРЕДНИЙ ПРИОРИТЕТ)
3.5.1. Автоматическая отправка
dart
[ ] REST API для отправки файлов в типографию
[ ] Форматы передачи:
- PDF/X-1a:2003 (рекомендуемый для печати)
- Поддержка FTP/SFTP отправки
[ ] Передача метаданных:
- ID заказа
- Параметры печати
- Контактные данные
- Адрес доставки
3.5.2. Статусы производства
dart
[ ] Получение статусов от типографии:
- Файл принят
- В производстве
- Готов к отгрузке
- Отгружен
[ ] Синхронизация статусов с приложением
3.6. Дополнительные улучшения (НИЗКИЙ ПРИОРИТЕТ)
3.6.1. UI/UX улучшения
dart
[ ] Анимации перехода между экранами
[ ] Лоадеры при загрузке
[ ] Оффлайн-режим для редактирования
[ ] Автосохранение черновиков
[ ] Возможность поделиться проектом
3.6.2. Аналитика и маркетинг
dart
[ ] Firebase Analytics
[ ] События для воронки продаж
[ ] A/B тестирование
[ ] Push-уведомления о скидках
4. Технические требования к доработке
4.1. Для Flutter разработчика
yaml
Обязательные пакеты:
- yookassa_flutter: ^2.0.0 # для оплаты
- pdf: ^5.7.2 # для генерации PDF
- printing: ^5.9.1 # для предпросмотра PDF
- dio: ^5.0.0 # для API запросов
- shared_preferences: ^2.2.2 # для локального хранения
- connectivity_plus: ^4.0.2 # проверка соединения
- flutter_local_notifications: ^15.1.1 # уведомления
- image_picker: ^1.0.4 # уже используется
- image_cropper: ^5.0.2 # уже используется
4.2. Качество кода
dart
[ ] Добавить BLoC/Cubit для новых модулей
[ ] Написать unit-тесты для критического функционала
[ ] Интеграционные тесты для API
[ ] Документация по новым модулям
[ ] Соответствие Flutter Style Guide
4.3. Безопасность
dart
[ ] Шифрование чувствительных данных
[ ] HTTPS для всех API запросов
[ ] Валидация входных данных
[ ] Защита от SQL-инъекций (на бэкенде)
[ ] Rate limiting на API