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