Доработка web приложения Vite + React
20 000 руб. за проект
Есть разработанное приложение на Vite + React которое берет данные в БД sqlite3.
Сейчас приложение выводит данные из базы данных. Необходима доработка:
1. Привести внешний вид таблиц в читаемый
2. Добавить фильтрацию в таблицах по тем данным что в них
3. Сделать автоматизации по работе с БД (загрузка, выгрузка и обновление данных).
Развернутое ТЗ:
1. Добавить в фильтр Цены товаров Фильтр по ячейке Конкурент, Связь и Синонимы
2. В раздел Задачи создать возможность фильтрации по Статусу, Названию задачи и Дате (от и до) последнего запуска.
3. Добавить в раздел Задачи вывод колонки Товар (товары которые внутри задачи выставлены), а также Статус товара, указанный в карточке Товара.
4. Добавить в карточку товара поле Цена закупочная (число)
5. Добавить в раздел Товары кнопку «Обновить данные Далион». Кнопка должна позволять обновлять данные о товарах Поля (Цена, Цена Закупочная, Статус).
Принцип сопоставления данных: поле Синонимы (из карточки товар) должно быть равно полю «Код» в загружаемом файле. Принцип обновления данных: Поле «Цена» = «Цена розница», поле «Цена закупочная» = «Цена поступления», поле «Статус» = АВС Анализ (Общие(Для всей номенклатуры)).
Принцип работы: при выполнении условия оле Синонимы (из карточки товар) должно быть равно полю «Код» в загружаемом файле - происходит обновление данных. (пример файла загрузки прикладываю). В случае если товара по коду не найдено, товар должен быть добавлен со всеми данными из таблицы файла.
6. В разделе задачи добавить кнопку "Изменить частоту сканирования". По нажатию на эту кнопку должен быть предложен выбор статуса из Статусов и далее выбор вариантов частоты парсинга которые есть в Задачах (ежедневно, два раза в неделю и т.д.). И далее кнопка применить. При нажатии на эту кнопку у всех задач, в которых привязанный товар относится к выбранной группе должен быть изменён период работы парсера.
7. В разделе Настройки добавить параметр "Удалять данные позже (дней)". При включении данного параметра в базе должны хранится записи с датой создания не более указанного количества дней от текущей даты. Например, если установлено значение 30. Значит в базе должны быть записи не старше 30 дней от текущей даты.
8. Должна быть реализована фильтрация:- В товарах
по Автору (один или несколько)по категории (один или несколько)
по статусу (один или несколько)- в Ценах товаров
по товару (один или несколько)по задаче (один или несколько)
по парсеру (один или несколько)по статусу (один или несколько)
9. Создать отчет на основе Отчета по конкурентам по формату Требуемый формат отчета_актуальный (прикладываю к тз). Отчет должен запускаться и формироваться в любое время работы парсера с возможным заданием Товаров, Задач. Отчет выгружается всегда на текущий момент и должен содержать уникальные записи - т.е. например парсер сделал парсинг товара позавчера, вчера и сегодня и сегодня я запустил отчет, то в отчете должны быть результаты за сегодня. А например например парсер сделал парсинг товара позавчера, вчера а сегодня я запустил отчет, то в отчете должны быть результаты за вчера.
10. Система должна позволять в своем интерфейсе внутри добавлять и редактировать:
- Товары- Разделы
- Статусы- Задачи
11. Привести пользовательский вид в наглядную форму:
Table: Users = Пользователи
password_set = Пароль
last_login = Последний вход (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
username = Логин (вывод оставляем в том формате как есть)
first_name = Имя (вывод оставляем в том формате как есть)
last_name = Фамилия (вывод оставляем в том формате как есть)
email = Еmail (вывод оставляем в том формате как есть)
is_active = Активность (выводим да или нет)
Table: Global
скрыть
Table:
Parse Task = Задачи
author = Автор (выводим first_name":"Светлана","last_name":"Садовая" в формате first_name last_name. Например Светлана Садовая)
monitoring_type = Тип мониторинга (выводим report export в формате Отчеты Экспорт)
products = Категория (выводим name из [{"id":55,"categories":[{"id":5,"name":"Кухонные принадлежности"}] Например Кухонные принадлежности)
name = Товар (вывод оставляем в том формате как есть)
status = Статус (выводим Статус (Пауза, В работе, Ошибка, Настройка)
created_at = Создана (выводим в формате dd.mm.yyyy)
updated_at = Последний запуск (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
Table: Parse Settings
скрыть
Table: Product = Товары
categories = Название Категории ( выводим name из [{"id":203,"name":"Кабели и провода"}] Например Кабели и провода)
statusproducts = Категория ( выводим name из [{"id":2,"name":"A"}]Например А)
created_at = Создана (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
updated_at = Изменен (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
name = Товар (вывод оставляем в том формате как есть)
linked_id = Ответственный КМ (вывод оставляем в том формате как есть)
price = Цена (вывод оставляем в том формате как есть)
Table: Category = Категории
author = автор (выводим first_name":"Светлана","last_name":"Садовая" в формате first_name last_name. Например Светлана Садовая)
created_at = Создана (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
updated_at = Изменен (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
name = Название категории (вывод оставляем в том формате как есть)
Table: Product Price = История парсинга
цен
product = Название нашего товара (выводим name из {"id":181,"name":"Лента для ЛШМ, P60, 75х533мм, 3шт". Например Лента для ЛШМ, P60, 75х533мм)
parse_settings = Сайт парсинга (выводим domain из {"id":9,"domain":"www.vseinstrumenti.ru"} Например www.vseinstrumenti.ru)
parse_settings = Задача ( выводим name из {"id":171,"name":"Лента для ЛШМ, P60, 75х533мм, 3шт"}Например Лента для ЛШМ, P60, 75х533мм, 3шт)
created_at = Создана (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
updated_at = Изменен (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
price = Цена (вывод оставляем в том формате как есть)
competitor = Конкурент (вывод оставляем в том формате как есть)
Table: Status ProductTable: Parse Settings
скрыть
Сейчас приложение выводит данные из базы данных. Необходима доработка:
1. Привести внешний вид таблиц в читаемый
2. Добавить фильтрацию в таблицах по тем данным что в них
3. Сделать автоматизации по работе с БД (загрузка, выгрузка и обновление данных).
Развернутое ТЗ:
1. Добавить в фильтр Цены товаров Фильтр по ячейке Конкурент, Связь и Синонимы
2. В раздел Задачи создать возможность фильтрации по Статусу, Названию задачи и Дате (от и до) последнего запуска.
3. Добавить в раздел Задачи вывод колонки Товар (товары которые внутри задачи выставлены), а также Статус товара, указанный в карточке Товара.
4. Добавить в карточку товара поле Цена закупочная (число)
5. Добавить в раздел Товары кнопку «Обновить данные Далион». Кнопка должна позволять обновлять данные о товарах Поля (Цена, Цена Закупочная, Статус).
Принцип сопоставления данных: поле Синонимы (из карточки товар) должно быть равно полю «Код» в загружаемом файле. Принцип обновления данных: Поле «Цена» = «Цена розница», поле «Цена закупочная» = «Цена поступления», поле «Статус» = АВС Анализ (Общие(Для всей номенклатуры)).
Принцип работы: при выполнении условия оле Синонимы (из карточки товар) должно быть равно полю «Код» в загружаемом файле - происходит обновление данных. (пример файла загрузки прикладываю). В случае если товара по коду не найдено, товар должен быть добавлен со всеми данными из таблицы файла.
6. В разделе задачи добавить кнопку "Изменить частоту сканирования". По нажатию на эту кнопку должен быть предложен выбор статуса из Статусов и далее выбор вариантов частоты парсинга которые есть в Задачах (ежедневно, два раза в неделю и т.д.). И далее кнопка применить. При нажатии на эту кнопку у всех задач, в которых привязанный товар относится к выбранной группе должен быть изменён период работы парсера.
7. В разделе Настройки добавить параметр "Удалять данные позже (дней)". При включении данного параметра в базе должны хранится записи с датой создания не более указанного количества дней от текущей даты. Например, если установлено значение 30. Значит в базе должны быть записи не старше 30 дней от текущей даты.
8. Должна быть реализована фильтрация:- В товарах
по Автору (один или несколько)по категории (один или несколько)
по статусу (один или несколько)- в Ценах товаров
по товару (один или несколько)по задаче (один или несколько)
по парсеру (один или несколько)по статусу (один или несколько)
9. Создать отчет на основе Отчета по конкурентам по формату Требуемый формат отчета_актуальный (прикладываю к тз). Отчет должен запускаться и формироваться в любое время работы парсера с возможным заданием Товаров, Задач. Отчет выгружается всегда на текущий момент и должен содержать уникальные записи - т.е. например парсер сделал парсинг товара позавчера, вчера и сегодня и сегодня я запустил отчет, то в отчете должны быть результаты за сегодня. А например например парсер сделал парсинг товара позавчера, вчера а сегодня я запустил отчет, то в отчете должны быть результаты за вчера.
10. Система должна позволять в своем интерфейсе внутри добавлять и редактировать:
- Товары- Разделы
- Статусы- Задачи
11. Привести пользовательский вид в наглядную форму:
Table: Users = Пользователи
password_set = Пароль
last_login = Последний вход (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
username = Логин (вывод оставляем в том формате как есть)
first_name = Имя (вывод оставляем в том формате как есть)
last_name = Фамилия (вывод оставляем в том формате как есть)
email = Еmail (вывод оставляем в том формате как есть)
is_active = Активность (выводим да или нет)
Table: Global
скрыть
Table:
Parse Task = Задачи
author = Автор (выводим first_name":"Светлана","last_name":"Садовая" в формате first_name last_name. Например Светлана Садовая)
monitoring_type = Тип мониторинга (выводим report export в формате Отчеты Экспорт)
products = Категория (выводим name из [{"id":55,"categories":[{"id":5,"name":"Кухонные принадлежности"}] Например Кухонные принадлежности)
name = Товар (вывод оставляем в том формате как есть)
status = Статус (выводим Статус (Пауза, В работе, Ошибка, Настройка)
created_at = Создана (выводим в формате dd.mm.yyyy)
updated_at = Последний запуск (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
Table: Parse Settings
скрыть
Table: Product = Товары
categories = Название Категории ( выводим name из [{"id":203,"name":"Кабели и провода"}] Например Кабели и провода)
statusproducts = Категория ( выводим name из [{"id":2,"name":"A"}]Например А)
created_at = Создана (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
updated_at = Изменен (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
name = Товар (вывод оставляем в том формате как есть)
linked_id = Ответственный КМ (вывод оставляем в том формате как есть)
price = Цена (вывод оставляем в том формате как есть)
Table: Category = Категории
author = автор (выводим first_name":"Светлана","last_name":"Садовая" в формате first_name last_name. Например Светлана Садовая)
created_at = Создана (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
updated_at = Изменен (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
name = Название категории (вывод оставляем в том формате как есть)
Table: Product Price = История парсинга
цен
product = Название нашего товара (выводим name из {"id":181,"name":"Лента для ЛШМ, P60, 75х533мм, 3шт". Например Лента для ЛШМ, P60, 75х533мм)
parse_settings = Сайт парсинга (выводим domain из {"id":9,"domain":"www.vseinstrumenti.ru"} Например www.vseinstrumenti.ru)
parse_settings = Задача ( выводим name из {"id":171,"name":"Лента для ЛШМ, P60, 75х533мм, 3шт"}Например Лента для ЛШМ, P60, 75х533мм, 3шт)
created_at = Создана (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
updated_at = Изменен (выводим в формате dd.mm.yyyy ЧАС:МИН) Например 02.02.2024 21:04
price = Цена (вывод оставляем в том формате как есть)
competitor = Конкурент (вывод оставляем в том формате как есть)
Table: Status ProductTable: Parse Settings
скрыть
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Рекомендую