Атестаційні завдання 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]] | |||