Git Product home page Git Product logo

bet1x2's Introduction

Bet1X2App/Tietokantasovellus alkukesä 2018

Laboratory work: Database application

NOTE: I have deleted the Heroku application due to changes in Heroku free product plan policies.

Bookmaker Bet1X2

Bet1X2 is a fictional bookmaker which offers only 1X2 type betting (the possible outcomes of a sporting event, for example a soccer match, are a home win (1), a draw (X) or an away win (2)). Typically, this type of betting is offered in Europe for football (soccer) betting.

This project was done for the University of Helsinki course Laboratory work: Database application during May and June of the year 2018. This was also the first project where I coded in Python.

The project consists of implementing the basic functionality of the website of the bookmaker Bet1X2. On Bet1X2's website, customers can create accounts, deposit or withdraw (fictional) money and, most importantly, place bets on 1X2 type events. Administrators can add matches and set the odds in such a way that the customer has no arbitrage opportunities. Instead, at least theoretically, the arbitrage is on the bookmaker's side.

The pricing of match outcomes (i.e. setting the odds) consists of the administrator assigning (subjective) probabilities for different outcomes 1, X and 2 (which must sum to 1). Then the odds are calculated in such a way that the expected profit of the bookmaker is 10 % from every bet. This holds, if the total amount of money wagered is distributed according to the assigned probabilities. For risk management purposes, a real bookmaker would potentially have to change the odds, if the total money wagered on the match was distributed significantly differently than the assigned probabilities. However, this functionality was not implemented in the project, since it would have been outside the scope of the course.

The goal of the course was to integrate a database to a web application, and to implement proper validation of forms. Therefore, the odds calculation mechanism was an extra feature from this vantage point, and significantly less time was spent on it. As a result, if the probability of an outcome (1, X or 2) is greater or equal to 90 %, then the odds have to be set manually, since this case is not handled automatically.

Vedonvälittäjä Bet1X2

Vedonvälitystoimisto Bet1X2 tarjoaa pelkästään 1X2-tyyppisiä vetoja rekisteröityneille asiakkailleen internetsivullaan.

Asiakas voi rekisteröityä sivulla, ja sen jälkeen lyödä vetoa yhtiön tarjoamista otteluista. Ottelulla on kolme eri tulosmahdollisuutta: kotivoitto 1, tasapeli X ja vierasvoitto 2. Jokaiseen mahdollisuuteen liittyy kerroin ja tapahtuman todennäköisyys. Lisäksi otteluun liittyy kotijoukkue, vierasjoukkue, ajankohta ja myöhemmin varmistuva tulos.

Bet1X2:n palautusprosentti on 90 % eli se ottaa laskennallisesti ja odotusarvoisesti 10 % jokaisesta ottelutapahtuman pelivaihdosta itselleen. Loput 90 % maksetaan pelaajille voittoina.

Vedonvälittäjällä työskentelee admin-oikeuksilla varustettuja henkilöitä, jotka voivat lisätä otteluita otteluvalikoimaan ja liittää niihin kotivoiton, tasapelin ja vierasvoiton todennäköisyyden. Otteluihin voidaan sitten liittää vetokohde, joka sisältää muun muassa kertoimet. Admin voi poistaa vetokohteen, jos siitä ei vielä ole lyöty vetoa. Muutoin admin voi vain muuttaa vetokohteen ei-aktiiviseksi tai sulkea sen.

Asiakas voi muuttaa salasanaansa ja lisätä saldoaan. Lisäksi asiakas voi poistaa tilinsä, jos hänellä ei ole avoimia vetoja, muulloin asiakas joutuu odottamaan, että avoimet vedot ratkeavat ja tämän jälkeen asiakas voi poistaa tilinsä.

Asiakas ei voi perua vetoa sen jälkeen kun se on lyöty. Vedon lyötyään asiakas näkee mahdollisen voiton määrän. Asiakas voi lyödä useita vetoja samasta kohteesta (eri kupongeille).

Asiakas voi yhdistellä useita kohteita samaan vetokuponkiin. Asiakas voittaa, jos kaikki vetokupongin kohteet ovat oikein ja häviää muulloin paitsi jos kuponkiin liittyy mitätöity ottelu jolloin pelipanos palautetaan pelaajalle riippumatta muiden kohteiden tuloksesta.

Asiakas voi tarkastella vetohistoriaansa ja tarjolla olevia vetokohteita. Admin voi tarkastella kaikkien kohteiden vaihtoja ja käytettävissä olevien otteluiden listoja. Admin voi lisätä otteluita ja asettaa niiden tuloksen.

Tietokannan rakenne

Tietokantarakenne

Tietokantakaavio

Bet1X2 tietokantakaavio

User stories

User stories

Toteutus, työn rajoitteet ja omat kokemukset

Toteutus/rajoitteet/puutteet/kokemukset

Asennusohje

Asennusohje

Käyttöohje

Käyttöohje

Rekisteröity käyttäjä:

username: pelaaja1

password: 12345678

Tavallinen käyttäjä näkee pelkästään vetotarjoukset listana ja voi lyödä vetoja niistä. Lisäksi käyttäjä näkee oman tilinsä, voi siirtää rahaa, vaihtaa salasanan ja poistaa tilinsä (ehdollisesti) sekä hän näkee pelihistoriansa. Käyttäjä voi myös etsiä vetokohteita joukkueen nimen tai sen osan perusteella

Admin

Admin näkee:

  • ottelulistan, voi lisätä otteluita

  • voi lisätä vetokohteen (betting_offer) otteluun, jos otteluun ei vielä liity vetokohdetta,

  • näkee pelivaihdon (turnover statistics) ja rahan jakautumisen eri vaihtoehtojen kesken,

  • voi hallinnoida vetotarjouksia (Manage betting offers) esim. muuttamalla sen ei-aktiiviseksi jolloin kohde ei enää näy tavalliselle käyttäjälle

  • pelkällä admin-roolilla varustettu käyttäjä ei voi asettaa vetoja, eikä hän voi muokata tiliään, jotta joku ei käy vaihtamassa esimerkkitilin salasanaa tai poistamassa esimerkki-admintiliä

  • admin voi asettaa ottelun tuloksen, mikä käynnistää tuloksesta riippuvien tietokohteiden päivityksen

Huomioita

Jos tapahtuman todennäköisyys on 90 % tai yli niin kertoimet menevät alle 1:n johtuen puutteellisesta laskentamekanismista, ja tällöin kertoimia pitää säätää manuaalisesti jotta lomake validoidaan.

  • Kaikki toiminnallisuudet eivät näy esimerkiksi otteluun tai vetokohteisiin liittyen, koska esimerkiksi vetokohteen kertoimien muuttaminen, jos ottelu on jo ratkennut ei ole mielekästä, samoin tuloksen asetus useita kertoja jne
  • Ottelun (sport_match) voi poistaa vain jos siihen ei liity vetokohdetta (betting_offer).
  • Vetokohteen (betting_offer) voi poistaa, jos kohteesta ei ole lyöty vetoa
  • Pelaaja voi poistaa tilin, jos hänellä ei ole avoimia vetoja
  • Admin ei voi poistaa tiliä

bet1x2's People

Contributors

dependabot[bot] avatar jsos17 avatar

Watchers

 avatar

bet1x2's Issues

Koodikatselmointi

Projekti ladattu 5.6.2018 klo 19.

Yleistä

  • Ohjelma toimii hyvin myös ajettaessa omalta koneelta
  • Dokumentaatio on myös kattava
  • Sen sijaan että tallennetaan eurot ja sentit erikseen, voidaan käyttää tallennettaessa vain senttimäärää ja muokata sitten tulostusta

Auth

  • Kirjautumislomake voisi validoida käyttäjänimen ja salasanan erikseen, tuottaen molemmille omat virheilmoitukset
  • Sekä rekisteröitymislomakkeen että päivityslomakkeen voisi toteuttaa edellisen aliluokkana, lisäten pari uutta kentää
  • Päivitettäessä käyttäjän tietoja ei kannata sisällyttää käyttäjän id:tä sivun osoitteeseen, jotta käyttäjät eivät voi muuttaa toistensa tietoja, vaan kannattaa käyttää current_userin id:tä

Bet Coupons

  • Kannattaa validoida että kaikkiin kenttiin syötetään edes jotain sekä asettaa euromäärälle yläraja
  • Jos kuponki ei mene validoinnista läpi, uudelleenohjaus ei toimi, koska muuttujaa match_offer_tuples ei ole määritelty

Betting Offers

  • Kannattaa validoida ettei syötetä liian suuria desimaalilukuja, koska jos kaksi kertoimista on esim. ykkösiä, niin kolmas voi olla miten suuri vain

Matches

  • Koti- ja vierasjoukkueiden nimien pituudet voisi myös validoida

Koodikatselmointi 2

Koodikatselmointi

Projekti on ladattu 19.6.2018 13:40

Kokonaisuus

  • Projekti näyttää kokonaisuudeltaan hyvältä. Sovellukselle ja dokumentaationlle löytyy oma erillinen kansio. Dokumentaatio on selkeä ja kattava, erityisesti käyttöohje on helposti ymmärrettävää.
  • Sovellus pilkottu selkeitä vastuualueita hoitaviin luokkiin.
  • Sovellus toimii hyvin myös omalla koneella.

Luokkakaavio

  • Olisiko parempaa, jos rahamäärä tallennetaan tietokantaan vain eurona, ja samalla käyttäjän syöttäessään rahamäärän hänen ei tarvitse syöttää eurot ja sentit erikseen, vaan esim, "12.30 euroa"?

Ulkoasu

  • Sovellus on käyttäjän näkökulmasta tehokas: sivut ovat rakennettu loogisesti ja järkevä yllävalikko löytyy helposti.
  • Syötteen validoimisessa virheilmoitus voisi olla erivärinen(esim.punainen).

Käytettävyys

  • Listan kasvaessa tiedon etsiminen saattaa muuttua vaikeaksi, joten sivutus ja tiedon etsiminen esim. avainsanan perustella voisivat parantaa sovelluksen käytettävyyttä.
  • Uuden käyttäjän rekisteröinnissä kannattaisi lisätä kentän salasanan vahvistukselle, eli käyttäjän pitää syöttää salasanansa kaksi kertaa, jolla voidaan varmistaa, että käyttäjä on syöttänyt juuri haluavan salasanan.
  • Olisi hyvää että käyttäjä voi halutessaan vaihtaa salasanaa.

Tiedon turvallisuus

  • Käyttäjän salasana kannattaisi suojata myös tietokannasa käyttäen esim. Werkzeugin generate_password_hash.

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.