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

Атестаційні завдання K2 ERP/Біржа

Матеріал з K2 ERP Wiki

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


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

== Звіт «Баланси користувачів» ==

== Блокування товару або активу ==
!;== Що має відображатися у стакані ==

== Практичне задача ==

== Параметри пошуку ==

* користувача;
* валюту;
* доступний баланс;
* заблокований баланс;
* загальний баланс.; |-
| Назва об’єкта
| як ілюстрація: пшениця 3 класу, розробка програмного забезпечення сайту, USD
|-
| Тип
| Товар, послуга, актив
|-
| Категорія
| Група об’єкта
|-
| Одиниця виміру
| Шт., кг, т, година, одиниця
|-
| характеристика
| Детальна відомості
|-
| Мінімальний крок ціни
| Опціонально
|-
| Мінімальна кількість
| Опціонально
|-
| Статус
| Активний або архівний
|}

== історичний розвиток торгів ==

== AJAX-інтерактив ==

== Назва задача ==

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

<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;">

== ключовий бізнес-процес ==

* тип об’єкта;
* категорія;
* назва;
* ціна від;
* ціна до;
* валюта;
* тип заявки;
* статус;
* дата створення;
* користувач системи, якщо доступно за правами.;

Див.; додатково

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

Примітка

!; Бали

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

  1. поповнює баланс або додає доступний товар, якщо реалізовано фінансовий чи складський блок;
  2. створює заявку на продаж або купівлю;
  3. платформа додає заявку в біржовий стакан;
  4. інший користувач системи створює зустрічну заявку;
  5. платформа перевіряє збіг ціни, кількості та умов;
  6. при збігу формується угода;
  7. кількість у заявках зменшується або заявки закриваються;
  8. кошти, товар або інший актив переходять між сторонами;
  9. біржа утримує комісію, якщо це передбачено;
  10. операційна дія записується в історію торгів;
  11. користувачі бачать результат у своїх кабінетах.; Журнал змін має зберігати:

Поля користувача

У звіті потрібно відображати: !; Критично. платформа не повинна створювати угоду, якщо ціна покупця нижча за ціну продавця або якщо в однієї із заявок немає доступного залишку кількості.; платформа має враховувати ціну, кількість, тип заявки, залишок невиконаної кількості, статус користувача, баланс, комісію та історію операцій.; Окремо варто відзначити ведення біржового стакану, автоматичне зіставлення зустрічних заявок, фіксацію угод, історію торгів, особистий кабінет користувача, баланси, комісії, сповіщення, звіти і журналювання дій.; !; * створювати заявки;

  • переглядати свої активні заявки;
  • переглядати виконані заявки;
  • скасовувати свої активні заявки;
  • бачити свої угоди;
  • бачити історію торгів;
  • бачити баланс;
  • поповнювати баланс, якщо реалізовано;
  • подавати заявку на виведення коштів, якщо реалізовано;
  • отримувати сповіщення про угоди;
  • налаштовувати повідомлення по категоріях.;== Звіт «Обсяги торгів» ==

Коротко. Потрібно реалізувати біржовий компонент: користувачі, біржові об’єкти, категорії, заявки на купівлю і продаж, bid/ask, стакан заявок, автоматичне укладання угод, історичний розвиток торгів, баланси, комісії, кабінет користувача, AJAX-оновлення цін і звіти.; !; {| class="wikitable" style="width:100%;"

Угода = 40 одиниць

  • створення заявки;
  • активація заявки;
  • скасування заявки;
  • актуалізація біржового стакану;
  • подання зустрічної пропозиції;
  • автоматичне актуалізація ціни;
  • актуалізація історії угод;
  • актуалізація балансу;
  • актуалізація графіків;
  • пошук заявок;
  • фільтрація об’єктів;
  • сповіщення користувачів.; | Коректне зіставлення заявок і фіксація угоди в історії

|}

Звіт «Активні заявки»

компонент має підтримувати розмежування прав.; Звіт показує всі заявки, які зараз беруть участь у торгах.; * номер заявки;

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

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

Звіт показує активність по об’єктах.; характеристика Заявка покупця залишається активною на 60 одиниць

|- | 90–100 | Відмінно | компонент в цілому функціонує: заявки, стакан, угоди, часткове виконання, історичний розвиток, баланси, комісії, пошук і AJAX реалізовані коректно |- | 75–89 | Добре | Основна логіка функціонує, є собою незначні недоліки, які не руйнують бізнес-процес торгів |- | 60–74 | Зараховано | Базовий сценарій функціонує, але частина функцій реалізована неповно або потребує доопрацювання |- | 0–59 | Не зараховано | Відсутня критична логіка: заявки, стакан, зіставлення, угоди або історичний розвиток торгів |}

Типи заявок

Сортування у стакані

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

| Бекенд | K2 Cloud ERP на Python або PHP |- | База даних | PostgreSQL або MySQL |- | Фронтенд | HTML5, JavaScript |- | AJAX | Fetch API або Axios |- | UI-компоненти | DataTables для таблиці торгів, Select2 для пошуку товарів і послуг, Chart.js для графіків цін |- | Баланси | обліковий облік доступних і заблокованих коштів, опціонально |- | Сповіщення | Email, внутрішні повідомлення або месенджери |- | Друк | Не обов’язково |- | Експорт | Excel або PDF для звітів |}

  • користувачі біржі;
  • типи біржових об’єктів;
  • категорії;
  • біржові об’єкти;
  • заявки;
  • статуси заявок;
  • біржовий стакан;
  • угоди;
  • історичний розвиток торгів;
  • баланси;
  • блокування коштів;
  • комісії;
  • операції балансу;
  • сповіщення;
  • графіки цін;
  • журнал змін;
  • звіти;
  • права доступу.; !; Заявки на купівлю сортуються:
Потрібна сума = Кількість × Ціна + Комісія
; Призначення

платформа має надсилати користувачам повідомлення про важливі події.; характеристика
== Графіки і ринкові інформаційні дані ==
|-
| Що потрібно створити?; Помилка в заявці, балансі або зіставленні має змогу призвести до неправильних угод і фінансових втрат.;== Статуси заявки ==

* відсоток від суми угоди;
* фіксована сума;
* комбінована комісія;
* різна комісія для покупця і продавця;
* індивідуальна комісія для окремих користувачів.;<pre>
У звіті потрібно відображати:

!; Відповідь
<pre>

</div>

== Коротко ==

{{DISPLAYTITLE:Атестаційні завдання K2 ERP/Біржа}}

!; | компонент біржі для торгів товарами, послугами або активами
|-
| Які головні об’єкти?; Без цих даних вона не повинна потрапляти в біржовий стакан.;<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">

!; Поле

[[Категорія:Атестаційні завдання K2]]
[[Категорія:Корпоративна Wiki]]
історичний розвиток торгів зберігає всі події по заявках і угодах.; | Активні заявки, історичний розвиток угод, обсяги торгів, комісії, баланси
|-
| Що є собою критичною вимогою?; Поле
== Сповіщення ==
{| class="wikitable" style="width:100%;"

== Функції кабінету ==

== Що має підтримувати баланс ==

Користувачі біржі — це учасники, які можуть створювати заявки та укладати угоди.; !;== Поля біржового об’єкта ==

Сума угоди = Кількість × Ціна

Часткове виконання

Біржовий стакан показує активні заявки на купівлю і продаж.; характеристика

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

Через AJAX мають працювати: У звіті потрібно відображати:

Поля угоди

Довідник «Типи біржових об’єктів»

Мета задача

; Опціонально компонент має змогу показувати графіки цін.; Разом

Події для сповіщень

; характеристика
ПІБ або назва компанії Ім’я користувача або назва організації
Тип користувача Фізична особа, ФОП, організація, внутрішній користувач системи
Email Для входу та сповіщень
Телефон Контактний номер
Статус Активний, на перевірці, заблокований, архівний
Рівень доступу Звичайний учасник, маркетмейкер, адміністратор
Коментар Внутрішні примітки адміністратора
;== Звіти ==

Фінансовий блок є собою опціональним, але бажаним для повноцінної біржі.; Параметр

;== Критерії оцінювання == Блокувати кошти або активи, списувати після угоди, нараховувати комісію
Коли угода закриває тільки частину кількості заявки
Що має робити фінансовий блок?; Максимальна оцінка

центральний принцип. Біржа повинна надійно зіставляти зустрічні заявки.; Поле При створенні заявки на купівлю платформа повинна перевірити наявність коштів.;== Критичні помилки ==

Біржовий стакан

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

Звіт «історичний розвиток угод»

; Роль

Ціна покупця >= Ціна продавця Типовий бізнес-процес роботи біржі виглядає так:

Формула суми угоди

Чернетка Заявка створюється, але ще не активна
Активна Заявка бере участь у торгах
Частково виконана Частина кількості вже виконана
Виконана Заявка в цілому закрита угодами
Скасована користувач системи або адміністратор скасував заявку
Прострочена Термін дії заявки завершився
Заблокована Заявка зупинена через перевірку або обмеження

Біржа має змогу використовуватися для:

;== Угоди ==

Правило для угоди

Для заявки на купівлю і заявки на продаж угода можлива, якщо:

  • хто створив заявку;
  • хто змінив заявку;
  • хто скасував заявку;
  • хто створив зустрічну заявку;
  • які заявки були зіставлені;
  • яка угода розроблена;
  • яка кількість виконана;
  • яка сума заблокована;
  • яка комісія списана;
  • хто виконав адміністративну дію;
  • дату й час дії;
  • старе та нове значення, якщо це можливо.;
  1. створити користувачів біржі;
  2. створити типи біржових об’єктів;
  3. створити категорії;
  4. створити біржовий об’єкт;
  5. створити заявку на продаж;
  6. створити заявку на купівлю;
  7. відобразити заявки у стакані;
  8. перевірити сортування buy/sell заявок;
  9. створити зустрічну заявку з ціною, яка не підходить для угоди;
  10. перевірити, що угода не створюється;
  11. створити зустрічну заявку з ціною, яка підходить для угоди;
  12. автономно сформувати угоду;
  13. перевірити часткове виконання заявки;
  14. перевірити повне виконання заявки;
  15. перевірити історію торгів;
  16. реалізувати баланс користувача, якщо фінансовий блок увімкнено;
  17. заблокувати кошти під заявку;
  18. списати кошти після угоди;
  19. нарахувати комісію біржі;
  20. сформувати звіт активних заявок;
  21. сформувати звіт історії угод;
  22. сформувати звіт обсягів торгів;
  23. сформувати звіт комісій;
  24. перевірити журнал змін.; | Користувачі, біржові об’єкти, заявки, стакан, угоди, баланси
Які заявки потрібні?;
{| class="wikitable" style="width:100%;"
Інтерфейс має працювати оперативно та без перезавантаження сторінки.; Біржовий об’єкт — це конкретний товар, послуга або актив, яким торгують.; Що перевіряється
[[Категорія:Заявки]]
|}

Покупець хоче купити 100 одиниць

Вища ціна → вище у стакані
!;== Очікуваний результат ==

Критичними помилками вважаються ситуації, коли:
== Логування змін ==
!;</div>

== Баланси користувачів ==

* вести користувачів біржі;
* вести типи біржових об’єктів;
* вести категорії об’єктів;
* створювати заявки на продаж;
* створювати заявки на купівлю;
* вказувати кількість, ціну, валюту та строк дії заявки;
* формувати біржовий стакан;
* зіставляти зустрічні заявки;
* автономно фіксувати угоду при збігу умов;
* вести історію ставок, заявок і угод;
* підтримувати часткове виконання заявки;
* фіксувати статуси заявок;
* вести баланси користувачів, якщо фінансовий блок реалізовано;
* блокувати кошти або товар під час активної заявки;
* розраховувати комісію біржі;
* формувати звіти по торгах, угодах, користувачах і комісіях;
* оновлювати інформаційні дані через AJAX без перезавантаження сторінки.;== Рекомендовані сутності бази даних ==
Пошук має допомагати користувачу оперативно знаходити потрібні об’єкти й заявки.; характеристика
Заявки на продаж сортуються:
== Приклади категорій ==
|-
| Номер угоди
| Унікальний номер
|-
| Об’єкт торгів
| Що було продано або куплено
|-
| Покупець
| користувач системи, який купує
|-
| Продавець
| користувач системи, який продає
|-
| Заявка покупця
| З якої заявки сформована угода
|-
| Заявка продавця
| З якої заявки сформована угода
|-
| Кількість
| Кількість угоди
|-
| Ціна
| Ціна за одиницю
|-
| Сума
| Загальна сума угоди
|-
| Комісія біржі
| Якщо реалізовано
|-
| Дата і час
| Коли угода укладена
|-
| Статус
| Виконана, очікує розрахунку, скасована
|}

== Варіанти комісії ==

{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
Кількість угоди = мінімум(невиконана кількість покупця, невиконана кількість продавця)

== Комісія біржі ==

Угода фіксує факт купівлі-продажу між двома сторонами.; Рівень

== Шкала оцінювання ==

* останню ціну угоди;
* мінімальну ціну за період;
* максимальну ціну за період;
* середню ціну;
* обсяг торгів;
* графік зміни ціни;
* кількість угод за період.; !; Поле
|-
| користувач системи
| Власник балансу
|-
| Валюта
| Валюта балансу
|-
| Доступний баланс
| Кошти, які можна використовувати
|-
| Заблокований баланс
| Кошти, зарезервовані під активні заявки
|-
| Загальний баланс
| Доступний + заблокований
|}

користувач системи повинен мати можливість:

Для заявки на продаж платформа повинна перевірити, чи має продавець достатню кількість товару або активу.; Біржа''' — це практична задача; додатково реалізовано послугами або цифровими активами виступає ключовою рисою перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля електронних торгів товарами забезпечується через '''Атестаційне задача K2 ERP.; * товари;
* сировина;
* зерно;
* метали;
* послуги;
* IT-послуги;
* валюта;
* цифрові активи;
* внутрішні токени;
* корпоративні ресурси.;<pre>

== Що можна показувати ==

!;== Права доступу ==

Комісія = Сума угоди × Відсоток комісії / 100

__TOC__

* об’єкт;
* кількість угод;
* загальну кількість;
* загальну суму;
* середню ціну;
* мінімальну ціну;
* максимальну ціну.; Якщо реалізовано комісії, звіт показує дохід біржі.; | Заявки на купівлю і продаж
|-
| Коли створюється угода?; * створення заявки;
* зміну ціни;
* зміну кількості;
* активацію заявки;
* скасування заявки;
* часткове виконання;
* повне виконання;
* укладення угоди;
* блокування коштів;
* розблокування коштів;
* списання комісії;
* зміну статусу користувача;
* адміністративні дії.; Об’єкт

  • торгівлі товарами;
  • торгівлі зерном;
  • торгівлі металами;
  • торгівлі сировиною;
  • торгівлі послугами;
  • фріланс-заявок;
  • внутрішньої корпоративної біржі заявок;
  • обміну валют;
  • торгівлі цифровими активами;
  • торгівлі внутрішніми токенами;
  • B2B-торгів між компаніями.; |-
Реалізація бази оголошень і торгів 20 Користувачі, типи об’єктів, категорії, біржові об’єкти, заявки, статуси Механізм подачі заявок і формування угод 20 Buy/Sell заявки, стакан, зіставлення, часткове виконання, автоматичне створення угод Ведення історії торгів і ставок 20 історичний розвиток заявок, змін, ставок, угод, виконання і скасування керування балансами і комісіями 20 Баланси, блокування коштів або активів, списання, зарахування, комісії Інтерактивність через AJAX і пошук 20 актуалізація стакану, заявок, угод, балансів, графіків і пошуку без перезавантаження

Кабінет користувача

;== Що потрібно логувати ==

Біржові об’єкти

Поля типу об’єкта

Якщо кількість у заявках не однакова, заявка має змогу бути частково виконана.; | Коли ціна покупця більша або дорівнює ціні продавця

Що таке часткове виконання?; характеристика
  • номер угоди;
  • дату;
  • об’єкт;
  • покупця;
  • продавця;
  • кількість;
  • ціну;
  • суму;
  • комісію.; Питання
;== Звіт «Комісії біржі» ==

Поля заявки

Опціонально платформа має змогу розраховувати комісію біржі.; Бали Якщо кількість доступна, вона блокується під заявку.; У результаті виконання атестаційного задача має бути створений компонент біржі в K2 ERP.; Якщо коштів недостатньо — заявка не повинна бути активована.; |-

Користувачі біржі Учасники, які створюють заявки та укладають угоди Типи біржових об’єктів Товари, послуги, активи, валюти, токени Категорії Групування об’єктів торгів Біржові об’єкти Конкретні товари, послуги або активи Заявки Накази на купівлю або продаж Біржовий стакан Черга заявок buy/sell за ціною та часом Угоди Зафіксовані операції між покупцем і продавцем Баланси Кошти або активи користувачів, якщо реалізовано фінансовий блок Комісії Винагорода біржі за угоду історичний розвиток торгів Лог усіх заявок, змін і угод Сповіщення Повідомлення про виконання заявки, угоду або зміну ціни Звіти аналітичні інструменти по торгах, обсягах, користувачах і комісіях

У звіті потрібно відображати:

Продавець продає 40 одиниць

компонент має забезпечувати створення заявок на купівлю і продаж.; Біржа є собою складним модулем, бо в ній важлива точність, швидкість і надійність.; {| class="wikitable" style="width:100%;"

компонент біржі: торги товарами, послугами або фінансовими активами.; Статус

Довідник «Користувачі біржі»

Гість Переглядає публічні торги, якщо це дозволено
користувач системи Створює заявки, переглядає свої угоди, керує балансом
Продавець Розміщує заявки на продаж і контролює виконання
Покупець Розміщує заявки на купівлю і контролює виконання
Модератор Перевіряє заявки, блокує підозрілі оголошення
Фінансовий оператор Контролює поповнення, виведення, комісії і баланси
Керівник Переглядає звіти по торгах, комісіях, користувачах і обсягах
Адміністратор Налаштовує типи об’єктів, категорії, права, комісії та службові параметри

Якщо ціна однакова, перевагу має заявка, розроблена раніше.; Критерій

|-
| Номер заявки
| Унікальний номер
|-
| користувач системи
| Хто створив заявку
|-
| Тип заявки
| Купівля або продаж
|-
| Об’єкт торгів
| Що купується або продається
|-
| Категорія
| Категорія об’єкта
|-
| Кількість
| Загальна кількість
|-
| Невиконана кількість
| Залишок заявки після часткових угод
|-
| Ціна
| Ціна за одиницю
|-
| Валюта
| Валюта розрахунку
|-
| Мінімальна / максимальна ціна
| Для аукціонів, якщо реалізовано
|-
| Дата створення
| Коли заявка розроблена
|-
| Термін дії
| До якої дати заявка активна
|-
| Статус
| Активна, частково виконана, виконана, скасована, прострочена
|}

!; функціональні можливості

Умова складання. задача не має змогу бути зараховане, якщо платформа не надає можливість пройти базовий цикл біржі: користувач системи → заявка на продаж → заявка на купівлю → стакан → зіставлення → угода → історичний розвиток → звіт.; Основна складність біржі — швидке й точне зіставлення заявок.; * поповнення;
* списання;
* блокування коштів під заявку;
* розблокування при скасуванні заявки;
* списання коштів після угоди;
* зарахування коштів продавцю;
* утримання комісії;
* історію операцій.; Якщо реалізовано фінансовий блок, звіт показує кошти користувачів.; Заявка — це пропозиція користувача купити або продати біржовий об’єкт.; Тип біржового об’єкта визначає, що саме продається або купується.; {| class="wikitable" style="width:100%;"
Заявка продавця стає виконаною
|-
| Назва типу
| як ілюстрація: товар, послуга, актив
|-
| характеристика
| Коротке пояснення типу
|-
| Одиниці виміру
| Шт., кг, т, м², година, одиниця
|-
| Активність
| Чи доступний тип для нових торгів
|}



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

Заявки на біржі

* продукти харчування; * зернові; * метали; * будівельні матеріали; * IT-послуги; * дизайн; * маркетинг; * транспортні послуги; * внутрішні токени; * валюти.; Значення
; Поле

Пошук і фільтрація

Нижча ціна → вище у стакані компонент має підтримувати користувачів, типи біржових об’єктів, категорії, біржові об’єкти, заявки на купівлю і продаж, біржовий стакан, автоматичне зіставлення заявок, часткове виконання, угоди, історію торгів, баланси, блокування коштів або активів, комісії, кабінет користувача, сповіщення, графіки цін, звіти, AJAX-інтерактив і логування змін.; характеристика * заявка розроблена; * заявка активована; * заявка частково виконана; * заявка в цілому виконана; * укладена угода; * заявка скасована; * ціна досягла потрібного рівня; * кошти заблоковані; * кошти розблоковані; * отримано оплату; * списано комісію.; !;== Поля балансу ==

Механіка зіставлення заявок

Приклад: Навіть базова реалізація біржі добре перевіряє вміння працювати зі статусами, чергами заявок, транзакціями, історією операцій, AJAX-оновленням і фінансовою логікою.; !;== Технічні вимоги ==

Блокування коштів

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

Категорії допомагають групувати об’єкти торгів.; !; Поле У звіті потрібно відображати:

Приклади типів

компонент повинен фіксувати всі важливі дії.;
;== Формула комісії == Мета задача — створити в K2 ERP компонент електронної біржі, де користувачі можуть розміщувати заявки на купівлю або продаж, подавати зустрічні пропозиції, укладати угоди та бачити історію торгів.; Якщо коштів достатньо, платформа блокує суму під заявку.; Якщо ні — заявка не повинна бути активована.