Skip to content

Initial users stories backlog phase 1

Juan Blanco edited this page Jan 31, 2020 · 12 revisions
  • As user I want Search Product catalogue so I can find a product to add to basket

    • Search by product name (ie book title)
    • Search by product brand (ie book author)
    • Sort by product rank (top sold)
    • Fields to display name, author, price (dai) Dai matches USD, so it will be the main currency.
  • As a user I want to see Top / Recommend products to help me decide what to buy

  • As a user I want to see the details of a product

    • Fields to display name, author, description, price (dai) Dai matches USD
  • As a user I want to add a (multiple) product(s) to the basket so I can make one single order with multiple line items.

  • As a user I want to see the total items in my basket (banner), so that I can validate that I have purchases to complete

  • As a user I want to see the products in my basket and total price.

  • As a user (administrator) I want to login to the system using my Ethereum account so that I can access my areas without using email and password

    • If a external user has logged in for the first time will be prompted to enter more details if wanted to create a record in the system
  • As a user I want to complete an order using the items on my basket

    • Step 1 : The system will validate if user is authenticated (if not login.. process with redirect)

    • Step 2 : The system will confirm delivery address (and allow user to add address to their profile)

    • Step 3.1: Validation (Wonka) delivery rights, validate stock

    • Step 3.2: The system will calculate delivery cost (method) and taxes (Wonka)

    • Step 5: The system will display the user overall quote information

    • Step 6: User will confirm and submit order / quote to blockchain. (with quotation id, wonka rule id and eshop signature of request) An order is signed and confirmed by the system submitted to the smart contract (and smart contract validates and attaches the address to order). A quotation will have a expiry date, as this may not be submitted straight away. Notes: The order will not include user delivery postal address

    • Step submission:

      • Order gets created by the system and signed internally for verification
      • Order is submitted to Nethereum.UI to sign, submit the transaction (i.e Metamask)
      • System waits for transaction hash to store.
      • If submission fails the basket remains the same
      • On transaction hash response (we don't know yet if mined) the hash is added to the basket (status not confirmed in chain)
      • Back office service can start checking for hashes to validate if in chain and start fulfillment process using the quote number / nonce
  • As a user I want to resubmit my order on order submission failed (out of gas, smart contract error, etc)

  • As a user I want to order future released items (included proof of order)

  • As a user I want to create orders directly in Ethereum using a previously approved quotation (could be done using an api)

  • As a system I want to create quotations using an api Input : Signed order items, address, delivery address id (address required to calculate delivery cost, taxes and approved country of delivery)

  • As a user I want to list all my orders associated with my address for proof of purchase, independently of the eShop

  • As a user I want a token per each product purchased to have proof of ownership

  • As a shop owner I want a token per each product in stock

    • Option 1: General stock, account ownership of tokens in an ERC20 smart contract (ie 20 tokens per book of 1000 published)
    • Option 2: Limited edition stock, ownership per item using ERC721
  • As a user I want to keep payment in escrow until item(s) are received

  • As a store owner I want to receive automated payment if user has not acknowledge receipt after 30 days.

Manual back-office for demonstration

  • As an administrator I want to see new orders
  • As an administrator I want to mark as accepted the order Accepted, Ready for Shipment, In Transit, Delivered (see smart contract statuses)
  • As a delivery company I want to be able to sign the collection of an order / item (that could be at warehouse or a returned item)
  • As a delivery company I want to be able to sign the delivery of an order / item
  • As a user I want to cancel an order
  • As a user I want to have a token to validate proof of purchase / ownership of a product
  • As a user I want to return an items

Smart contracts

  • As a shop owner / seller I want to register my shop in the purchase order smart contract to manage my purchase process
  • As a shop owner / seller I want to set my signature address to verify quotations are created by myself so that users do not submit invalid quotations.

Statuses for PO Items

enum PoItemStatus
{
    Initial,            // 0  expect never to see this
    Created,            // 1  PO item has been created in the contract
    Accepted,           // 2  PO item has been accepted by the seller and a corresponding SO item created
    Rejected,           // 3  PO item has been rejected by the seller
    ReadyForGoodsIssue, // 4  PO item is ready for goods issue
    GoodsIssued,        // 5  PO item has been posted or issued by the seller
    GoodsReceived,      // 6  PO item has been received by the buyer or escrow time exceeded
    Completed,          // 7  PO item is complete and escrow funds released to the buyer wallet
    Cancelled           // 8  PO item has been successfully cancelled and funds refunded to buyer wallet
}