Перейти до вмісту

Атестаційні завдання K2 ERP/Аукціон: відмінності між версіями

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні
Первинна публікація
 
Немає опису редагування
 
Рядок 1: Рядок 1:
{{DISPLAYTITLE:Атестаційні завдання K2 ERP/Аукціон}}


= Модуль обліку лотів, ставок, учасників і проведення аукціонів в режимі реального часу =
'''Атестаційне завдання K2 ERP — Аукціон''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля обліку аукціонів, лотів, учасників, ставок, переможців, рахунків, оплат, комісій, документів і звітності.
 
Модуль має забезпечувати повний цикл проведення аукціону: учасник → реєстрація → верифікація → аукціон → лот → ставка → історія ставок → завершення торгів → визначення переможця → рахунок → оплата → передача лота → звіт.
 
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
'''Коротко.''' Потрібно реалізувати модуль аукціону: учасники, верифікація, категорії лотів, аукціони, лоти, ставки в реальному часі, антиснайпер, визначення переможців, рахунки, оплати, комісії, кабінет учасника, панель адміністратора, документи, звіти й AJAX/WebSocket-інтерактив.
</div>
 
__TOC__
 
== Назва завдання ==
 
'''Модуль обліку лотів, ставок, учасників і проведення аукціонів у режимі реального часу'''.
 
== Мета завдання ==
 
Мета завдання — створити в K2 ERP модуль для організації та проведення онлайн, фізичних або гібридних аукціонів.
 
Система повинна дозволяти:
 
* вести базу учасників;
* проводити верифікацію учасників;
* вести категорії лотів;
* створювати аукціони;
* додавати лоти до аукціону;
* завантажувати фото, документи й опис лотів;
* задавати стартову ціну;
* задавати мінімальний крок ставки;
* реєструвати ставки в реальному часі;
* перевіряти коректність ставок;
* вести повну історію ставок;
* автоматично визначати переможця;
* підтримувати антиснайперське продовження торгів;
* формувати рахунок переможцю;
* фіксувати оплату;
* нараховувати комісію аукціонної компанії;
* формувати документи у PDF;
* підтримувати кабінет учасника;
* підтримувати панель адміністратора;
* формувати звіти по аукціонах, лотах, ставках, переможцях і фінансах.
 
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
'''Головний принцип.''' Аукціон має бути прозорим: кожна ставка повинна фіксуватися з точним часом, учасником, сумою, лотом і результатом перевірки.
</div>


== Реальний бізнес-контекст ==
== Реальний бізнес-контекст ==
Аукціонна компанія:


* проводить онлайн або фізичні аукціони:
Аукціонна компанія проводить торги різними видами майна:
** майно;
 
** техніка;
* автомобілі;
** картини;
* нерухомість;
** автомобілі;
* техніка;
** нерухомість;
* картини;
* реєструє учасників і їх ставки;
* антикваріат;
* веде облік лотів і їхніх характеристик;
* ювелірні вироби;
* формує результати торгів;
* обладнання;
* організовує оплату переможцями.
* складські залишки;
* майно підприємств;
* благодійні лоти;
* колекційні предмети;
* інші активи.
 
Аукціони можуть бути:
 
* онлайн;
* фізичні;
* гібридні;
* закриті;
* відкриті;
* благодійні;
* комерційні;
* державні або корпоративні, якщо передбачено умовами.
 
Компанії потрібно:
 
* публікувати аукціони;
* реєструвати учасників;
* перевіряти допуск учасників до торгів;
* вести лоти;
* приймати ставки;
* захищати процес торгів від помилок і зловживань;
* визначати переможців;
* виставляти рахунки;
* контролювати оплати;
* формувати фінансову й операційну звітність.
 
== Основний бізнес-процес ==
 
Типовий процес роботи аукціонної компанії виглядає так:
 
# адміністратор створює аукціон;
# додає категорії та лоти;
# задає стартову ціну, крок ставки і час торгів;
# учасник реєструється;
# учасник проходить верифікацію;
# учасник отримує доступ до аукціону;
# аукціон переходить у статус '''«Активний»''';
# учасники роблять ставки;
# система перевіряє кожну ставку;
# система оновлює поточну ціну лота;
# система веде історію ставок;
# після завершення торгів визначається переможець;
# переможцю формується рахунок;
# фіксується оплата;
# лот переходить у статус '''«Проданий»''';
# адміністрація формує звіти.
 
== Основні об’єкти модуля ==
 
{| class="wikitable" style="width:100%;"
! Об’єкт
! Призначення
|-
| Учасники
| Фізичні або юридичні особи, які беруть участь у торгах
|-
| Верифікація
| Перевірка учасника перед допуском до аукціону
|-
| Категорії лотів
| Класифікація майна
|-
| Аукціони
| Події, в межах яких проводяться торги
|-
| Лоти
| Об’єкти продажу
|-
| Ставки
| Пропозиції учасників щодо ціни
|-
| Історія ставок
| Повний журнал усіх ставок
|-
| Переможці
| Учасники, які зробили найвищі ставки
|-
| Рахунки
| Документи на оплату виграних лотів
|-
| Оплати
| Фактичні платежі
|-
| Комісії
| Винагорода аукціонної компанії
|-
| Документи
| PDF-рахунки, протоколи торгів, акти
|-
| Звіти
| Аналітика по аукціонах, лотах, ставках і фінансах
|}
 
== Довідник «Учасники» ==
 
Учасник — це особа або компанія, яка може робити ставки.
 
== Типи учасників ==
 
* фізична особа;
* юридична особа;
* ФОП;
* представник компанії;
* внутрішній учасник, якщо потрібно;
* VIP-учасник, опціонально.
 
== Поля учасника ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| ПІБ або назва компанії
| Найменування учасника
|-
| Тип учасника
| Фізична особа, юридична особа, ФОП
|-
| Телефон
| Контактний номер
|-
| Email
| Контактна адреса і логін
|-
| ІПН / ЄДРПОУ
| Ідентифікаційний код
|-
| Паспортні дані
| Для фізичних осіб, якщо потрібно
|-
| Контактна особа
| Для юридичних осіб
|-
| Статус
| Новий, активний, заблокований, архівний
|-
| Дата реєстрації
| Коли створено учасника
|-
| Коментар
| Внутрішня примітка адміністратора
|}
 
== Верифікація учасників ==


Необхідно:
Перед участю в аукціоні учасник може проходити перевірку.


* вести базу аукціонів і лотів;
== Статуси верифікації ==
* реєструвати учасників і їх ставки;
 
* вести історію ставок у реальному часі;
{| class="wikitable" style="width:100%;"
* визначати переможців і формувати рахунки на оплату.
! Статус
! Опис
|-
| Не перевірено
| Учасник ще не проходив перевірку
|-
| На перевірці
| Документи очікують перевірки
|-
| Підтверджено
| Учасник допущений до торгів
|-
| Відхилено
| Учасника не допущено
|-
| Заблоковано
| Учаснику заборонено участь
|}


== Основні завдання ==
== Поля верифікації ==


=== 1. Структура довідників ===
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Учасник
| Кого перевіряють
|-
| Тип перевірки
| Документи, контактні дані, депозит, інше
|-
| Файл документа
| Паспорт, виписка, довіреність тощо
|-
| Статус
| Поточний стан перевірки
|-
| Перевірив
| Адміністратор або менеджер
|-
| Дата перевірки
| Коли перевірено
|-
| Коментар
| Причина відхилення або примітка
|}


==== Довідник «Учасники» ====
== Довідник «Категорії лотів» ==
Поля довідника:


* ПІБ або назва компанії;
Категорії потрібні для групування лотів і фільтрації.
* тип учасника:
** фізична особа;
** юридична особа;
* телефон;
* email;
* ідентифікаційний код / паспортні дані;
* статус:
** активний;
** заблокований.


==== Довідник «Категорії лотів» ====
== Приклади категорій ==
Категорії лотів:


* автомобілі;
* автомобілі;
Рядок 48: Рядок 268:
* мистецтво;
* мистецтво;
* техніка;
* техніка;
* промислове обладнання;
* антикваріат;
* антикваріат;
* ювелірні вироби;
* меблі;
* електроніка;
* благодійні лоти;
* інше.
* інше.


=== 2. База «Аукціони» ===
== Поля категорії ==


==== Колонки бази ====
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва категорії
| Назва для списку
|-
| Батьківська категорія
| Для ієрархії, опціонально
|-
| Опис
| Коротке пояснення
|-
| Статус
| Активна або архівна
|}


* назва аукціону;
== База «Аукціони» ==
* тип аукціону:
** онлайн;
** фізичний;
** гібридний;
* дата та час початку;
* дата та час завершення;
* статус:
** запланований;
** активний;
** завершений;
** скасований;
* опис.


==== Функціонал ====
Аукціон — це подія, в межах якої продаються лоти.


* створення і публікація аукціону;
== Типи аукціонів ==
* прив’язка лотів до аукціону.


=== 3. База «Лоти» ===
* онлайн;
* фізичний;
* гібридний;
* відкритий;
* закритий;
* благодійний;
* комерційний;
* корпоративний.


==== Колонки бази ====
== Колонки бази аукціонів ==


* аукціон;
{| class="wikitable" style="width:100%;"
* назва лота;
! Колонка
* опис;
! Опис
* стартова ціна;
|-
* крок ставки;
| Назва аукціону
* поточна ціна — оновлюється автоматично;
| Назва події
* статус:
|-
** активний;
| Тип аукціону
** проданий;
| Онлайн, фізичний, гібридний
** знятий з торгів;
|-
* фото або документи — завантаження.
| Дата та час початку
| Початок торгів
|-
| Дата та час завершення
| Завершення торгів
|-
| Статус
| Запланований, активний, завершений, скасований
|-
| Опис
| Короткий опис
|}
 
== Поля аукціону ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва аукціону
| Назва
|-
| Тип аукціону
| Онлайн, фізичний, гібридний
|-
| Дата початку
| Коли стартує
|-
| Час початку
| Час старту
|-
| Дата завершення
| Коли завершується
|-
| Час завершення
| Час завершення
|-
| Опис
| Опис умов торгів
|-
| Правила участі
| Текст правил
|-
| Дозволити антиснайпер
| Так або ні
|-
| Час антиснайпера
| Наприклад: +2 хвилини після ставки в останні 30 секунд
|-
| Статус
| Поточний стан
|}
 
== Статуси аукціону ==
 
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Чернетка
| Аукціон створено, але не опубліковано
|-
| Запланований
| Аукціон опубліковано, але торги ще не почались
|-
| Активний
| Торги тривають
|-
| Завершується
| До завершення залишилось мало часу
|-
| Завершений
| Торги завершено
|-
| Скасований
| Аукціон скасовано
|}
 
== База «Лоти» ==
 
Лот — це об’єкт продажу на аукціоні.
 
== Колонки бази лотів ==
 
{| class="wikitable" style="width:100%;"
! Колонка
! Опис
|-
| Аукціон
| До якого аукціону належить
|-
| Назва лота
| Назва майна
|-
| Категорія
| Категорія лота
|-
| Опис
| Детальна інформація
|-
| Стартова ціна
| Мінімальна початкова ціна
|-
| Крок ставки
| Мінімальне підвищення
|-
| Поточна ціна
| Оновлюється автоматично
|-
| Статус
| Активний, проданий, знятий з торгів
|}
 
== Поля лота ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Аукціон
| Аукціон, до якого прив’язаний лот
|-
| Номер лота
| Унікальний номер у межах аукціону
|-
| Назва лота
| Назва об’єкта
|-
| Категорія
| Категорія лота
|-
| Опис
| Детальний опис
|-
| Стартова ціна
| Початкова ціна
|-
| Мінімальний крок ставки
| Мінімальне підвищення
|-
| Поточна ціна
| Остання актуальна ставка
|-
| Резервна ціна
| Мінімальна ціна продажу, опціонально
|-
| Валюта
| UAH, USD, EUR або інша
|-
| Фото
| Зображення лота
|-
| Документи
| Файли, сертифікати, технічні документи
|-
| Статус
| Поточний стан лота
|}
 
== Статуси лота ==
 
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Чернетка
| Лот створено, але не опубліковано
|-
| Активний
| Лот бере участь у торгах
|-
| Очікує старту
| Торги по лоту ще не почались
|-
| Торги тривають
| Ставки приймаються
|-
| Очікує оплати
| Переможець визначений, рахунок виставлено
|-
| Проданий
| Лот оплачено
|-
| Не проданий
| Торги завершились без переможця або не досягнута резервна ціна
|-
| Знятий з торгів
| Лот прибрано з аукціону
|}
 
== База «Ставки» ==
 
Ставка — це пропозиція учасника заплатити певну суму за лот.
 
== Поля ставки ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Лот
| На який лот зроблено ставку
|-
| Аукціон
| До якого аукціону належить
|-
| Учасник
| Хто зробив ставку
|-
| Дата і час ставки
| Точний час створення
|-
| Сума ставки
| Запропонована сума
|-
| Поточна ціна до ставки
| Для аудиту
|-
| IP-адреса / пристрій
| Опціонально для безпеки
|-
| Статус
| Прийнята, відхилена, скасована
|-
| Причина відхилення
| Якщо ставка не прийнята
|}
 
== Правила перевірки ставки ==
 
Система має перевіряти кожну ставку.
 
Ставка приймається, якщо:
 
* аукціон активний;
* лот активний;
* учасник активний;
* учасник допущений до аукціону;
* ставка зроблена в межах часу торгів;
* сума ставки більша за поточну ціну;
* сума ставки не менша ніж поточна ціна + мінімальний крок;
* лот не знятий з торгів;
* учасник не заблокований.
 
== Приклад перевірки ставки ==
 
Якщо:
 
* поточна ціна: 10 000 грн;
* крок ставки: 500 грн;
 
то мінімальна наступна ставка:
 
<pre>
10 000 + 500 = 10 500 грн
</pre>
 
Ставка 10 300 грн має бути відхилена.
 
== Історія ставок ==
 
Історія ставок має бути незмінним журналом.
 
== В історії потрібно зберігати ==
 
* лот;
* учасника;
* суму ставки;
* точний час ставки;
* статус ставки;
* причину відхилення, якщо є;
* користувача або систему, що обробила ставку;
* технічні дані, якщо потрібно.
 
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Критично.''' Історію ставок не можна просто видаляти або редагувати без аудиту. Для прозорості потрібно зберігати журнал усіх прийнятих і відхилених ставок.
</div>
 
== Антиснайперська функція, опціонально ==
 
Антиснайпер захищає аукціон від ставок в останні секунди.
 
== Логіка антиснайпера ==
 
Якщо ставка зроблена в останній заданий період, наприклад у останні 30 секунд, система автоматично продовжує торги по лоту, наприклад на 2 хвилини.
 
== Поля налаштування антиснайпера ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Увімкнено
| Так або ні
|-
| Період спрацювання
| Наприклад: останні 30 секунд
|-
| Час продовження
| Наприклад: 2 хвилини
|-
| Максимальна кількість продовжень
| Опціонально
|}
 
== Визначення переможця ==
 
Переможець — це учасник, який зробив найвищу прийняту ставку на момент завершення торгів.
 
== Умови визначення переможця ==
 
* аукціон або лот завершено;
* є хоча б одна прийнята ставка;
* ставка є найвищою;
* учасник не заблокований;
* якщо є резервна ціна — фінальна ставка має бути не нижча за резервну ціну.
 
== Поля результату торгів ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Аукціон
| Де проходили торги
|-
| Лот
| Який лот
|-
| Переможець
| Учасник з найвищою ставкою
|-
| Фінальна ставка
| Ціна продажу
|-
| Дата завершення
| Коли завершено торги
|-
| Статус
| Очікує оплати, оплачено, скасовано
|}
 
== Фінанси ==
 
Фінансовий блок має обліковувати рахунки, оплати і комісії.
 
== Рахунок переможцю ==
 
Після завершення торгів система формує рахунок переможцю.
 
== Поля рахунку ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Номер рахунку
| Унікальний номер
|-
| Учасник
| Переможець аукціону
|-
| Лот
| За який лот виставлено рахунок
|-
| Фінальна ставка
| Сума продажу
|-
| Комісія
| Комісія аукціонної компанії, якщо є
|-
| Загальна сума
| Сума до оплати
|-
| Термін оплати
| До якої дати потрібно оплатити
|-
| Оплачено
| Скільки сплачено
|-
| Борг
| Залишок
|-
| Статус
| Очікує оплату, частково оплачено, оплачено, прострочено, скасовано
|}
 
== Комісія аукціонної компанії ==
 
Комісія може розраховуватися:
 
* як відсоток від фінальної ставки;
* як фіксована сума;
* як комісія з продавця;
* як комісія з покупця;
* як комбінована комісія.
 
== Формула комісії ==
 
<pre>
Комісія = Фінальна ставка × Відсоток комісії / 100
</pre>
 
== Оплати ==
 
Система має підтримувати повну і часткову оплату.
 
== Поля оплати ==
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Учасник
| Хто оплатив
|-
| Рахунок
| За який рахунок оплата
|-
| Дата оплати
| Коли отримано кошти
|-
| Сума
| Сума платежу
|-
| Спосіб оплати
| Банківський переказ, карта, готівка, онлайн-оплата
|-
| Статус
| Успішно, очікує, помилка, повернення
|-
| Коментар
| Примітка бухгалтера
|}
 
== Особистий кабінет учасника ==
 
Учасник у кабінеті має бачити:
 
* доступні аукціони;
* активні лоти;
* свої ставки;
* виграні лоти;
* рахунки;
* оплати;
* документи;
* статус верифікації;
* повідомлення адміністрації.
 
== Панель адміністратора ==
 
Адміністратор у панелі має бачити:
 
* список аукціонів;
* список лотів;
* учасників;
* статуси верифікації;
* історію ставок;
* активні торги;
* лоти без ставок;
* переможців;
* неоплачені рахунки;
* фінансові звіти;
* журнал змін.
 
== Сповіщення ==
 
Система має підтримувати сповіщення.
 
== Події для сповіщень ==
 
* учасник зареєстрований;
* учасника підтверджено;
* учасника відхилено;
* аукціон скоро починається;
* аукціон активний;
* зроблено нову ставку;
* ставку перебито;
* лот виграно;
* сформовано рахунок;
* наближається термін оплати;
* рахунок прострочено;
* оплата отримана;
* лот знято з торгів.
 
== Документи ==
 
Система має формувати PDF-документи.
 
== Приклади документів ==
 
* рахунок переможцю;
* протокол торгів;
* акт продажу лота;
* акт передачі лота;
* квитанція про оплату;
* звіт по аукціону;
* історія ставок по лоту;
* документ підтвердження перемоги.
 
== Звіти ==
 
== Звіт «Аукціони за період» ==
 
У звіті потрібно відображати:
 
* назву аукціону;
* тип;
* дату початку;
* дату завершення;
* кількість лотів;
* кількість проданих лотів;
* суму продажів;
* статус.
 
== Звіт «Лоти і продажі» ==


==== Функціонал ====
У звіті потрібно відображати:


* додавання лотів;
* лот;
* автоматичне оновлення ціни при новій ставці.
* категорію;
* стартову ціну;
* фінальну ціну;
* кількість ставок;
* переможця;
* статус оплати.


=== 4. База «Ставки» ===
== Звіт «Історія ставок» ==


==== Колонки бази ====
У звіті потрібно відображати:


* лот;
* лот;
* учасник;
* учасника;
* суму ставки;
* час ставки;
* час ставки;
* сума ставки.
* статус ставки;
* причину відхилення, якщо є.
 
== Звіт «Переможці аукціонів» ==
 
У звіті потрібно відображати:
 
* аукціон;
* лот;
* переможця;
* фінальну ставку;
* рахунок;
* статус оплати.
 
== Звіт «Фінанси аукціону» ==
 
У звіті потрібно відображати:
 
* суму продажів;
* суму комісій;
* суму оплат;
* борги;
* кількість прострочених рахунків.
 
== Звіт «Активність учасників» ==


==== Функціонал ====
У звіті потрібно відображати:


* реєстрація ставок у реальному часі;
* учасника;
* перевірка ставки:
* кількість ставок;
** ставка має бути більше поточної ціни плюс крок;
* кількість виграних лотів;
** ставка має бути зроблена під час активного аукціону;
* суму виграних лотів;
* ведення історії ставок.
* суму оплат.


=== 5. Визначення переможця ===
== AJAX/WebSocket-інтерактив ==
Переможець — останній учасник, що зробив найвищу ставку на момент завершення торгів.


==== Генерація рахунку на оплату ====
Інтерфейс має працювати швидко й без перезавантаження сторінок.
Дані рахунку:


* номер лота;
Через AJAX або WebSocket мають працювати:
* переможець;
* сума фінальної ставки;
* термін оплати.


=== 6. Фінанси ===
* оновлення поточної ціни лота;
* реєстрація ставки;
* перевірка ставки;
* оновлення таймера;
* повідомлення про перебиту ставку;
* оновлення історії ставок;
* оновлення статусу лота;
* оновлення кабінету учасника;
* оновлення панелі адміністратора;
* формування рахунку;
* фіксація оплати;
* фільтрація звітів.


==== Оплата лотів ====
== Логування змін ==


* підтримка безготівкової оплати;
Модуль повинен фіксувати ключові дії.
* фіксація оплат;
* статус платежу:
** сплачено;
** очікує оплату;
* комісія аукціонної компанії — відсоток від суми продажу.


=== 7. Додаткові функції ===
Журнал змін має зберігати:


* робота через AJAX для реального оновлення ставок без перезавантаження сторінки;
* хто створив учасника;
* онлайн-таймер аукціону для кожного лота;
* хто підтвердив учасника;
* особистий кабінет учасника:
* хто створив аукціон;
** перегляд активних аукціонів;
* хто змінив статус аукціону;
** мої ставки;
* хто створив лот;
** мої виграші;
* хто змінив параметри лота;
** рахунки на оплату;
* хто зробив ставку;
* панель адміністратора:
* чи прийнята ставка;
** управління аукціонами;
* хто завершив торги;
** управління лотами;
* хто визначив переможця;
** управління учасниками;
* хто сформував рахунок;
** перегляд історії ставок;
* хто зафіксував оплату;
** завершення аукціонів вручну — опціонально;
* хто зняв лот з торгів;
* автоматичне продовження аукціону при ставці в останні секунди — антиснайперська функція, опціонально.
* дату й час дії;
* старе та нове значення, якщо це можливо.
 
== Права доступу ==
 
Модуль має підтримувати рольову модель.
 
{| class="wikitable" style="width:100%;"
! Роль
! Можливості
|-
| Учасник
| Переглядає аукціони, робить ставки, бачить свої ставки, виграші, рахунки й документи
|-
| Модератор
| Перевіряє учасників, документи і допуск до торгів
|-
| Аукціоніст
| Керує аукціонами, лотами, статусами торгів і завершенням аукціону
|-
| Бухгалтер
| Формує рахунки, фіксує оплати, контролює борги і комісії
|-
| Керівник
| Переглядає всі аукціони, продажі, фінанси, звіти і активність учасників
|-
| Адміністратор системи
| Налаштовує довідники, права, шаблони документів і службові параметри
|}


== Технічні вимоги ==
== Технічні вимоги ==
{| class="wikitable"
 
!Параметр
{| class="wikitable" style="width:100%;"
!Опис
! Параметр
! Опис
|-
|-
|Бекенд
| Бекенд
|K2 Cloud ERP на Python або PHP
| K2 Cloud ERP на Python або PHP
|-
|-
|БД
| База даних
|PostgreSQL або MySQL
| PostgreSQL або MySQL
|-
|-
|Фронтенд
| Фронтенд
|HTML5, JavaScript, WebSocket або AJAX для ставок
| HTML5, JavaScript
|-
|-
|UI-компоненти
| Реальний час
|DataTables для аукціонів, лотів і ставок; Select2 для пошуку по лотах і учасниках; Countdown-таймери
| WebSocket або AJAX для ставок і оновлення цін
|-
|-
|Друк
| UI-компоненти
|Генерація рахунків переможцям у PDF
| DataTables для аукціонів, лотів і ставок; Select2 для пошуку лотів і учасників
|-
| Таймери
| Countdown-таймери для аукціонів і лотів
|-
| Файли
| Завантаження фото, документів, сертифікатів
|-
| Друк
| PDF-рахунки, протоколи торгів, акти продажу
|-
| Експорт
| Excel або PDF для звітів
|-
| Безпека
| Рольовий доступ, журнал ставок, аудит змін
|}
|}


== Критерії оцінки ==
== Рекомендовані сутності бази даних ==
{| class="wikitable"
 
!Критерій
Для реалізації задачі доцільно передбачити такі сутності:
!Бали
 
* учасники;
* верифікації учасників;
* категорії лотів;
* аукціони;
* лоти;
* фото лотів;
* документи лотів;
* ставки;
* історія ставок;
* переможці;
* рахунки;
* позиції рахунків;
* оплати;
* комісії;
* сповіщення;
* документи;
* журнал змін;
* права доступу;
* звіти.
 
== Практичне завдання ==
 
У межах атестації потрібно продемонструвати робочий сценарій.
 
Мінімальний сценарій:
 
# створити учасника;
# провести верифікацію учасника;
# створити категорію лотів;
# створити аукціон;
# додати лот;
# задати стартову ціну і крок ставки;
# опублікувати аукціон;
# перевести аукціон у статус '''«Активний»''';
# зробити першу ставку;
# зробити некоректну ставку нижче мінімального кроку;
# перевірити її відхилення;
# зробити коректну вищу ставку;
# перевірити оновлення поточної ціни;
# перевірити історію ставок;
# завершити аукціон;
# визначити переможця;
# сформувати рахунок переможцю;
# нарахувати комісію;
# зафіксувати часткову оплату;
# перевірити борг;
# зафіксувати повну оплату;
# змінити статус лота на '''«Проданий»''';
# сформувати PDF-протокол торгів;
# сформувати звіт по аукціону;
# перевірити журнал змін і права доступу.
 
== Критерії оцінювання ==
 
{| class="wikitable" style="width:100%;"
! Критерій
! Бали
! Що перевіряється
|-
| Реалізація бази аукціонів, лотів і учасників
| 20
| Учасники, верифікація, категорії, аукціони, лоти, фото, документи, статуси
|-
| Управління ставками і визначення переможців
| 20
| Перевірка ставок, історія ставок, поточна ціна, таймери, антиснайпер, переможці
|-
| Фінансовий облік і виставлення рахунків
| 20
| Рахунки, комісії, часткові оплати, повні оплати, борги, статуси оплат
|-
| Інтерактивність через AJAX або WebSocket
| 20
| Оновлення ставок, таймерів, ціни, історії ставок і кабінетів у реальному часі
|-
| Зручність користування для учасників і адміністраторів
| 20
| Кабінет учасника, панель адміністратора, фільтри, звіти, PDF-документи
|-
|-
|Реалізація бази аукціонів, лотів і учасників
! Разом
|20
! 100
! Максимальна оцінка
|}
 
== Шкала оцінювання ==
 
{| class="wikitable" style="width:100%;"
! Бали
! Рівень
! Опис
|-
|-
|Управління ставками і визначення переможців
| 90–100
|20
| Відмінно
| Модуль повністю працює: учасники, аукціони, лоти, ставки, переможці, рахунки, оплати, кабінети і звіти реалізовані коректно
|-
|-
|Фінансовий облік і виставлення рахунків
| 75–89
|20
| Добре
| Основна логіка працює, є незначні недоліки, які не руйнують процес проведення аукціону
|-
|-
|Інтерактивність через AJAX або WebSocket
| 60–74
|20
| Зараховано
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання
|-
|-
|Зручність користування для учасників і адміністраторів
| 0–59
|20
| Не зараховано
| Відсутня критична логіка: учасники, аукціони, лоти, ставки, переможці, рахунки або оплати
|}
|}
== Критичні помилки ==
Критичними помилками вважаються ситуації, коли:
* неможливо створити учасника;
* неможливо створити аукціон;
* неможливо створити лот;
* лот не прив’язується до аукціону;
* неможливо зробити ставку;
* некоректна ставка приймається системою;
* коректна ставка не оновлює поточну ціну;
* історія ставок не зберігається;
* система не визначає переможця;
* рахунок переможцю не формується;
* часткова оплата не змінює борг;
* повна оплата не змінює статус рахунку;
* учасник бачить чужі рахунки або закриті дані;
* звіти не відповідають фактичним ставкам, лотам і оплатам;
* зміни ставок, лотів, рахунків і оплат не логуються.
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл аукціону: учасник → лот → ставка → історія ставок → переможець → рахунок → оплата → протокол → звіт.
</div>
== Очікуваний результат ==
У результаті виконання атестаційного завдання має бути створений модуль аукціону в K2 ERP.
Модуль має підтримувати учасників, верифікацію, категорії лотів, аукціони, лоти, ставки, історію ставок, антиснайпер, переможців, рахунки, оплати, комісії, кабінет учасника, панель адміністратора, PDF-документи, звіти, AJAX/WebSocket-інтерактив, журнал змін і рольовий доступ.


== Примітка ==
== Примітка ==
ERP для аукціону — обов'язкова для прозорого, швидкого і безпечного проведення торгів у реальному часі.


Зручний і справедливий аукціон підвищує:
ERP для аукціонів критично важлива для прозорого, швидкого й безпечного проведення торгів у реальному часі.
 
Якісна аукціонна система має не тільки приймати ставки, а й гарантувати чесність правил, точність історії ставок, правильне визначення переможця і прозорий фінансовий облік.
 
== Коротко ==
 
{| class="wikitable" style="width:100%;"
! Питання
! Відповідь
|-
| Що потрібно створити?
| Модуль проведення аукціонів
|-
| Які довідники потрібні?
| Учасники, категорії лотів, аукціони, лоти
|-
| Який головний процес?
| Лот → ставки → переможець → рахунок → оплата
|-
| Що потрібно контролювати?
| Час торгів, крок ставки, історію ставок, переможців, оплати, комісії
|-
| Які документи потрібні?
| Рахунок, протокол торгів, акт продажу, акт передачі, звіт
|-
| Які звіти потрібні?
| Аукціони, лоти, ставки, переможці, фінанси, активність учасників
|-
| Що є критичною вимогою?
| Некоректна ставка не повинна прийматися, а кожна ставка має зберігатися в історії
|-
| Що бажано додати?
| WebSocket, антиснайпер, кабінет учасника, PDF-протоколи, онлайн-таймер
|}
 
== Див. також ==
 
* [[K2 Cloud ERP|K2 ERP]]
* [[K2 ERP]]
* [[Атестаційні завдання K2 ERP]]
* [[Біржа]]
* [[Дошка оголошень]]
* [[Сайт фрілансу]]
* [[CRM]]
* [[Каса]]
* [[Рахунок на оплату]]
* [[Особистий кабінет]]
* [[WebSocket]]
* [[AJAX]]


* кількість учасників;
[[Категорія:K2 ERP]]
* вартість продажу лотів.
[[Категорія:Атестаційні завдання K2]]
[[Категорія:Аукціон]]
[[Категорія:Торги]]
[[Категорія:Фінансовий облік]]
[[Категорія:CRM]]
[[Категорія:Корпоративна Wiki]]

Поточна версія на 21:02, 1 травня 2026


Атестаційне завдання K2 ERP — Аукціон — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у створенні модуля обліку аукціонів, лотів, учасників, ставок, переможців, рахунків, оплат, комісій, документів і звітності.

Модуль має забезпечувати повний цикл проведення аукціону: учасник → реєстрація → верифікація → аукціон → лот → ставка → історія ставок → завершення торгів → визначення переможця → рахунок → оплата → передача лота → звіт.

Коротко. Потрібно реалізувати модуль аукціону: учасники, верифікація, категорії лотів, аукціони, лоти, ставки в реальному часі, антиснайпер, визначення переможців, рахунки, оплати, комісії, кабінет учасника, панель адміністратора, документи, звіти й AJAX/WebSocket-інтерактив.

Назва завдання

Модуль обліку лотів, ставок, учасників і проведення аукціонів у режимі реального часу.

Мета завдання

Мета завдання — створити в K2 ERP модуль для організації та проведення онлайн, фізичних або гібридних аукціонів.

Система повинна дозволяти:

  • вести базу учасників;
  • проводити верифікацію учасників;
  • вести категорії лотів;
  • створювати аукціони;
  • додавати лоти до аукціону;
  • завантажувати фото, документи й опис лотів;
  • задавати стартову ціну;
  • задавати мінімальний крок ставки;
  • реєструвати ставки в реальному часі;
  • перевіряти коректність ставок;
  • вести повну історію ставок;
  • автоматично визначати переможця;
  • підтримувати антиснайперське продовження торгів;
  • формувати рахунок переможцю;
  • фіксувати оплату;
  • нараховувати комісію аукціонної компанії;
  • формувати документи у PDF;
  • підтримувати кабінет учасника;
  • підтримувати панель адміністратора;
  • формувати звіти по аукціонах, лотах, ставках, переможцях і фінансах.

Головний принцип. Аукціон має бути прозорим: кожна ставка повинна фіксуватися з точним часом, учасником, сумою, лотом і результатом перевірки.

Реальний бізнес-контекст

Аукціонна компанія проводить торги різними видами майна:

  • автомобілі;
  • нерухомість;
  • техніка;
  • картини;
  • антикваріат;
  • ювелірні вироби;
  • обладнання;
  • складські залишки;
  • майно підприємств;
  • благодійні лоти;
  • колекційні предмети;
  • інші активи.

Аукціони можуть бути:

  • онлайн;
  • фізичні;
  • гібридні;
  • закриті;
  • відкриті;
  • благодійні;
  • комерційні;
  • державні або корпоративні, якщо передбачено умовами.

Компанії потрібно:

  • публікувати аукціони;
  • реєструвати учасників;
  • перевіряти допуск учасників до торгів;
  • вести лоти;
  • приймати ставки;
  • захищати процес торгів від помилок і зловживань;
  • визначати переможців;
  • виставляти рахунки;
  • контролювати оплати;
  • формувати фінансову й операційну звітність.

Основний бізнес-процес

Типовий процес роботи аукціонної компанії виглядає так:

  1. адміністратор створює аукціон;
  2. додає категорії та лоти;
  3. задає стартову ціну, крок ставки і час торгів;
  4. учасник реєструється;
  5. учасник проходить верифікацію;
  6. учасник отримує доступ до аукціону;
  7. аукціон переходить у статус «Активний»;
  8. учасники роблять ставки;
  9. система перевіряє кожну ставку;
  10. система оновлює поточну ціну лота;
  11. система веде історію ставок;
  12. після завершення торгів визначається переможець;
  13. переможцю формується рахунок;
  14. фіксується оплата;
  15. лот переходить у статус «Проданий»;
  16. адміністрація формує звіти.

Основні об’єкти модуля

Об’єкт Призначення
Учасники Фізичні або юридичні особи, які беруть участь у торгах
Верифікація Перевірка учасника перед допуском до аукціону
Категорії лотів Класифікація майна
Аукціони Події, в межах яких проводяться торги
Лоти Об’єкти продажу
Ставки Пропозиції учасників щодо ціни
Історія ставок Повний журнал усіх ставок
Переможці Учасники, які зробили найвищі ставки
Рахунки Документи на оплату виграних лотів
Оплати Фактичні платежі
Комісії Винагорода аукціонної компанії
Документи PDF-рахунки, протоколи торгів, акти
Звіти Аналітика по аукціонах, лотах, ставках і фінансах

Довідник «Учасники»

Учасник — це особа або компанія, яка може робити ставки.

Типи учасників

  • фізична особа;
  • юридична особа;
  • ФОП;
  • представник компанії;
  • внутрішній учасник, якщо потрібно;
  • VIP-учасник, опціонально.

Поля учасника

Поле Опис
ПІБ або назва компанії Найменування учасника
Тип учасника Фізична особа, юридична особа, ФОП
Телефон Контактний номер
Email Контактна адреса і логін
ІПН / ЄДРПОУ Ідентифікаційний код
Паспортні дані Для фізичних осіб, якщо потрібно
Контактна особа Для юридичних осіб
Статус Новий, активний, заблокований, архівний
Дата реєстрації Коли створено учасника
Коментар Внутрішня примітка адміністратора

Верифікація учасників

Перед участю в аукціоні учасник може проходити перевірку.

Статуси верифікації

Статус Опис
Не перевірено Учасник ще не проходив перевірку
На перевірці Документи очікують перевірки
Підтверджено Учасник допущений до торгів
Відхилено Учасника не допущено
Заблоковано Учаснику заборонено участь

Поля верифікації

Поле Опис
Учасник Кого перевіряють
Тип перевірки Документи, контактні дані, депозит, інше
Файл документа Паспорт, виписка, довіреність тощо
Статус Поточний стан перевірки
Перевірив Адміністратор або менеджер
Дата перевірки Коли перевірено
Коментар Причина відхилення або примітка

Довідник «Категорії лотів»

Категорії потрібні для групування лотів і фільтрації.

Приклади категорій

  • автомобілі;
  • нерухомість;
  • мистецтво;
  • техніка;
  • промислове обладнання;
  • антикваріат;
  • ювелірні вироби;
  • меблі;
  • електроніка;
  • благодійні лоти;
  • інше.

Поля категорії

Поле Опис
Назва категорії Назва для списку
Батьківська категорія Для ієрархії, опціонально
Опис Коротке пояснення
Статус Активна або архівна

База «Аукціони»

Аукціон — це подія, в межах якої продаються лоти.

Типи аукціонів

  • онлайн;
  • фізичний;
  • гібридний;
  • відкритий;
  • закритий;
  • благодійний;
  • комерційний;
  • корпоративний.

Колонки бази аукціонів

Колонка Опис
Назва аукціону Назва події
Тип аукціону Онлайн, фізичний, гібридний
Дата та час початку Початок торгів
Дата та час завершення Завершення торгів
Статус Запланований, активний, завершений, скасований
Опис Короткий опис

Поля аукціону

Поле Опис
Назва аукціону Назва
Тип аукціону Онлайн, фізичний, гібридний
Дата початку Коли стартує
Час початку Час старту
Дата завершення Коли завершується
Час завершення Час завершення
Опис Опис умов торгів
Правила участі Текст правил
Дозволити антиснайпер Так або ні
Час антиснайпера Наприклад: +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 для звітів
Безпека Рольовий доступ, журнал ставок, аудит змін

Рекомендовані сутності бази даних

Для реалізації задачі доцільно передбачити такі сутності:

  • учасники;
  • верифікації учасників;
  • категорії лотів;
  • аукціони;
  • лоти;
  • фото лотів;
  • документи лотів;
  • ставки;
  • історія ставок;
  • переможці;
  • рахунки;
  • позиції рахунків;
  • оплати;
  • комісії;
  • сповіщення;
  • документи;
  • журнал змін;
  • права доступу;
  • звіти.

Практичне завдання

У межах атестації потрібно продемонструвати робочий сценарій.

Мінімальний сценарій:

  1. створити учасника;
  2. провести верифікацію учасника;
  3. створити категорію лотів;
  4. створити аукціон;
  5. додати лот;
  6. задати стартову ціну і крок ставки;
  7. опублікувати аукціон;
  8. перевести аукціон у статус «Активний»;
  9. зробити першу ставку;
  10. зробити некоректну ставку нижче мінімального кроку;
  11. перевірити її відхилення;
  12. зробити коректну вищу ставку;
  13. перевірити оновлення поточної ціни;
  14. перевірити історію ставок;
  15. завершити аукціон;
  16. визначити переможця;
  17. сформувати рахунок переможцю;
  18. нарахувати комісію;
  19. зафіксувати часткову оплату;
  20. перевірити борг;
  21. зафіксувати повну оплату;
  22. змінити статус лота на «Проданий»;
  23. сформувати PDF-протокол торгів;
  24. сформувати звіт по аукціону;
  25. перевірити журнал змін і права доступу.

Критерії оцінювання

Критерій Бали Що перевіряється
Реалізація бази аукціонів, лотів і учасників 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-протоколи, онлайн-таймер

Див. також