Prijs Project


Team Sjoerd!

Eisen

  • Vervanging van bestaande Magento-pakketten
  • Toevoeging van SLA Plus-product
  • Klanten hebben geen limieten meer, maar betalen naar gebruik
  • Bestaande klanten krijgen een pakketvoorstel toegestuurd
  • Bij verlenging pakket wordt voorstel omgezet in nieuw pakket
  • Klanten kunnen voorstel handmatig aanpassen en activeren
  • Sales heeft overzicht van alle voorstellen en kan handmatig wijzigingen aanbrengen
  • Contracttermijn wordt 1 maand
  • Contracten worden pas verlengd op dag van verlopen
  • Bij verlenging wordt nieuwe prijs bepaald a.h.v. gebruik

Wijzigingen

  • Bestelpagina's
  • Verlenging van pakketten
  • Quickscan

Nieuw

  • Pagina's met gebruiksinformatie
  • Overzicht van pakketvoorstellen
  • Mailtjes met pakketvoorstellen
  • SLA Plus add-on

Uitdaging 1: bestelwizard

Bestelwizard is een javascript-applicatie, die met XHR-callbacks een ordercollection object op de server maakt en bijwerkt

Veel interactie tussen GUI-elementen: als je bijvoorbeeld het pakkettype wijzigt, dan veranderen er buttons, overzichten, panelen...

Eventhandlers of update-routines van componenten triggeren updates van weer andere componenten, samen een spinneweb van triggers en updates, soms in een callback na een fade-animatie

GUI-code, event handling, data model, en XHR-requests door elkaar

Automatische tests faalden omdat bij te snel klikken het XHR-request dat de ordercollection moet opslaan nog niet klaar was

Oplossing 1: Bestelwizard

Gedeeltelijke herimplementatie in Backbonejs

Scheiding tussen model, view, controller

Unittests toegevoegd met Jasmine

Functionele tests met lettuce

Zoveel mogelijk behoud van bestaande logica

Eenvoudiger aan te passen/uit te breiden

Uitdaging 2: pakketten aanpassen

Aanpassingen van opdrachten/domeinen gebeurt in perl

Nieuwe SP pagina's zijn gemaakt in python

Oplossing 2: pakketten aanpassen

Pakketwijzigingen in het servicepanel gebeuren nu in een XHR-callback

We roepen dezelfde CGI-scripts aan vanuit python

Cookie doorgegeven aan perl

perl-scripts + Service.pm aangepast om custom domein te accepteren

Uitdaging 3: pakketvoorstellen

Pakketvoorstellen worden berekend a.h.v. business rules van sales

Pakketvoorstellen zijn zowel nodig in sp_python om het voorstel te kunnen bekijken en aanpassen, als in perl scripts (pakketverlenger, voorstellenmailer)

Zelfde geldt voor business rules die bepalen hoeveel buildingblocks een klant nodig heeft o.b.v. gebruik

Oplossing 3: pakketvoorstellen

Business logic ontsluiten via web services

planinfo - informatie over pakket, gebruik, buildingblocks
magmig - pakketvoorstellen voor migratie


Innovaties - JavaScript

Backbonejs

Requirejs

Jasmine

Grunt

Innovaties - Obsolete packages

libbyte-authcookiehandler-perl

libbyte-l10n-perl

Innovaties - SP voor Apache2

AuthCookieHandler voor apache1.3
AuthCookieHandler2 voor Apache2

.htaccess switch tussen modules

Innovaties - docker

Lokaal devven aan SP met docker

Snel database opzetten

Innovaties - Unittests voor SP en perl

Unittests toegevoegd aan SP

Uitbreiding unittests voor perl

Armoede: MySQL starten bij draaien tests

Mocken van database in ontwikkeling

Innovaties - functionele tests

Automatisch browser testen met lettuce

Innovaties - Alembic

Versiebeheer van database structuur en vaste tabellen

Reproduceerbare dev/prod omgeving en mutaties

TODO

Overschrijding in rekening brengen

Diverse mails sturen bij verlenging, overschrijding, etc.

SLA Plus activatie in log zetten

SLA Plus toevoegen aan bestelwizard

In april: opruimen van migratie en proposal code

Verlanglijstje

libbyte-test-perl verbeteren om te testen zonder DB

Devven, testen en builden van perl packages met deps automatiseren met Jenkins

Alle pakketwijzigingspagina's uniform maken zoals proposal pagina

Productiemachines upgraden naar wheezy/apache2

Event queue/sourcing gebruiken om logica voor mails, facturaties, etc. te scheiden



PrijsProject

By maarten

PrijsProject

  • 94