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