VRII2018

From ICO wiki
Jump to navigationJump to search


Meeskonnaliikmed

  • Teet Adamson
  • Kaspar Kaal
  • Rahel Kangur (lahkunud)

Team Foundation Version Control: https://majutuus.visualstudio.com/MajuTuus

Analüüs

Kirjeldus

Tegemist on rentijatele ja rentnikele mõeldud veebiteenusega, millega saab hallata kinnisvara rendile andjaid ja rentijaid, sõlmida omavahel lepinguid, neid punktiskaalal hinnata ning anda rendile andjatele selgust rentniku puhul, kas teda usaldada või mitte ja vastupidi.

Kuna kinnisvaraturg moodustab väga suure osa majandusest ning inimestel on vaja kohta, kus elada kuid elukoha eest maksmine peaks olema mõistliku hinnaga, usaldusväärne ning võimaldama keskkonda, mis on standardiks vastavas riigis. Erinevatel riikidel on erinevad standardid, nägemused ja visioonid elamispinnast. Tihtipeale on väga suurtes linnades renditurul kriis, olukorda raskendab veelgi kahe osapoole vahelise usalduse leidmine. Samuti tuleb ette rentimisel väga palju "üllatusi" ja möödarääkimisi. Tihtipeale esitatakse rendikuulutuses "arved hinna sees" kuid reaalsuses see nii ei ole. Esinevad ka arusaamatused tubade arvu ja osapoolte vahelises kokkulepetest kinnipidamises, rendipinna puudustes ning kvaliteedis. Leiame, et olenemata nõudlusest ei peaks kehva kvaliteediga elamispinnad olema väga suurte rendihindadega või vähemalt peegeldama reaalsust koha üle, mida parasjagu renditakse, et aidata inimestel teha kaalutud ja läbimõeldud otsus elamispinna valikul. Samuti leiame, et ausa konkurentsi põhimõttel peavad rendileandjad pakkuma turul elamispindu, mis on määratud kindla standardi järgi ning olema mõistliku hinnaga.

Põhjused miks sellist rakendust oleks vaja on:

  • linnastumine
  • inimesd eelistavad elada üksi
  • vananevad elamispinnad
  • kallid rendihinnad
  • keeruline protsess lepingute sõlmimisel
  • petuskeemid korterite renditurul

Järjest kallinev kinnisvaraturg ning linnastumine on pannud noored inimesed, kes tahavad üksi elada keerulisse olukorda, kus rendihinnad on liiga kõrged, rendile andjatega on raske tingida kuna nõudlus on suur ning tihtipeale ei vasta ka renditavad kohad ootustele ja rendilepingud võivad olla väga eksitavad. Selleks, et renditurgu ühtustada on tarvis luua süsteem kinnisvaraturul olevate ruumidega ning erinevate hinnangute läbi neid kontrollida ja sel teel ühtlustada turu rendihindu. Selliseks eeskujuks on näiteks Berliin, Saksamaal, kus renditurg on reglementeeritud (rendihinnad rajoonide kohta on fikseeritud, rendile andjaid ei tohi tegeleda lühiajaliste rendile andmistega nagu näiteks AirBnB) kuid seda raskendab keeruline bürokraatlik korraldus, mis koosneb kohtumisest, otsustamisest ning taustauuringust ning kogu protsess võib kesta nädal aega. Meie projekti idee on koguda andmeid hindamise järgi, mis loob rentija ja rendile andja vahelise usalduse. Hinnanguks on punktiskaala, mis arvutatakse kokku eelnevate hinnangutega elamispindadel kuna tänapäeval on normaalne, et kolitakse 1) kehva elukoha tingimuste pärast või saadakse parema palgaga töökoht ja soovitakse paremaid elutingimusi 2) ei sobi korterikaaslastega 3) ümberkorraldused eluteel 4) ümberkorraldused rendile andja poolt.

Need nimetatuid kriteeriumeid annab hinnata ning anda parema pildi renditavast kohast ning rendile andjast. Tänapäeval levivad pigem "word of mouth" stiilis arvamused ning hinnangud erinevate korterite ja majade kohta kuid sotsiaalmeedias levib väga palju juhtumeid, kus on ka näiteks rendile andja rikkunud põhimõttelisi reegleid. Samuti võib olla ka väga stabiilne rentija olla tüliks naabritele tema käitumise tõttu (öörahu rikkumine, reeglite mitte täitmine) Projekti ideeks on hõlbustada lepingu sõlmimist - aidata rentijal välja valida talle sobiv koht ning aidata rendile andjal valida sobiv kandidaat. Kasutajad saavad valida endale sobiva renditava pinna, neile sobiva hinna ja nendele sobiva hinnanguga. Kasutaja Hinnangut mõjutavad järgmised faktorid: maksmata arved, kolimiste arv ja põhjused, stabiilsus. Haldaja hinnangut mõjutavad järgmised faktorid: elamispinna kvaliteet, elanike arv ühel pinnal ja nende vahetumine, asukoht (mugavused ja infrastruktuur), konkreetsed juhtumid.

Kasutatakse: Veebiteenus kasutab andmebaasi, mis koosnevad registreeritud kasutajatest. Rakenduses kasutaja registreerib end kasutajaks kas "rentijana" või "rendile andjana." Rendile andja saab lisada kuulutuse oma rendile antavast elamispinnast ning rentnikud saavad pinda valida.

Kuidas peaks mõjutama rakendus ühiskonda ja inimesi:

  • Paraneb renditurul pakutavate elamispindade kvaliteet (nö Eurostandardi laiaulatuslikum kasutuselevõtt)
  • Rendihindade ühtlustumine
  • Adekvaatsemad valikud inimeste poolt
  • Püsivam ja stabiilsem elukvaliteet
  • Kulude optimeerimine
  • Anda võimalus nendele vähestele, kel ei ole võimalik 1/3 palgast säästa
  • Kolimise põhjuste tagasiside kasutamine inimese profiili loomisel, mitte selle praegune negatiivne võti krediititausta loomisel

Kasutajad

  • Rentijad
  • Rendile andjad
  • Administraator

Projekti funktsionaalsus

Klient

Klient ehk rendile andja saab lisada oma kuulutust.

Tavakasutaja

Tavakasutaja saab rendipindu vaadata ja valida nende vahel endale sobiv.

Administraator

Administraatoril on võimalik kordineerida kogu süsteemi tööd ja anda teistele kasutajatele õigusi(see osa pigem tulevik, sest õiguste osa pole hetkel andmemudelis kirjeldatud).

Must-to-have-functonality

  • Saab luua kasutajaid
  • Registreeritud kasutaja saab lisada kuulutusi või vaadata neid
  • Registreeritud kasutaja saab anda hinnanguid

Nice-to-have-functonality

  • Administraaor kasutajal on rohkem õigusi kui teistel kasutajatel ning ta saab anda teistele kasutajatele õigusi

Andmemudel

XML

XML

<?xml version="1.0" encoding="utf-8" ?>
<apartments>
  <apartment id="1" active="true">
    <numberofrooms>3</numberofrooms>
    <address>
      <city>Tallinn</city>
      <street>Pikk</street>
      <house>5</house>
      <apartmentnumber>13</apartmentnumber>
    </address>
    <owner id="1" activeuser="true">
      <firstname>Malle</firstname>
      <lastname>Kuusk</lastname>
      <contacts>
        <contact id="1" type="phone" value="32588293"></contact>
        <contact id="2" type="email" value="mkuusk@mail.com"></contact>
        <contact id="3" type="address">
          <address>
            <cityorcounty>Harjumaa</cityorcounty>
            <street>Voore</street>
            <housenumber>15</housenumber>
            <apartmentnumber>12</apartmentnumber>
          </address>
        </contact>        
      </contacts>
    </owner>
    <comment>![CDATA[ no previous problems ]]</comment>
  </apartment>
  <apartment id="2" active="false">
    <numberofrooms>6</numberofrooms>
    <address>
      <city>Tartu</city>
      <street>Riia</street>
      <house>9</house>
      <apartmentnumber>9</apartmentnumber>
    </address>
    <owner id="2" activeuser="true">
      <firstname>Mati</firstname>
      <lastname>Soomets</lastname>
      <contacts>
        <contact id="1" type="phone" value="513948289"></contact>
        <contact id="2" type="email" value="kurimati@mail.com"></contact>
        <contact id="3" type="address">
          <address>
            <cityorcounty>Tallinn</cityorcounty>
            <street>Lai</street>
            <housenumber>12</housenumber>
            <apartmentnumber>11</apartmentnumber>
          </address>
        </contact>
      </contacts>
    </owner>
    <comment>![CDATA[ leaking roof ]]</comment>
  </apartment>
</apartments>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="apartments">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="apartment">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="numberofrooms" type="xs:unsignedByte" />
              <xs:element name="address">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="city" type="xs:string" />
                    <xs:element name="street" type="xs:string" />
                    <xs:element name="house" type="xs:unsignedInt" />
                    <xs:element name="apartmentnumber" type="xs:unsignedInt" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="owner">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="firstname" type="xs:string" />
                    <xs:element name="lastname" type="xs:string" />
                    <xs:element name="contacts">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="contact">
                            <xs:complexType>
                              <xs:sequence minOccurs="0">
                                <xs:element name="address">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="cityorcounty" type="xs:string" />
                                      <xs:element name="street" type="xs:string" />
                                      <xs:element name="housenumber" type="xs:unsignedInt" />
                                      <xs:element name="apartmentnumber" type="xs:unsignedInt" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                              <xs:attribute name="type" type="xs:string" use="required" />
                              <xs:attribute name="value" type="xs:string" use="optional" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="activeuser" type="xs:boolean" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="comment" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedInt" use="required" />
            <xs:attribute name="active" type="xs:boolean" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Retsensioonid

Analüüsi retsensioon meeskonna ... tööle: