Атестаційні завдання K2 ERP/Аукціон
Атестаційне завдання K2 ERP — Аукціон — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у створенні модуля обліку аукціонів, лотів, учасників, ставок, переможців, рахунків, оплат, комісій, документів і звітності.
Модуль має забезпечувати повний цикл проведення аукціону: учасник → реєстрація → верифікація → аукціон → лот → ставка → історія ставок → завершення торгів → визначення переможця → рахунок → оплата → передача лота → звіт.
Коротко. Потрібно реалізувати модуль аукціону: учасники, верифікація, категорії лотів, аукціони, лоти, ставки в реальному часі, антиснайпер, визначення переможців, рахунки, оплати, комісії, кабінет учасника, панель адміністратора, документи, звіти й AJAX/WebSocket-інтерактив.
Назва завдання
Модуль обліку лотів, ставок, учасників і проведення аукціонів у режимі реального часу.
Мета завдання
Мета завдання — створити в K2 ERP модуль для організації та проведення онлайн, фізичних або гібридних аукціонів.
Система повинна дозволяти:
- вести базу учасників;
- проводити верифікацію учасників;
- вести категорії лотів;
- створювати аукціони;
- додавати лоти до аукціону;
- завантажувати фото, документи й опис лотів;
- задавати стартову ціну;
- задавати мінімальний крок ставки;
- реєструвати ставки в реальному часі;
- перевіряти коректність ставок;
- вести повну історію ставок;
- автоматично визначати переможця;
- підтримувати антиснайперське продовження торгів;
- формувати рахунок переможцю;
- фіксувати оплату;
- нараховувати комісію аукціонної компанії;
- формувати документи у PDF;
- підтримувати кабінет учасника;
- підтримувати панель адміністратора;
- формувати звіти по аукціонах, лотах, ставках, переможцях і фінансах.
Головний принцип. Аукціон має бути прозорим: кожна ставка повинна фіксуватися з точним часом, учасником, сумою, лотом і результатом перевірки.
Реальний бізнес-контекст
Аукціонна компанія проводить торги різними видами майна:
- автомобілі;
- нерухомість;
- техніка;
- картини;
- антикваріат;
- ювелірні вироби;
- обладнання;
- складські залишки;
- майно підприємств;
- благодійні лоти;
- колекційні предмети;
- інші активи.
Аукціони можуть бути:
- онлайн;
- фізичні;
- гібридні;
- закриті;
- відкриті;
- благодійні;
- комерційні;
- державні або корпоративні, якщо передбачено умовами.
Компанії потрібно:
- публікувати аукціони;
- реєструвати учасників;
- перевіряти допуск учасників до торгів;
- вести лоти;
- приймати ставки;
- захищати процес торгів від помилок і зловживань;
- визначати переможців;
- виставляти рахунки;
- контролювати оплати;
- формувати фінансову й операційну звітність.
Основний бізнес-процес
Типовий процес роботи аукціонної компанії виглядає так:
- адміністратор створює аукціон;
- додає категорії та лоти;
- задає стартову ціну, крок ставки і час торгів;
- учасник реєструється;
- учасник проходить верифікацію;
- учасник отримує доступ до аукціону;
- аукціон переходить у статус «Активний»;
- учасники роблять ставки;
- система перевіряє кожну ставку;
- система оновлює поточну ціну лота;
- система веде історію ставок;
- після завершення торгів визначається переможець;
- переможцю формується рахунок;
- фіксується оплата;
- лот переходить у статус «Проданий»;
- адміністрація формує звіти.
Основні об’єкти модуля
| Об’єкт | Призначення |
|---|---|
| Учасники | Фізичні або юридичні особи, які беруть участь у торгах |
| Верифікація | Перевірка учасника перед допуском до аукціону |
| Категорії лотів | Класифікація майна |
| Аукціони | Події, в межах яких проводяться торги |
| Лоти | Об’єкти продажу |
| Ставки | Пропозиції учасників щодо ціни |
| Історія ставок | Повний журнал усіх ставок |
| Переможці | Учасники, які зробили найвищі ставки |
| Рахунки | Документи на оплату виграних лотів |
| Оплати | Фактичні платежі |
| Комісії | Винагорода аукціонної компанії |
| Документи | PDF-рахунки, протоколи торгів, акти |
| Звіти | Аналітика по аукціонах, лотах, ставках і фінансах |
Довідник «Учасники»
Учасник — це особа або компанія, яка може робити ставки.
Типи учасників
- фізична особа;
- юридична особа;
- ФОП;
- представник компанії;
- внутрішній учасник, якщо потрібно;
- VIP-учасник, опціонально.
Поля учасника
| Поле | Опис |
|---|---|
| ПІБ або назва компанії | Найменування учасника |
| Тип учасника | Фізична особа, юридична особа, ФОП |
| Телефон | Контактний номер |
| Контактна адреса і логін | |
| ІПН / ЄДРПОУ | Ідентифікаційний код |
| Паспортні дані | Для фізичних осіб, якщо потрібно |
| Контактна особа | Для юридичних осіб |
| Статус | Новий, активний, заблокований, архівний |
| Дата реєстрації | Коли створено учасника |
| Коментар | Внутрішня примітка адміністратора |
Верифікація учасників
Перед участю в аукціоні учасник може проходити перевірку.
Статуси верифікації
| Статус | Опис |
|---|---|
| Не перевірено | Учасник ще не проходив перевірку |
| На перевірці | Документи очікують перевірки |
| Підтверджено | Учасник допущений до торгів |
| Відхилено | Учасника не допущено |
| Заблоковано | Учаснику заборонено участь |
Поля верифікації
| Поле | Опис |
|---|---|
| Учасник | Кого перевіряють |
| Тип перевірки | Документи, контактні дані, депозит, інше |
| Файл документа | Паспорт, виписка, довіреність тощо |
| Статус | Поточний стан перевірки |
| Перевірив | Адміністратор або менеджер |
| Дата перевірки | Коли перевірено |
| Коментар | Причина відхилення або примітка |
Довідник «Категорії лотів»
Категорії потрібні для групування лотів і фільтрації.
Приклади категорій
- автомобілі;
- нерухомість;
- мистецтво;
- техніка;
- промислове обладнання;
- антикваріат;
- ювелірні вироби;
- меблі;
- електроніка;
- благодійні лоти;
- інше.
Поля категорії
| Поле | Опис |
|---|---|
| Назва категорії | Назва для списку |
| Батьківська категорія | Для ієрархії, опціонально |
| Опис | Коротке пояснення |
| Статус | Активна або архівна |
База «Аукціони»
Аукціон — це подія, в межах якої продаються лоти.
Типи аукціонів
- онлайн;
- фізичний;
- гібридний;
- відкритий;
- закритий;
- благодійний;
- комерційний;
- корпоративний.
Колонки бази аукціонів
| Колонка | Опис |
|---|---|
| Назва аукціону | Назва події |
| Тип аукціону | Онлайн, фізичний, гібридний |
| Дата та час початку | Початок торгів |
| Дата та час завершення | Завершення торгів |
| Статус | Запланований, активний, завершений, скасований |
| Опис | Короткий опис |
Поля аукціону
| Поле | Опис |
|---|---|
| Назва аукціону | Назва |
| Тип аукціону | Онлайн, фізичний, гібридний |
| Дата початку | Коли стартує |
| Час початку | Час старту |
| Дата завершення | Коли завершується |
| Час завершення | Час завершення |
| Опис | Опис умов торгів |
| Правила участі | Текст правил |
| Дозволити антиснайпер | Так або ні |
| Час антиснайпера | Наприклад: +2 хвилини після ставки в останні 30 секунд |
| Статус | Поточний стан |
Статуси аукціону
| Статус | Значення |
|---|---|
| Чернетка | Аукціон створено, але не опубліковано |
| Запланований | Аукціон опубліковано, але торги ще не почались |
| Активний | Торги тривають |
| Завершується | До завершення залишилось мало часу |
| Завершений | Торги завершено |
| Скасований | Аукціон скасовано |
База «Лоти»
Лот — це об’єкт продажу на аукціоні.
Колонки бази лотів
| Колонка | Опис |
|---|---|
| Аукціон | До якого аукціону належить |
| Назва лота | Назва майна |
| Категорія | Категорія лота |
| Опис | Детальна інформація |
| Стартова ціна | Мінімальна початкова ціна |
| Крок ставки | Мінімальне підвищення |
| Поточна ціна | Оновлюється автоматично |
| Статус | Активний, проданий, знятий з торгів |
Поля лота
| Поле | Опис |
|---|---|
| Аукціон | Аукціон, до якого прив’язаний лот |
| Номер лота | Унікальний номер у межах аукціону |
| Назва лота | Назва об’єкта |
| Категорія | Категорія лота |
| Опис | Детальний опис |
| Стартова ціна | Початкова ціна |
| Мінімальний крок ставки | Мінімальне підвищення |
| Поточна ціна | Остання актуальна ставка |
| Резервна ціна | Мінімальна ціна продажу, опціонально |
| Валюта | UAH, USD, EUR або інша |
| Фото | Зображення лота |
| Документи | Файли, сертифікати, технічні документи |
| Статус | Поточний стан лота |
Статуси лота
| Статус | Значення |
|---|---|
| Чернетка | Лот створено, але не опубліковано |
| Активний | Лот бере участь у торгах |
| Очікує старту | Торги по лоту ще не почались |
| Торги тривають | Ставки приймаються |
| Очікує оплати | Переможець визначений, рахунок виставлено |
| Проданий | Лот оплачено |
| Не проданий | Торги завершились без переможця або не досягнута резервна ціна |
| Знятий з торгів | Лот прибрано з аукціону |
База «Ставки»
Ставка — це пропозиція учасника заплатити певну суму за лот.
Поля ставки
| Поле | Опис |
|---|---|
| Лот | На який лот зроблено ставку |
| Аукціон | До якого аукціону належить |
| Учасник | Хто зробив ставку |
| Дата і час ставки | Точний час створення |
| Сума ставки | Запропонована сума |
| Поточна ціна до ставки | Для аудиту |
| IP-адреса / пристрій | Опціонально для безпеки |
| Статус | Прийнята, відхилена, скасована |
| Причина відхилення | Якщо ставка не прийнята |
Правила перевірки ставки
Система має перевіряти кожну ставку.
Ставка приймається, якщо:
- аукціон активний;
- лот активний;
- учасник активний;
- учасник допущений до аукціону;
- ставка зроблена в межах часу торгів;
- сума ставки більша за поточну ціну;
- сума ставки не менша ніж поточна ціна + мінімальний крок;
- лот не знятий з торгів;
- учасник не заблокований.
Приклад перевірки ставки
Якщо:
- поточна ціна: 10 000 грн;
- крок ставки: 500 грн;
то мінімальна наступна ставка:
10 000 + 500 = 10 500 грн
Ставка 10 300 грн має бути відхилена.
Історія ставок
Історія ставок має бути незмінним журналом.
В історії потрібно зберігати
- лот;
- учасника;
- суму ставки;
- точний час ставки;
- статус ставки;
- причину відхилення, якщо є;
- користувача або систему, що обробила ставку;
- технічні дані, якщо потрібно.
Критично. Історію ставок не можна просто видаляти або редагувати без аудиту. Для прозорості потрібно зберігати журнал усіх прийнятих і відхилених ставок.
Антиснайперська функція, опціонально
Антиснайпер захищає аукціон від ставок в останні секунди.
Логіка антиснайпера
Якщо ставка зроблена в останній заданий період, наприклад у останні 30 секунд, система автоматично продовжує торги по лоту, наприклад на 2 хвилини.
Поля налаштування антиснайпера
| Поле | Опис |
|---|---|
| Увімкнено | Так або ні |
| Період спрацювання | Наприклад: останні 30 секунд |
| Час продовження | Наприклад: 2 хвилини |
| Максимальна кількість продовжень | Опціонально |
Визначення переможця
Переможець — це учасник, який зробив найвищу прийняту ставку на момент завершення торгів.
Умови визначення переможця
- аукціон або лот завершено;
- є хоча б одна прийнята ставка;
- ставка є найвищою;
- учасник не заблокований;
- якщо є резервна ціна — фінальна ставка має бути не нижча за резервну ціну.
Поля результату торгів
| Поле | Опис |
|---|---|
| Аукціон | Де проходили торги |
| Лот | Який лот |
| Переможець | Учасник з найвищою ставкою |
| Фінальна ставка | Ціна продажу |
| Дата завершення | Коли завершено торги |
| Статус | Очікує оплати, оплачено, скасовано |
Фінанси
Фінансовий блок має обліковувати рахунки, оплати і комісії.
Рахунок переможцю
Після завершення торгів система формує рахунок переможцю.
Поля рахунку
| Поле | Опис |
|---|---|
| Номер рахунку | Унікальний номер |
| Учасник | Переможець аукціону |
| Лот | За який лот виставлено рахунок |
| Фінальна ставка | Сума продажу |
| Комісія | Комісія аукціонної компанії, якщо є |
| Загальна сума | Сума до оплати |
| Термін оплати | До якої дати потрібно оплатити |
| Оплачено | Скільки сплачено |
| Борг | Залишок |
| Статус | Очікує оплату, частково оплачено, оплачено, прострочено, скасовано |
Комісія аукціонної компанії
Комісія може розраховуватися:
- як відсоток від фінальної ставки;
- як фіксована сума;
- як комісія з продавця;
- як комісія з покупця;
- як комбінована комісія.
Формула комісії
Комісія = Фінальна ставка × Відсоток комісії / 100
Оплати
Система має підтримувати повну і часткову оплату.
Поля оплати
| Поле | Опис |
|---|---|
| Учасник | Хто оплатив |
| Рахунок | За який рахунок оплата |
| Дата оплати | Коли отримано кошти |
| Сума | Сума платежу |
| Спосіб оплати | Банківський переказ, карта, готівка, онлайн-оплата |
| Статус | Успішно, очікує, помилка, повернення |
| Коментар | Примітка бухгалтера |
Особистий кабінет учасника
Учасник у кабінеті має бачити:
- доступні аукціони;
- активні лоти;
- свої ставки;
- виграні лоти;
- рахунки;
- оплати;
- документи;
- статус верифікації;
- повідомлення адміністрації.
Панель адміністратора
Адміністратор у панелі має бачити:
- список аукціонів;
- список лотів;
- учасників;
- статуси верифікації;
- історію ставок;
- активні торги;
- лоти без ставок;
- переможців;
- неоплачені рахунки;
- фінансові звіти;
- журнал змін.
Сповіщення
Система має підтримувати сповіщення.
Події для сповіщень
- учасник зареєстрований;
- учасника підтверджено;
- учасника відхилено;
- аукціон скоро починається;
- аукціон активний;
- зроблено нову ставку;
- ставку перебито;
- лот виграно;
- сформовано рахунок;
- наближається термін оплати;
- рахунок прострочено;
- оплата отримана;
- лот знято з торгів.
Документи
Система має формувати PDF-документи.
Приклади документів
- рахунок переможцю;
- протокол торгів;
- акт продажу лота;
- акт передачі лота;
- квитанція про оплату;
- звіт по аукціону;
- історія ставок по лоту;
- документ підтвердження перемоги.
Звіти
Звіт «Аукціони за період»
У звіті потрібно відображати:
- назву аукціону;
- тип;
- дату початку;
- дату завершення;
- кількість лотів;
- кількість проданих лотів;
- суму продажів;
- статус.
Звіт «Лоти і продажі»
У звіті потрібно відображати:
- лот;
- категорію;
- стартову ціну;
- фінальну ціну;
- кількість ставок;
- переможця;
- статус оплати.
Звіт «Історія ставок»
У звіті потрібно відображати:
- лот;
- учасника;
- суму ставки;
- час ставки;
- статус ставки;
- причину відхилення, якщо є.
Звіт «Переможці аукціонів»
У звіті потрібно відображати:
- аукціон;
- лот;
- переможця;
- фінальну ставку;
- рахунок;
- статус оплати.
Звіт «Фінанси аукціону»
У звіті потрібно відображати:
- суму продажів;
- суму комісій;
- суму оплат;
- борги;
- кількість прострочених рахунків.
Звіт «Активність учасників»
У звіті потрібно відображати:
- учасника;
- кількість ставок;
- кількість виграних лотів;
- суму виграних лотів;
- суму оплат.
AJAX/WebSocket-інтерактив
Інтерфейс має працювати швидко й без перезавантаження сторінок.
Через AJAX або WebSocket мають працювати:
- оновлення поточної ціни лота;
- реєстрація ставки;
- перевірка ставки;
- оновлення таймера;
- повідомлення про перебиту ставку;
- оновлення історії ставок;
- оновлення статусу лота;
- оновлення кабінету учасника;
- оновлення панелі адміністратора;
- формування рахунку;
- фіксація оплати;
- фільтрація звітів.
Логування змін
Модуль повинен фіксувати ключові дії.
Журнал змін має зберігати:
- хто створив учасника;
- хто підтвердив учасника;
- хто створив аукціон;
- хто змінив статус аукціону;
- хто створив лот;
- хто змінив параметри лота;
- хто зробив ставку;
- чи прийнята ставка;
- хто завершив торги;
- хто визначив переможця;
- хто сформував рахунок;
- хто зафіксував оплату;
- хто зняв лот з торгів;
- дату й час дії;
- старе та нове значення, якщо це можливо.
Права доступу
Модуль має підтримувати рольову модель.
| Роль | Можливості |
|---|---|
| Учасник | Переглядає аукціони, робить ставки, бачить свої ставки, виграші, рахунки й документи |
| Модератор | Перевіряє учасників, документи і допуск до торгів |
| Аукціоніст | Керує аукціонами, лотами, статусами торгів і завершенням аукціону |
| Бухгалтер | Формує рахунки, фіксує оплати, контролює борги і комісії |
| Керівник | Переглядає всі аукціони, продажі, фінанси, звіти і активність учасників |
| Адміністратор системи | Налаштовує довідники, права, шаблони документів і службові параметри |
Технічні вимоги
| Параметр | Опис |
|---|---|
| Бекенд | K2 Cloud ERP на Python або PHP |
| База даних | PostgreSQL або MySQL |
| Фронтенд | HTML5, JavaScript |
| Реальний час | WebSocket або AJAX для ставок і оновлення цін |
| UI-компоненти | DataTables для аукціонів, лотів і ставок; Select2 для пошуку лотів і учасників |
| Таймери | Countdown-таймери для аукціонів і лотів |
| Файли | Завантаження фото, документів, сертифікатів |
| Друк | PDF-рахунки, протоколи торгів, акти продажу |
| Експорт | Excel або PDF для звітів |
| Безпека | Рольовий доступ, журнал ставок, аудит змін |
Рекомендовані сутності бази даних
Для реалізації задачі доцільно передбачити такі сутності:
- учасники;
- верифікації учасників;
- категорії лотів;
- аукціони;
- лоти;
- фото лотів;
- документи лотів;
- ставки;
- історія ставок;
- переможці;
- рахунки;
- позиції рахунків;
- оплати;
- комісії;
- сповіщення;
- документи;
- журнал змін;
- права доступу;
- звіти.
Практичне завдання
У межах атестації потрібно продемонструвати робочий сценарій.
Мінімальний сценарій:
- створити учасника;
- провести верифікацію учасника;
- створити категорію лотів;
- створити аукціон;
- додати лот;
- задати стартову ціну і крок ставки;
- опублікувати аукціон;
- перевести аукціон у статус «Активний»;
- зробити першу ставку;
- зробити некоректну ставку нижче мінімального кроку;
- перевірити її відхилення;
- зробити коректну вищу ставку;
- перевірити оновлення поточної ціни;
- перевірити історію ставок;
- завершити аукціон;
- визначити переможця;
- сформувати рахунок переможцю;
- нарахувати комісію;
- зафіксувати часткову оплату;
- перевірити борг;
- зафіксувати повну оплату;
- змінити статус лота на «Проданий»;
- сформувати PDF-протокол торгів;
- сформувати звіт по аукціону;
- перевірити журнал змін і права доступу.
Критерії оцінювання
| Критерій | Бали | Що перевіряється |
|---|---|---|
| Реалізація бази аукціонів, лотів і учасників | 20 | Учасники, верифікація, категорії, аукціони, лоти, фото, документи, статуси |
| Управління ставками і визначення переможців | 20 | Перевірка ставок, історія ставок, поточна ціна, таймери, антиснайпер, переможці |
| Фінансовий облік і виставлення рахунків | 20 | Рахунки, комісії, часткові оплати, повні оплати, борги, статуси оплат |
| Інтерактивність через AJAX або WebSocket | 20 | Оновлення ставок, таймерів, ціни, історії ставок і кабінетів у реальному часі |
| Зручність користування для учасників і адміністраторів | 20 | Кабінет учасника, панель адміністратора, фільтри, звіти, PDF-документи |
| Разом | 100 | Максимальна оцінка |
Шкала оцінювання
| Бали | Рівень | Опис |
|---|---|---|
| 90–100 | Відмінно | Модуль повністю працює: учасники, аукціони, лоти, ставки, переможці, рахунки, оплати, кабінети і звіти реалізовані коректно |
| 75–89 | Добре | Основна логіка працює, є незначні недоліки, які не руйнують процес проведення аукціону |
| 60–74 | Зараховано | Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання |
| 0–59 | Не зараховано | Відсутня критична логіка: учасники, аукціони, лоти, ставки, переможці, рахунки або оплати |
Критичні помилки
Критичними помилками вважаються ситуації, коли:
- неможливо створити учасника;
- неможливо створити аукціон;
- неможливо створити лот;
- лот не прив’язується до аукціону;
- неможливо зробити ставку;
- некоректна ставка приймається системою;
- коректна ставка не оновлює поточну ціну;
- історія ставок не зберігається;
- система не визначає переможця;
- рахунок переможцю не формується;
- часткова оплата не змінює борг;
- повна оплата не змінює статус рахунку;
- учасник бачить чужі рахунки або закриті дані;
- звіти не відповідають фактичним ставкам, лотам і оплатам;
- зміни ставок, лотів, рахунків і оплат не логуються.
Умова складання. Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл аукціону: учасник → лот → ставка → історія ставок → переможець → рахунок → оплата → протокол → звіт.
Очікуваний результат
У результаті виконання атестаційного завдання має бути створений модуль аукціону в K2 ERP.
Модуль має підтримувати учасників, верифікацію, категорії лотів, аукціони, лоти, ставки, історію ставок, антиснайпер, переможців, рахунки, оплати, комісії, кабінет учасника, панель адміністратора, PDF-документи, звіти, AJAX/WebSocket-інтерактив, журнал змін і рольовий доступ.
Примітка
ERP для аукціонів критично важлива для прозорого, швидкого й безпечного проведення торгів у реальному часі.
Якісна аукціонна система має не тільки приймати ставки, а й гарантувати чесність правил, точність історії ставок, правильне визначення переможця і прозорий фінансовий облік.
Коротко
| Питання | Відповідь |
|---|---|
| Що потрібно створити? | Модуль проведення аукціонів |
| Які довідники потрібні? | Учасники, категорії лотів, аукціони, лоти |
| Який головний процес? | Лот → ставки → переможець → рахунок → оплата |
| Що потрібно контролювати? | Час торгів, крок ставки, історію ставок, переможців, оплати, комісії |
| Які документи потрібні? | Рахунок, протокол торгів, акт продажу, акт передачі, звіт |
| Які звіти потрібні? | Аукціони, лоти, ставки, переможці, фінанси, активність учасників |
| Що є критичною вимогою? | Некоректна ставка не повинна прийматися, а кожна ставка має зберігатися в історії |
| Що бажано додати? | WebSocket, антиснайпер, кабінет учасника, PDF-протоколи, онлайн-таймер |