Giter Club home page Giter Club logo

de.idnow.example's Introduction

#Welcome to the IDnow example project

##Setup

You need:

  • Java 8 installed
  • A checkout of this project (obviously)

To run the web frontend:

  • go this folder in a shell
  • Linux / Mac: run "./activator run"
  • Windows: run "./activator.bat run"
  • After the startup (on the first run, this can take some minutes) you can access the web frontend at http://localhost:9000

To run the unit tests:

  • go this folder in a shell
  • Linux / Mac: run "./activator test"
  • Windows: run "./activator.bat test"

##Your tasks

You are provided with the JSON representation of 2 objects:

  • An identification which is a request of a user to be identified by IDnow
  • A company, which is a customer of IDnow

The identification has the following properties:

  • Id: The unique ID of the identification
  • Name: Name of the user
  • Time: The time when this identification request was started by the user (Unix format)
  • Waiting_time: The current waiting time of the identification in seconds (since the user started)
  • Companyid: The ID of the company to which this identification belongs

The company has the following properties:

  • Id: The unique ID of the company
  • Name: The name of the company
  • SLA_time: The SLA (Service Level Agreement) time of this company in seconds
  • SLA_percentage: The SLA (Service Level Agreement) percentage of this company as float
  • Current_SLA_percentage: The current SLA percentage of this company in this month (e.g. 0.95 would mean that IDnow achieved an SLA_percentage of 95% for this company for this month. If this is lower than SLA_percentage at the end of the month, we would not have reached to agreed SLA)

The SLA is calculated as follows:

  • <SLA_percentage>% of the identifications should be accepted in less than <SLA_time> seconds
  • Example1: SLA_time=60, SLA_percentage=0.9: 90% of the idents should be accepted in less than 60 seconds
  • Example2: SLA_time=120, SLA_percentage=0.8: 80% of the idents should be accepted in less than 120 seconds

Your task:

  • Implement a REST interface with 2 routes
    • POST /api/v1/startIdentification: Here you can POST a identification object which is then added to the current list of open identifications
    • GET /api/v1/pendingIdentifications: Here you can get a list of identifications. The identifications should be ordered in the optimal order regarding the SLA of the company, the waiting time of the ident and the current SLA percentage of that company. More urgent idents come first.
  • Implement a unit test which tests a list of identifications to check wether the correct order is returned

Example 1:

  • One company with SLA_time=60, SLA_percentage=0.9, Current_SLA_percentage=0.95
  • Identification 1: Waiting_time=30
  • Identification 2: Waiting_time=45 Expected order: Identification 2, Identification 1 (since Ident 2 has waited longer)

Example 2:

  • Company 1 with SLA_time=60, SLA_percentage=0.9, Current_SLA_percentage=0.95
  • Company 2 with SLA_time=60, SLA_percentage=0.9, Current_SLA_percentage=0.90
  • Identification 1 belonging to Company1: Waiting_time=30
  • Identification 2 belonging to Company2: Waiting_time=30 Expected order: Identification 2, Identification 1 (since Company 2 already has a lower current SLA percentage in this month, so its identifications have higher prio)

Example 3:

  • Company 1 with SLA_time=60, SLA_percentage=0.9, Current_SLA_percentage=0.95
  • Company 2 with SLA_time=120, SLA_percentage=0.8, Current_SLA_percentage=0.95
  • Identification 1 belonging to Company1: Waiting_time=30
  • Identification 2 belonging to Company2: Waiting_time=30 Expected order: Identification 1, Identification 2 (since company 1 has a lower, more urgent SLA)

Example 4:

  • Company 1 with SLA_time=60, SLA_percentage=0.9, Current_SLA_percentage=0.95
  • Company 2 with SLA_time=120, SLA_percentage=0.8, Current_SLA_percentage=0.80
  • Identification 1 belonging to Company1: Waiting_time=45
  • Identification 2 belonging to Company2: Waiting_time=30 What is the expected order here?

##What do we check?

How do we check the results:

  • First we check if the tasks have been finished and if they work correctly
  • We expect good code quality
  • We expect the code to be easily readable and understandable
  • Good unit test coverage
  • We check if the order of the identifications is correct regarding the SLAs of the companies

Bonus task:

  • Create a web interface to add new identifications to the REST interface

##Where to start

  • Check the test/RestController.Test.java for an example test
  • Check the conf/routes for the REST routes
  • Check the app/controllers/RestController.java for the stubs for the REST interface

##How to turn in the assignment

  • Clone this Github repository
  • Check in your code
  • Create a pull request against this Github repository

de.idnow.example's People

Contributors

arminbauer avatar moybon avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.