Разработка веб-сайта каталога для художника.

5 000 руб. за проект
11 сентября 2023, 13:43 • 23 отклика • 172 просмотра
Веб-приложение, предназначенное для ведения каталогов картин художника и автоматизированного размещения картин на внешних ресурсах.
**Картина** - это сущность, которая включает в себя
- один или несколько медиа файлов (изображений, видео), содержащих фото картины разного размера и качества, видео-демонстрации картины в интерьере и т.д.
- структурированные метаданные (название, год написания, описания, теги и т.д.). Некоторые поля метаданных могут быть одновременно на нескольких языках (например, описание на русском и английском).
**Каталог** - одна или несколько картин, сгруппированных вместе по какому-либо признаку. Каталоги могут создаваться в ручном режиме либо автоматически.
Предполагается применение веб-приложения только для личного использования. Другие люди с приложением не взаимодействуют. Они видят картины, размещенные на внешних ресурсах.
#### User-story 1 Наполнение архива
Для наполнения архива пользователь последовательно создаёт новые картины в веб-приложении. Для этого он нажимает кнопку "Создать картину" в главном меню
Открывается форма создания и редактирования картины.
В этой форме пользователь видит следующие поля:
- Идентификатор - уникальное целое число - обязательное
- Название - текст (несколько языков) - обязательно хотя бы на одном языке
- Стиль - выпадающий список
- Жанр - выпадающий список
- Материал - выпадающий список
- Техника - выпадающий список
- Высота
- Ширина
- Оформлена (нет, паспарту, рамка)
- Описание - текст (несколько языков)
- Ключевые слова
- Месяц, год создания
- Цена - денежный формат (может быть задана цена для нескольких валют)
- Статус (личная, для продажи, на заказ, продана, подарена, архив)
Содержание выпадающих списков можно отредактировать в отдельном окне. Описания и цены можно добавлять в самой форме.
Все поля, кроме идентификатора могут редактироваться.
Пользователь может загрузить 1 или несколько медиа файлов. Для каждого файла
- должно быть задано имя (по умолчанию совпадает с именем файла, может редактироваться пользователем)
- должны быть загружены метаданные из файла (формат, размер файла, размер изображения, продолжительность видео)
- может быть задано описание (редактируется пользователем)
Для каждого медиа файла отображается его миниатюра. При нажатии на миниатюру открывается окно просмотра медиа-файла.
Пользователь заполняет все необходимые поля и загружает медиа. Для завершения создания картины необходимо нажать кнопку сохранить.
Для редактирования картины открывается это же окно. Все внесённые изменения так же сохраняются.
Допускается наличие картин без медиа файлов.
#### User-story 2 Поиск картин по запросу
Поиск картин происходит в отдельном окне поиска. Переход в окно происходит с помощью нажатия на кнопку "Поиск" в главном меню
Поиск возможен по любому атрибуту или группе атрибутов картины или медиа. Для числовых данных доступно задание диапазона значений. Для текста доступных шаблоны поиска.
Картины, подходящие под критерии поиска, отображаются в виде списка в области результатов поиска.
Варианты действий пользователя
1. Пользователь может выбрать одну, несколько или все найденные картины и по нажатию кнопки "Создать каталог" переместиться в окно создания нового каталога с уже заполненным списком картин.
2. Пользователь может выбрать одну, несколько или все найденные картины и по нажатию кнопки "Поместить в каталог" перейти к диалогу выбора одного из существующих каталогов. После выбора каталога, выбранные картины перемещаются в этот каталог. Если картина уже была в выбранном каталоге, то с картиной ничего не происходит.
3. Пользователь может выбрать одну, несколько или все найденные картины и по нажатию кнопки "Удалить" перейти к диалогу удаления картин
4. Пользователь может нажать на отдельную строку в списке в области результатов поиска и перейти в окно редактирования картины
#### User-story 3 Формирование и управление каталогами
Картины группируются в каталоги. Каталог - логическая сущность. Картина может находится одновременно в нескольких каталогах. Сущности при этом не дублируются, т.е каталоги хранят ссылки на картины, а не сами картины. Каталоги могут иметь древовидную структуру и содержать как картины так и другие каталоги.
Каталоги отображаются в виде дерева в отдельной панели "Каталоги".
Существует общий корневой каталог картин. Его нельзя удалить. В нем находятся все картины и все другие каталоги.
Все созданные картины помещаются в корневой каталог.
Содержащиеся в каталоге картины отображаются в отдельной области "Содержание каталога" в виде списка, либо в виде миниатюр. Отображение выбирается пользователем. Вложенные каталоги в области "Содержание каталога" не отображаются. При нажатии на картину открывается окно редактирования картины. Можно выбрать одну, несколько или все картины в каталоге
Создание, редактирование и удаление каталогов происходит в панели "Каталоги". Картины в панели "Каталоги" не отображаются. Каталоги можно перетаскивать из одной ветки в другую.
Картины из области "Содержание каталога" (одну, несколько или все) можно перетаскивать в различные каталоги в панели "Каталоги". При перетаскивании картины не перемещаются, а копируются в целевой каталог. Из исходного каталога картина не удаляется.
Для удаления картины из каталога, надо нажать на кнопку удаления. При этом картина удаляется из выбранного каталога, но остается в хранилище и доступна в корневом каталоге. Для удаления картины из хранилища надо перейти в корневой каталог и удалить картину там.
При нажатии на кнопку "Создать картину", она создается в корневом каталоге и автоматически копируется в каталог, который отображается в данный момент.
Примечание
Для понимания общей логики можно посмотреть, как устроена работа с каталогами в приложении Zotero. В веб-приложении должно быть похоже, только вместо карточек книг картины
#### User-story 4 Подготовка к выгрузке картин на внешние ресурсы
В форме создания и редактирования картины пользователь может нажать кнопку "выгрузить". Возле всех полей и медиафайлов появляются поля выбора (квадратик, в котором можно поставить галочку). Пользователь проставляет галочки в нужных полях и нажимает кнопку "Отправить". Формируется json, содержащий все выбранные поля и ссылки на медиа ресурсы. json сохраняется в отдельной папке и одновременно отображается на экране.
Впоследствии планируется выгрузка картин на внешние ресурсы и сформированный json будет использоваться при вызовах API. Сохранение json на диск нужно в отладочных целях
#### User-story 5 Построение отчётов
Пользователь может сформировать отчеты о текущем состоянии архива. В главном меню он нажимает кнопку "Создать отчет".
Открывается форма, содержащая:
1. Общее количество картин в хранилище
2. Общее количество медиа-файлов в хранилище, занимаемый ими объем
3. Общее количество картин, для которых запускалась функция подготовки к выгрузке
#### User-story 6 Сбор данных о картинах с внешних ресурсов
Реализация в будущем
#### Ограничения
Дизайн приложения - не приоритет. Можно использовать любые стандартные/бесплатные решения, обеспечивающие наглядность и удобство работы.
Веб-приложение будет в основном применяться со стационарного компьютера или ноутбука. Мобильное приложение не требуется.
Веб-приложение будет развертываться на vps.
Веб-приложение должно быть реализовано на python с применением какого-либо распространенного фреймворка (flask, django)
Веб-приложение должно содержать форму авторизации пользователя.
Результат должен быть оформлен как репозиторий на github
Дополнительно в проекте должен быть сформирован dockerfile/docker-compose файлы для развертывания Веб-приложения на сервере