Атестаційні завдання 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;"> | |||
'''Коротко.''' Потрібно реалізувати біржовий модуль: користувачі, біржові об’єкти, категорії, заявки на купівлю і продаж, bid/ask, стакан заявок, автоматичне укладання угод, історія торгів, баланси, комісії, кабінет користувача, AJAX-оновлення цін і звіти. | |||
</div> | |||
__TOC__ | |||
== Назва завдання == | |||
'''Модуль біржі: торги товарами, послугами або фінансовими активами'''. | |||
== Мета завдання == | |||
Мета завдання — створити в K2 ERP модуль електронної біржі, де користувачі можуть розміщувати заявки на купівлю або продаж, подавати зустрічні пропозиції, укладати угоди та бачити історію торгів. | |||
Система повинна дозволяти: | |||
* вести користувачів біржі; | |||
* вести типи біржових об’єктів; | |||
* вести категорії об’єктів; | |||
* створювати заявки на продаж; | |||
* створювати заявки на купівлю; | |||
* вказувати кількість, ціну, валюту та строк дії заявки; | |||
* формувати біржовий стакан; | |||
* зіставляти зустрічні заявки; | |||
* автоматично фіксувати угоду при збігу умов; | |||
* вести історію ставок, заявок і угод; | |||
* підтримувати часткове виконання заявки; | |||
* фіксувати статуси заявок; | |||
* вести баланси користувачів, якщо фінансовий блок реалізовано; | |||
* блокувати кошти або товар під час активної заявки; | |||
* розраховувати комісію біржі; | |||
* формувати звіти по торгах, угодах, користувачах і комісіях; | |||
* оновлювати дані через AJAX без перезавантаження сторінки. | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
'''Головний принцип.''' Біржа повинна надійно зіставляти зустрічні заявки. Якщо умови продавця і покупця збігаються, система має зафіксувати угоду, оновити залишки, списати комісію і записати операцію в історію. | |||
</div> | |||
== Реальний бізнес-контекст == | == Реальний бізнес-контекст == | ||
Біржа — це електронний майданчик, де різні учасники можуть розміщувати заявки на купівлю або продаж товарів, послуг чи активів. | |||
Біржа може використовуватися для: | |||
* торгівлі товарами; | |||
* торгівлі зерном; | |||
* торгівлі металами; | |||
* торгівлі сировиною; | |||
* торгівлі послугами; | |||
* фріланс-заявок; | |||
* внутрішньої корпоративної біржі заявок; | |||
* обміну валют; | |||
* торгівлі цифровими активами; | |||
* торгівлі внутрішніми токенами; | |||
* B2B-торгів між компаніями. | |||
Основна складність біржі — швидке й точне зіставлення заявок. Система має враховувати ціну, кількість, тип заявки, залишок невиконаної кількості, статус користувача, баланс, комісію та історію операцій. | |||
== Основний бізнес-процес == | |||
Типовий процес роботи біржі виглядає так: | |||
# користувач реєструється на біржі; | |||
# поповнює баланс або додає доступний товар, якщо реалізовано фінансовий чи складський блок; | |||
# створює заявку на продаж або купівлю; | |||
# система додає заявку в біржовий стакан; | |||
# інший користувач створює зустрічну заявку; | |||
# система перевіряє збіг ціни, кількості та умов; | |||
# при збігу формується угода; | |||
# кількість у заявках зменшується або заявки закриваються; | |||
# кошти, товар або інший актив переходять між сторонами; | |||
# біржа утримує комісію, якщо це передбачено; | |||
# операція записується в історію торгів; | |||
# користувачі бачать результат у своїх кабінетах. | |||
== Основні об’єкти модуля == | |||
{| class="wikitable" style="width:100%;" | |||
! Об’єкт | |||
! Призначення | |||
|- | |||
| Користувачі біржі | |||
| Учасники, які створюють заявки та укладають угоди | |||
|- | |||
| Типи біржових об’єктів | |||
| Товари, послуги, активи, валюти, токени | |||
|- | |||
| Категорії | |||
| Групування об’єктів торгів | |||
|- | |||
| Біржові об’єкти | |||
| Конкретні товари, послуги або активи | |||
|- | |||
| Заявки | |||
| Накази на купівлю або продаж | |||
|- | |||
| Біржовий стакан | |||
| Черга заявок buy/sell за ціною та часом | |||
|- | |||
| Угоди | |||
| Зафіксовані операції між покупцем і продавцем | |||
|- | |||
| Баланси | |||
| Кошти або активи користувачів, якщо реалізовано фінансовий блок | |||
|- | |||
| Комісії | |||
| Винагорода біржі за угоду | |||
|- | |||
| Історія торгів | |||
| Лог усіх заявок, змін і угод | |||
|- | |||
| Сповіщення | |||
| Повідомлення про виконання заявки, угоду або зміну ціни | |||
|- | |||
| Звіти | |||
| Аналітика по торгах, обсягах, користувачах і комісіях | |||
|} | |||
== Довідник «Користувачі біржі» == | |||
Користувачі біржі — це учасники, які можуть створювати заявки та укладати угоди. | |||
== Поля користувача == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| ПІБ або назва компанії | |||
| Ім’я користувача або назва організації | |||
|- | |||
| Тип користувача | |||
| Фізична особа, ФОП, компанія, внутрішній користувач | |||
|- | |||
| Email | |||
| Для входу та сповіщень | |||
|- | |||
| Телефон | |||
| Контактний номер | |||
|- | |||
| Статус | |||
| Активний, на перевірці, заблокований, архівний | |||
|- | |||
| Рівень доступу | |||
| Звичайний учасник, маркетмейкер, адміністратор | |||
|- | |||
| Коментар | |||
| Внутрішні примітки адміністратора | |||
|} | |||
== Довідник «Типи біржових об’єктів» == | |||
Тип біржового об’єкта визначає, що саме продається або купується. | |||
== Приклади типів == | |||
* | * товари; | ||
** зерно; | * сировина; | ||
* зерно; | |||
* | * метали; | ||
* | * послуги; | ||
* IT-послуги; | |||
* | * валюта; | ||
* | * цифрові активи; | ||
* внутрішні токени; | |||
* | * корпоративні ресурси. | ||
* | |||
== | == Поля типу об’єкта == | ||
== | {| class="wikitable" style="width:100%;" | ||
! Поле | |||
! Опис | |||
|- | |||
| Назва типу | |||
| Наприклад: товар, послуга, актив | |||
|- | |||
| Опис | |||
| Коротке пояснення типу | |||
|- | |||
| Одиниці виміру | |||
| Шт., кг, т, м², година, одиниця | |||
|- | |||
| Активність | |||
| Чи доступний тип для нових торгів | |||
|} | |||
== Довідник «Категорії об’єктів» == | |||
Категорії допомагають групувати об’єкти торгів. | |||
==== | == Приклади категорій == | ||
* продукти харчування; | * продукти харчування; | ||
* зернові; | |||
* метали; | |||
* будівельні матеріали; | |||
* IT-послуги; | * IT-послуги; | ||
* | * дизайн; | ||
* внутрішні токени. | * маркетинг; | ||
* транспортні послуги; | |||
* внутрішні токени; | |||
* валюти. | |||
== Біржові об’єкти == | |||
Біржовий об’єкт — це конкретний товар, послуга або актив, яким торгують. | |||
== Поля біржового об’єкта == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Назва об’єкта | |||
| Наприклад: пшениця 3 класу, розробка сайту, USD | |||
|- | |||
| Тип | |||
| Товар, послуга, актив | |||
|- | |||
| Категорія | |||
| Група об’єкта | |||
|- | |||
| Одиниця виміру | |||
| Шт., кг, т, година, одиниця | |||
|- | |||
| Опис | |||
| Детальна інформація | |||
|- | |||
| Мінімальний крок ціни | |||
| Опціонально | |||
|- | |||
| Мінімальна кількість | |||
| Опціонально | |||
|- | |||
| Статус | |||
| Активний або архівний | |||
|} | |||
== Заявки на біржі == | |||
Заявка — це пропозиція користувача купити або продати біржовий об’єкт. | |||
== Типи заявок == | |||
* заявка на продаж; | |||
* заявка на купівлю; | |||
* лімітна заявка; | |||
* ринкова заявка, опціонально; | |||
* аукціонна заявка, опціонально. | |||
== Поля заявки == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Номер заявки | |||
| Унікальний номер | |||
|- | |||
| Користувач | |||
| Хто створив заявку | |||
|- | |||
| Тип заявки | |||
| Купівля або продаж | |||
|- | |||
| Об’єкт торгів | |||
| Що купується або продається | |||
|- | |||
| Категорія | |||
| Категорія об’єкта | |||
|- | |||
| Кількість | |||
| Загальна кількість | |||
|- | |||
| Невиконана кількість | |||
| Залишок заявки після часткових угод | |||
|- | |||
| Ціна | |||
| Ціна за одиницю | |||
|- | |||
| Валюта | |||
| Валюта розрахунку | |||
|- | |||
| Мінімальна / максимальна ціна | |||
| Для аукціонів, якщо реалізовано | |||
|- | |||
| Дата створення | |||
| Коли заявка створена | |||
|- | |||
| Термін дії | |||
| До якої дати заявка активна | |||
|- | |||
| Статус | |||
| Активна, частково виконана, виконана, скасована, прострочена | |||
|} | |||
== Статуси заявки == | |||
{| class="wikitable" style="width:100%;" | |||
! Статус | |||
! Значення | |||
|- | |||
| Чернетка | |||
| Заявка створюється, але ще не активна | |||
|- | |||
| Активна | |||
| Заявка бере участь у торгах | |||
|- | |||
| Частково виконана | |||
| Частина кількості вже виконана | |||
|- | |||
| Виконана | |||
| Заявка повністю закрита угодами | |||
|- | |||
| Скасована | |||
| Користувач або адміністратор скасував заявку | |||
|- | |||
| Прострочена | |||
| Термін дії заявки завершився | |||
|- | |||
| Заблокована | |||
| Заявка зупинена через перевірку або обмеження | |||
|} | |||
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;"> | |||
'''Важливо.''' Активна заявка повинна мати ціну, кількість, об’єкт торгів, користувача і строк дії. Без цих даних вона не повинна потрапляти в біржовий стакан. | |||
</div> | |||
== Біржовий стакан == | |||
Біржовий стакан показує активні заявки на купівлю і продаж. | |||
== Що має відображатися у стакані == | |||
* заявки на купівлю; | |||
* заявки на продаж; | |||
* ціна; | |||
* кількість; | |||
* сумарний обсяг по ціні; | |||
* краща ціна купівлі; | |||
* краща ціна продажу; | |||
* спред між найкращими цінами. | |||
== Сортування у стакані == | |||
Заявки на купівлю сортуються: | |||
<pre> | |||
Вища ціна → вище у стакані | |||
</pre> | |||
Заявки на продаж сортуються: | |||
<pre> | |||
Нижча ціна → вище у стакані | |||
</pre> | |||
Якщо ціна однакова, перевагу має заявка, створена раніше. | |||
== Механіка зіставлення заявок == | |||
Система повинна зіставляти зустрічні заявки. | |||
== Правило для угоди == | |||
Для заявки на купівлю і заявки на продаж угода можлива, якщо: | |||
<pre> | |||
Ціна покупця >= Ціна продавця | |||
</pre> | |||
Після цього система визначає кількість угоди: | |||
<pre> | |||
Кількість угоди = мінімум(невиконана кількість покупця, невиконана кількість продавця) | |||
</pre> | |||
== Часткове виконання == | |||
Якщо кількість у заявках не однакова, заявка може бути частково виконана. | |||
Приклад: | |||
<pre> | |||
Покупець хоче купити 100 одиниць | |||
Продавець продає 40 одиниць | |||
Угода = 40 одиниць | |||
Заявка покупця залишається активною на 60 одиниць | |||
Заявка продавця стає виконаною | |||
</pre> | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Критично.''' Система не повинна створювати угоду, якщо ціна покупця нижча за ціну продавця або якщо в однієї із заявок немає доступного залишку кількості. | |||
</div> | |||
== Угоди == | |||
Угода фіксує факт купівлі-продажу між двома сторонами. | |||
== Поля угоди == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Номер угоди | |||
| Унікальний номер | |||
|- | |||
| Об’єкт торгів | |||
| Що було продано або куплено | |||
|- | |||
| Покупець | |||
| Користувач, який купує | |||
|- | |||
| Продавець | |||
| Користувач, який продає | |||
|- | |||
| Заявка покупця | |||
| З якої заявки сформована угода | |||
|- | |||
| Заявка продавця | |||
| З якої заявки сформована угода | |||
|- | |||
| Кількість | |||
| Кількість угоди | |||
|- | |||
| Ціна | |||
| Ціна за одиницю | |||
|- | |||
| Сума | |||
| Загальна сума угоди | |||
|- | |||
| Комісія біржі | |||
| Якщо реалізовано | |||
|- | |||
| Дата і час | |||
| Коли угода укладена | |||
|- | |||
| Статус | |||
| Виконана, очікує розрахунку, скасована | |||
|} | |||
== Формула суми угоди == | |||
<pre> | |||
Сума угоди = Кількість × Ціна | |||
</pre> | |||
== Комісія біржі == | |||
Опціонально система може розраховувати комісію біржі. | |||
== Варіанти комісії == | |||
* відсоток від суми угоди; | |||
* фіксована сума; | |||
* комбінована комісія; | |||
* різна комісія для покупця і продавця; | |||
* індивідуальна комісія для окремих користувачів. | |||
== Формула комісії == | |||
<pre> | |||
Комісія = Сума угоди × Відсоток комісії / 100 | |||
</pre> | |||
== Баланси користувачів == | |||
Фінансовий блок є опціональним, але бажаним для повноцінної біржі. | |||
== Що має підтримувати баланс == | |||
* поповнення; | |||
* списання; | |||
* блокування коштів під заявку; | |||
* розблокування при скасуванні заявки; | |||
* списання коштів після угоди; | |||
* зарахування коштів продавцю; | |||
* утримання комісії; | |||
* історію операцій. | |||
== Поля балансу == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Користувач | |||
| Власник балансу | |||
|- | |||
| Валюта | |||
| Валюта балансу | |||
|- | |||
| Доступний баланс | |||
| Кошти, які можна використовувати | |||
|- | |||
| Заблокований баланс | |||
| Кошти, зарезервовані під активні заявки | |||
|- | |||
| Загальний баланс | |||
| Доступний + заблокований | |||
|} | |||
== Блокування коштів == | |||
При створенні заявки на купівлю система повинна перевірити наявність коштів. | |||
<pre> | |||
Потрібна сума = Кількість × Ціна + Комісія | |||
</pre> | |||
Якщо коштів достатньо, система блокує суму під заявку. Якщо коштів недостатньо — заявка не повинна бути активована. | |||
== Блокування товару або активу == | |||
Для заявки на продаж система повинна перевірити, чи має продавець достатню кількість товару або активу. | |||
Якщо кількість доступна, вона блокується під заявку. Якщо ні — заявка не повинна бути активована. | |||
== Історія торгів == | |||
Історія торгів зберігає всі події по заявках і угодах. | |||
== Що потрібно логувати == | |||
* створення заявки; | |||
* зміну ціни; | |||
* зміну кількості; | |||
* активацію заявки; | |||
* скасування заявки; | |||
* часткове виконання; | |||
* повне виконання; | |||
* укладення угоди; | |||
* блокування коштів; | |||
* розблокування коштів; | |||
* списання комісії; | |||
* зміну статусу користувача; | |||
* адміністративні дії. | |||
== Кабінет користувача == | |||
Користувач біржі повинен мати особистий кабінет. | |||
== Функції кабінету == | |||
Користувач повинен мати можливість: | |||
* створювати заявки; | |||
* переглядати свої активні заявки; | |||
* переглядати виконані заявки; | |||
* скасовувати свої активні заявки; | |||
* бачити свої угоди; | |||
* бачити історію торгів; | |||
* бачити баланс; | |||
* поповнювати баланс, якщо реалізовано; | |||
* подавати заявку на виведення коштів, якщо реалізовано; | |||
* отримувати сповіщення про угоди; | |||
* налаштовувати повідомлення по категоріях. | |||
== Пошук і фільтрація == | |||
Пошук має допомагати користувачу швидко знаходити потрібні об’єкти й заявки. | |||
== | == Параметри пошуку == | ||
* тип | * тип об’єкта; | ||
* категорія; | * категорія; | ||
* назва | * назва; | ||
* | * ціна від; | ||
* ціна до; | |||
* | |||
* валюта; | * валюта; | ||
* тип заявки; | |||
* статус; | |||
* дата створення; | * дата створення; | ||
* статус: | * користувач, якщо доступно за правами. | ||
** | |||
** | == Сповіщення == | ||
** | |||
Система має надсилати користувачам повідомлення про важливі події. | |||
== Події для сповіщень == | |||
* заявка створена; | |||
* заявка активована; | |||
* заявка частково виконана; | |||
* заявка повністю виконана; | |||
* укладена угода; | |||
* заявка скасована; | |||
* ціна досягла потрібного рівня; | |||
* кошти заблоковані; | |||
* кошти розблоковані; | |||
* отримано оплату; | |||
* списано комісію. | |||
== Графіки і ринкові дані == | |||
Опціонально модуль може показувати графіки цін. | |||
== Що можна показувати == | |||
* останню ціну угоди; | |||
* мінімальну ціну за період; | |||
* максимальну ціну за період; | |||
* середню ціну; | |||
* обсяг торгів; | |||
* графік зміни ціни; | |||
* кількість угод за період. | |||
== Звіти == | |||
== Звіт «Активні заявки» == | |||
Звіт показує всі заявки, які зараз беруть участь у торгах. | |||
У звіті потрібно відображати: | |||
* номер заявки; | |||
* користувача; | |||
* тип заявки; | |||
* об’єкт; | |||
* кількість; | |||
* невиконану кількість; | |||
* ціну; | |||
* валюту; | |||
* статус. | |||
== Звіт «Історія угод» == | |||
Звіт показує укладені угоди. | |||
У звіті потрібно відображати: | |||
* номер угоди; | |||
* дату; | |||
* об’єкт; | |||
* покупця; | |||
* продавця; | |||
* кількість; | |||
* ціну; | |||
* суму; | |||
* комісію. | |||
== Звіт «Обсяги торгів» == | |||
Звіт показує активність по об’єктах. | |||
У звіті потрібно відображати: | |||
* об’єкт; | |||
* кількість угод; | |||
* загальну кількість; | |||
* загальну суму; | |||
* середню ціну; | |||
* мінімальну ціну; | |||
* максимальну ціну. | |||
== Звіт «Комісії біржі» == | |||
Якщо реалізовано комісії, звіт показує дохід біржі. | |||
У звіті потрібно відображати: | |||
* період; | |||
* кількість угод; | |||
* суму угод; | |||
* суму комісій; | |||
* комісію по об’єктах; | |||
* комісію по користувачах. | |||
== Звіт «Баланси користувачів» == | |||
Якщо реалізовано фінансовий блок, звіт показує кошти користувачів. | |||
* | У звіті потрібно відображати: | ||
* | |||
** | * користувача; | ||
** | * валюту; | ||
** | * доступний баланс; | ||
* | * заблокований баланс; | ||
* | * загальний баланс. | ||
** | |||
** | == AJAX-інтерактив == | ||
** | |||
*** | Інтерфейс має працювати швидко та без перезавантаження сторінки. | ||
*** | |||
Через AJAX мають працювати: | |||
* створення заявки; | |||
* активація заявки; | |||
* скасування заявки; | |||
* оновлення біржового стакану; | |||
* подання зустрічної пропозиції; | |||
* автоматичне оновлення ціни; | |||
* оновлення історії угод; | |||
* оновлення балансу; | |||
* оновлення графіків; | |||
* пошук заявок; | |||
* фільтрація об’єктів; | |||
* сповіщення користувачів. | |||
== Логування змін == | |||
Модуль повинен фіксувати всі важливі дії. | |||
Журнал змін має зберігати: | |||
* хто створив заявку; | |||
* хто змінив заявку; | |||
* хто скасував заявку; | |||
* хто створив зустрічну заявку; | |||
* які заявки були зіставлені; | |||
* яка угода створена; | |||
* яка кількість виконана; | |||
* яка сума заблокована; | |||
* яка комісія списана; | |||
* хто виконав адміністративну дію; | |||
* дату й час дії; | |||
* старе та нове значення, якщо це можливо. | |||
== Права доступу == | |||
Модуль має підтримувати розмежування прав. | |||
{| class="wikitable" style="width:100%;" | |||
! Роль | |||
! Можливості | |||
|- | |||
| Гість | |||
| Переглядає публічні торги, якщо це дозволено | |||
|- | |||
| Користувач | |||
| Створює заявки, переглядає свої угоди, керує балансом | |||
|- | |||
| Продавець | |||
| Розміщує заявки на продаж і контролює виконання | |||
|- | |||
| Покупець | |||
| Розміщує заявки на купівлю і контролює виконання | |||
|- | |||
| Модератор | |||
| Перевіряє заявки, блокує підозрілі оголошення | |||
|- | |||
| Фінансовий оператор | |||
| Контролює поповнення, виведення, комісії і баланси | |||
|- | |||
| Керівник | |||
| Переглядає звіти по торгах, комісіях, користувачах і обсягах | |||
|- | |||
| Адміністратор | |||
| Налаштовує типи об’єктів, категорії, права, комісії та службові параметри | |||
|} | |||
== Технічні вимоги == | == Технічні вимоги == | ||
{| class="wikitable" | |||
!Параметр | {| class="wikitable" style="width:100%;" | ||
!Опис | ! Параметр | ||
! Опис | |||
|- | |||
| Бекенд | |||
| K2 Cloud ERP на Python або PHP | |||
|- | |||
| База даних | |||
| PostgreSQL або MySQL | |||
|- | |||
| Фронтенд | |||
| HTML5, JavaScript | |||
|- | |||
| AJAX | |||
| Fetch API або Axios | |||
|- | |- | ||
| | | UI-компоненти | ||
| | | DataTables для таблиці торгів, Select2 для пошуку товарів і послуг, Chart.js для графіків цін | ||
|- | |- | ||
| | | Баланси | ||
| | | Облік доступних і заблокованих коштів, опціонально | ||
|- | |- | ||
| | | Сповіщення | ||
| | | Email, внутрішні повідомлення або месенджери | ||
|- | |- | ||
| | | Друк | ||
| | | Не обов’язково | ||
|- | |- | ||
| | | Експорт | ||
| | | Excel або PDF для звітів | ||
|} | |} | ||
== Критерії | == Рекомендовані сутності бази даних == | ||
{| class="wikitable" | |||
!Критерій | Для реалізації задачі доцільно передбачити такі сутності: | ||
!Бали | |||
* користувачі біржі; | |||
* типи біржових об’єктів; | |||
* категорії; | |||
* біржові об’єкти; | |||
* заявки; | |||
* статуси заявок; | |||
* біржовий стакан; | |||
* угоди; | |||
* історія торгів; | |||
* баланси; | |||
* блокування коштів; | |||
* комісії; | |||
* операції балансу; | |||
* сповіщення; | |||
* графіки цін; | |||
* журнал змін; | |||
* звіти; | |||
* права доступу. | |||
== Практичне завдання == | |||
У межах атестації потрібно продемонструвати робочий сценарій. | |||
Мінімальний сценарій: | |||
# створити користувачів біржі; | |||
# створити типи біржових об’єктів; | |||
# створити категорії; | |||
# створити біржовий об’єкт; | |||
# створити заявку на продаж; | |||
# створити заявку на купівлю; | |||
# відобразити заявки у стакані; | |||
# перевірити сортування buy/sell заявок; | |||
# створити зустрічну заявку з ціною, яка не підходить для угоди; | |||
# перевірити, що угода не створюється; | |||
# створити зустрічну заявку з ціною, яка підходить для угоди; | |||
# автоматично сформувати угоду; | |||
# перевірити часткове виконання заявки; | |||
# перевірити повне виконання заявки; | |||
# перевірити історію торгів; | |||
# реалізувати баланс користувача, якщо фінансовий блок увімкнено; | |||
# заблокувати кошти під заявку; | |||
# списати кошти після угоди; | |||
# нарахувати комісію біржі; | |||
# сформувати звіт активних заявок; | |||
# сформувати звіт історії угод; | |||
# сформувати звіт обсягів торгів; | |||
# сформувати звіт комісій; | |||
# перевірити журнал змін. | |||
== Критерії оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Критерій | |||
! Бали | |||
! Що перевіряється | |||
|- | |||
| Реалізація бази оголошень і торгів | |||
| 20 | |||
| Користувачі, типи об’єктів, категорії, біржові об’єкти, заявки, статуси | |||
|- | |||
| Механізм подачі заявок і формування угод | |||
| 20 | |||
| Buy/Sell заявки, стакан, зіставлення, часткове виконання, автоматичне створення угод | |||
|- | |||
| Ведення історії торгів і ставок | |||
| 20 | |||
| Історія заявок, змін, ставок, угод, виконання і скасування | |||
|- | |||
| Управління балансами і комісіями | |||
| 20 | |||
| Баланси, блокування коштів або активів, списання, зарахування, комісії | |||
|- | |||
| Інтерактивність через AJAX і пошук | |||
| 20 | |||
| Оновлення стакану, заявок, угод, балансів, графіків і пошуку без перезавантаження | |||
|- | |- | ||
| | ! Разом | ||
| | ! 100 | ||
! Максимальна оцінка | |||
|} | |||
== Шкала оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Бали | |||
! Рівень | |||
! Опис | |||
|- | |- | ||
| | | 90–100 | ||
| | | Відмінно | ||
| Модуль повністю працює: заявки, стакан, угоди, часткове виконання, історія, баланси, комісії, пошук і AJAX реалізовані коректно | |||
|- | |- | ||
| | | 75–89 | ||
| | | Добре | ||
| Основна логіка працює, є незначні недоліки, які не руйнують процес торгів | |||
|- | |- | ||
| | | 60–74 | ||
| | | Зараховано | ||
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання | |||
|- | |- | ||
| | | 0–59 | ||
| | | Не зараховано | ||
| Відсутня критична логіка: заявки, стакан, зіставлення, угоди або історія торгів | |||
|} | |} | ||
== Критичні помилки == | |||
Критичними помилками вважаються ситуації, коли: | |||
* неможливо створити користувача біржі; | |||
* неможливо створити біржовий об’єкт; | |||
* неможливо створити заявку; | |||
* заявка без ціни або кількості потрапляє в стакан; | |||
* заявки в стакані сортуються неправильно; | |||
* угода створюється, коли ціна покупця нижча за ціну продавця; | |||
* угода створюється без доступного залишку кількості; | |||
* часткове виконання заявки працює неправильно; | |||
* виконана заявка залишається активною; | |||
* скасована заявка бере участь у торгах; | |||
* баланс не блокується під заявку, якщо фінансовий блок заявлений; | |||
* кошти або активи не списуються після угоди; | |||
* комісія не розраховується, якщо ця функція заявлена; | |||
* історія угод не фіксується; | |||
* звіти не відповідають фактичним заявкам і угодам; | |||
* зміни заявок, угод і балансів не логуються. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл біржі: користувач → заявка на продаж → заявка на купівлю → стакан → зіставлення → угода → історія → звіт. | |||
</div> | |||
== Очікуваний результат == | |||
У результаті виконання атестаційного завдання має бути створений модуль біржі в K2 ERP. | |||
Модуль має підтримувати користувачів, типи біржових об’єктів, категорії, біржові об’єкти, заявки на купівлю і продаж, біржовий стакан, автоматичне зіставлення заявок, часткове виконання, угоди, історію торгів, баланси, блокування коштів або активів, комісії, кабінет користувача, сповіщення, графіки цін, звіти, AJAX-інтерактив і логування змін. | |||
== Примітка == | == Примітка == | ||
Біржа є складним модулем, бо в ній важлива точність, швидкість і надійність. Помилка в заявці, балансі або зіставленні може призвести до неправильних угод і фінансових втрат. | |||
Навіть базова реалізація біржі добре перевіряє вміння працювати зі статусами, чергами заявок, транзакціями, історією операцій, AJAX-оновленням і фінансовою логікою. | |||
== Коротко == | |||
{| class="wikitable" style="width:100%;" | |||
! Питання | |||
! Відповідь | |||
|- | |||
| Що потрібно створити? | |||
| Модуль біржі для торгів товарами, послугами або активами | |||
|- | |||
| Які головні об’єкти? | |||
| Користувачі, біржові об’єкти, заявки, стакан, угоди, баланси | |||
|- | |||
| Які заявки потрібні? | |||
| Заявки на купівлю і продаж | |||
|- | |||
| Коли створюється угода? | |||
| Коли ціна покупця більша або дорівнює ціні продавця | |||
|- | |||
| Що таке часткове виконання? | |||
| Коли угода закриває тільки частину кількості заявки | |||
|- | |||
| Що має робити фінансовий блок? | |||
| Блокувати кошти або активи, списувати після угоди, нараховувати комісію | |||
|- | |||
| Які звіти потрібні? | |||
| Активні заявки, історія угод, обсяги торгів, комісії, баланси | |||
|- | |||
| Що є критичною вимогою? | |||
| Коректне зіставлення заявок і фіксація угоди в історії | |||
|} | |||
== Див. також == | |||
* [[K2 Cloud ERP|K2 ERP]] | |||
* [[K2 ERP]] | |||
* [[Атестаційні завдання K2 ERP]] | |||
* [[Маркетплейс]] | |||
* [[Сайт фрілансу]] | |||
* [[Обмінка]] | |||
* [[Зернотрейдер]] | |||
* [[Торги]] | |||
* [[Заявка]] | |||
* [[Угода]] | |||
* [[Баланс]] | |||
* [[Комісія]] | |||
* [[AJAX]] | |||
[[Категорія:K2 ERP]] | |||
[[Категорія:Атестаційні завдання K2]] | |||
[[Категорія:Біржа]] | |||
[[Категорія:Торги]] | |||
[[Категорія:Заявки]] | |||
[[Категорія:Фінансовий облік]] | |||
[[Категорія:Корпоративна Wiki]] | |||