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

Первинна публікація
 
Немає опису редагування
 
Рядок 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]]