ABE BIYOSIDAL · 2020 – HEDEN
Biocidal buitendienstsysteem
Multi-tenant, GIS-gebaseerde software voor het aansturen van buitendienstteams, die de ongedierte- en vectorbestrijding van gemeenten en particuliere bestrijdingsbedrijven in één systeem samenbrengt, van de melding van een inwoner tot de afsluiting aan het eind van de dag. Wordt door meerdere gemeenten gebruikt.
Mijn rol: Softwarearchitectuur: ik heb de architectuur vanaf nul ontworpen en leid sinds 2020 de ontwikkeling.
biocidal.com.tr- live sinds
- 2020
- data per organisatie gescheiden
- Multi-tenant
- ruimtelijke query’s
- PostGIS
- gemeenten gebruiken het
- Meerdere
Het probleem
Bij vectorbestrijding is het werk over veel stappen verdeeld: er komt een klacht van een inwoner binnen, die wordt een werkorder, een buitendienstteam voert de behandeling uit, het gebruikte middel wordt van de voorraad afgeboekt en tot slot worden de rapportages opgesteld die het bestek van de aanbesteding vraagt.
Staan die stappen op verschillende plekken, dan is de vraag “welk team heeft waar welk middel gebruikt, en hoeveel?” lastig te beantwoorden, en kosten controles en rapportages dagen.
Architectuur
Beheerpaneel
- Angular
Kaart
Buitendienst-app
- React Native
Mobiel
GraphQL-API
- GraphQL Yoga
- WebSocket
Live data en subscriptions
Database
- PostgreSQL
- PostGIS
Data per tenant
Cache
- Redis
Realtime events
Meldingen werken in twee lagen: via een WebSocket-subscription zolang de app open is, en via push, sms en e-mail als hij gesloten is.
Wat ik heb gebouwd
Buitendienst
De cyclus melding → werkorder → behandeling ter plaatse → dagafsluiting; werkorders doorlopen een state machine.
Ruimtelijke intelligentie
Verantwoordelijkheidsgebieden, routeplanning en point-in-polygon-matching die bepaalt in welk gebied een locatie valt, met PostGIS.
Voorraad en kostprijs
Lotregistratie, uitgifte op houdbaarheidsdatum (FEFO) en waardering volgens first in, first out (FIFO).
Uitgifte aan teams en afstemming
Middelen die aan een team worden meegegeven, staan op naam van dat team; de voorraad wordt afgeboekt zodra de behandeling ter plaatse is goedgekeurd.
Rechten en audittrail
Dynamische rechten per module en actie; een registratie van wie wat wanneer heeft gewijzigd.
Rapportages en meldingen
Rapportages per provincie en district; meldingen in de app, via push, sms en e-mail.
Lastige problemen die ik heb opgelost
- 1
Multi-tenancy achteraf toevoegen aan een live systeem
Ik heb dataisolatie per organisatie toegevoegd aan een schema dat al in productie draaide. Query’s op tenant-gebonden tabellen worden in de datalaag automatisch gefilterd, zodat een vergeten filter van een developer niet tot een datalek leidt.
- 2
Voorraadwaardering
Voor lots van hetzelfde middel met verschillende prijzen en houdbaarheidsdatums wordt de uitgifte volgens FEFO en de kostprijs volgens FIFO berekend; het verbruik in het veld wordt aan het juiste lot en de juiste kostprijs gekoppeld.
- 3
Migratie van de datalaag in productie
Terwijl het systeem in gebruik was, zijn de ORM en de aanpak voor het GraphQL-schema vervangen; de schemadefinities staan nu in handgeschreven SDL-bestanden.
Technologieën
- Angular
- TypeScript
- GraphQL
- Node.js
- Prisma
- PostgreSQL
- PostGIS
- Redis
- Firebase
Gerelateerde diensten
Bouw je een vergelijkbaar systeem? Van de architectuur tot de livegang kunnen we samenwerken.
Neem contact op