wiki:Use-Case

Use-case model

The detailed pages for this phase are kept in the project's GitHub repository, StefanTrsunov/bp, under docs/P3-UseCaseModel/. Every use-case link below opens the corresponding file there.

Actors / Roles

Visitor – Anyone using EduBerza without an account, who can look at public market information, create an account, and log in.

Trader – A registered, logged-in user who deposits virtual funds, places market buy and sell orders, follows the value of their portfolio, and keeps a watchlist of assets they want to monitor.

Market Simulator – An external automated system (the bot in bots/) that writes simulated trades and candles into the database so prices move without a connection to a real exchange.

Use-Cases

Visitor

  • UC0001Register new account – Visitor creates an account with a unique username and e-mail; the password is stored as a SHA-256 hash.
  • UC0002Log in – Visitor authenticates with username and password so the system treats every following action as a Trader.

Trader

  • UC0003Deposit virtual funds – Trader tops up their virtual cash balance; the user row and the ledger are written in one transaction.
  • UC0004Place market BUY order – Trader buys a crypto asset at the current market price, which debits cash and upserts the holding at a running weighted-average price.
  • UC0005Place market SELL order – Trader sells part or all of a holding at the current market price, which credits cash and preserves the cost basis.
  • UC0006View portfolio and transaction history – Trader inspects current holdings, unrealised P/L, cash balances and the most recent ledger entries.
  • UC0007Manage watchlist – Trader lists, adds and removes crypto assets on a personal watchlist, where adding an asset already on the list is a no-op.

Market Simulator

The Market Simulator initiates no use case of its own. It participates in UC0004 and UC0005 indirectly, by keeping project.market_trades populated so that project.v_latest_prices returns a current price for every active market.

Use-case model diagram

Detailed Use-Cases

The following use-cases are documented in detail, with SQL tested against the P2 database:

Realization details on selection of the most important use cases

This is a solo project, so at least 3 use cases are required. 7 use cases are documented, for a safety margin. All seven are implemented in the P4 prototype; see server/ for the Go source and PrototypeImplementation for the documented runs.

Use caseImportanceWhy it was selected
UC0001 – RegisterHighNothing else works without it; demonstrates INSERT with a uniqueness check.
UC0002 – Log inHighAuthenticates every Trader action; demonstrates SELECT with parameter binding.
UC0003 – DepositHighShows a multi-row transaction: UPDATE users plus INSERT INTO transactions.
UC0004 – BuyVery highCore of the exchange: INSERT orders, UPDATE users, upsert holdings, ledger entry, market trade.
UC0005 – SellVery highDual of Buy; demonstrates row-level FOR UPDATE locking and cost-basis bookkeeping.
UC0006 – PortfolioHighDemonstrates joins over holdings, markets and crypto, and the v_portfolio view.
UC0007 – WatchlistMediumDemonstrates N–M relation handling and ON CONFLICT upsert semantics.

AI usage

AI was used in this phase and is logged in full, per the course rule for P1 onward.

Service: Claude Code (Anthropic), https://claude.com/claude-code – Claude subscription, model Claude Opus 4.7 (1M context).

In short: the AI proposed the actor taxonomy and drafted the seven use cases with their SQL in session 1. In session 2 the use-case model itself was not changed – the only work was re-executing every scenario, including the failure paths, against a live PostgreSQL 16 database.

Last modified 9 days ago Last modified on 08/07/26 11:32:51
Note: See TracWiki for help on using the wiki.