Awareness

Changelog

Versiegeschiedenis van Awareness.

v0.9.0

Huidige versie mei 2026

Sjabloonbeheer — UX-overhaul

  • Terminologie aangescherpt: de builder beheert sjablonen (herbruikbare definities), niet losse trainingen
  • Herbruikbaar tabs-component, responsieve sidebar (mobiel inklapbaar) en consistente theme-tokens
  • Sjabloon-overzicht met filters, statistieken, picker en multi-key sortering (niveau → categorie → naam)
  • Bugfixes in de flow voor gepushte sjablonen en de archiveer-acties

Content-audit pipeline

  • Trainingsbibliotheek doorlopend gecontroleerd volgens een vaste 10-puntenaudit op vakinhoud en toon
  • Antwoordposities worden mechanisch geschud zodat het juiste antwoord niet voorspelbaar is
  • Bij elke training is zichtbaar wanneer die voor het laatst is gecontroleerd
  • Herschrijving van 150 trainingen in het Nederlands én Engels naar professionele content

v0.8.0

mei 2026

Security & stabiliteit

  • Magic-link verificatie controleert nu het token-type — voorkomt misbruik van reset-tokens
  • Campagne-herinneringen en notificaties gebruiken de geconfigureerde frontend-URL i.p.v. een hardcoded test-adres

Rol-consistentie

  • Menu, router en backend op één lijn gebracht: gebruikers zien alleen wat hun rol daadwerkelijk mag
  • Knoppen voor acties waarvoor de gebruiker geen rechten heeft, worden nu verborgen i.p.v. een foutmelding te geven

Aangevuld & vertaald

  • Ontbrekende endpoints toegevoegd (profielactiviteit, wachtwoord wijzigen, certificaat per campagne)
  • Resterende pagina's volledig vertaald; datums respecteren overal de gekozen taal

v0.7.0

mei 2026

Security & rolbewaking

  • SQL-injectie in de rapportgeneratie verholpen — parameters worden niet langer direct geïnterpoleerd
  • Stille migratiefouten worden nu gelogd in plaats van onderdrukt
  • Alle frontend-routes hebben rolbewaking — een ingelogde gebruiker kan geen pagina's meer bereiken buiten zijn rol

i18n & functionele aanvullingen

  • Alle grote views (rapporten, campagnes, HRS, instellingen) volledig vertaald NL/EN
  • Geplande rapporten registreren een last-run timestamp en melden verzendfouten
  • Wachtwoord-reset flow toegevoegd naast magic link

v0.6.0

mei 2026

Compliance requirements engine

  • Per compliance-control zijn nu concrete vereisten vast te leggen: verplichte training, minimaal aantal trainingen per jaar, minimale score, herhalingsfrequentie, voltooiingsgraad of maximale Human Risk Score
  • Elk control krijgt een weging (1–5), een verantwoordelijke, een vervaldatum en eventueel een handmatige override met reden
  • Het compliance-percentage volgt automatisch uit de werkelijke data — geen handmatige inschatting meer

Global geplande rapporten

  • Holding-brede rapportages inplanbaar (dagelijks / wekelijks / maandelijks / kwartaal) over één of meerdere tenants
  • Meerdere rapporttypes per planning combineerbaar

v0.5.0

mei 2026

Bugfixes

  • GET /v1/global/tenants → 500 — primary_color ontbrak in SELECT; kolom toegevoegd aan query. Tenant-switcher in Topbar werkt daardoor weer.
  • Training preview kapot in global builder — player-content endpoint ontbrak in global_builder.py; endpoint toegevoegd met eigen auth-context.
  • Scenario's/quiz leeg in Builder editor — GET /content/{lang} retourneerde {} als taal ontbrak; fallback-logica toegevoegd (lang → nl → eerste beschikbare taalsleutel).
  • 404 op snippets/stats/certificate/reviews in global builder — stub-endpoints toegevoegd.
  • 28 niet-gepushte templates in tenant verwijderd — eigen templates stonden tussen globale kopieën.

Per-tenant kleur

  • public.tenants.primary_color — nieuwe kolom; instelling via kleurkiezer in Tenants-wizard en side panel
  • Topbar past header- en impersonatiebalkkleur aan bij tenant-switch; tekst wordt wit bij actieve kleur
  • tenant_color doorgegeven in JWT + user-object bij switch, reset bij switchBack()

Niveau-systeem 1–10

  • Moeilijkheidsgraad van trainingen is nu numeriek (1–10) i.p.v. beginner/intermediate/advanced
  • Badge-kleur: groen (1–3), geel (4–7), rood (8–10)
  • Backward compatible via difficultyLabel() — bestaande waarden worden automatisch omgezet
  • Bijgewerkt in: Training Builder, Campagnes, Campaign Detail, Mijn Campagnes, Global Campagnes

Global gebruikersbeheer — verbeterd

  • Edit-modal in GlobalUsersPage — e-mail, weergavenaam, rol, optioneel nieuw wachtwoord
  • Verwijder-bevestiging met zelf-verwijder-blokkade

Nieuwe pagina's

  • Global Campagnes (/global/campaigns) — push campagne naar één of meerdere tenants: sjabloon-selectie, campagne-instellingen, tenant-multi-select, per-tenant resultaten
  • Route /global/admin-users → GlobalAdminUsersPage toegevoegd

v0.4.0

mei 2026

Globale rolstructuur en tenant-switch

  • Nieuw rolmodel met twee contexten: global (global_admin, global_iso) en tenant (tenant_admin, iso, manager, employee)
  • public.superadmins = globale gebruikers; tenant_*.users = tenantgebruikers — volledig gescheiden
  • JWT-claims uitgebreid: is_global, switched_from_global, original_global_user_id
  • Tenant-switcher in Topbar: switchToTenant() / switchBack() in authStore — bewaart globaal token
  • Cross-tenant gebruikersbeheer vanuit global admin: e-mail/rol/afdeling wijzigen, deactiveren, uitnodiging opnieuw versturen — zonder tenant-switch

Nieuwe pagina's (global context)

  • HoldingPage (/global/holding) — naam, logo, kleuren, footer HTML instellen
  • GlobalUsersPage (/global/users) — globale gebruikers CRUD
  • Global Training Builder (/global/builder) — sjablonen op holding-niveau beheren

Global Training Builder

  • Trainingssjablonen worden beheerd op holding-niveau en gepushed naar tenants
  • public.global_templates + public.global_template_versions — buiten tenant-schemas
  • Extra velden: branding_name, branding_logo_url
  • Push-dialog: tenant-selectie met checkboxen → POST /global/push/training
  • TrainingBuilderPage hergebruikt met apiBase + isGlobal props — geen code-duplicatie

v0.3.0

mei 2026

Meertaligheid NL/EN

  • Volledige i18n-infrastructuur zonder externe packages — eigen translations.ts + useT() hook
  • Alle pagina's vertaald naar Nederlands en Engels
  • Taalvoorkeur persisterend via langStore (Zustand) en gesynchroniseerd met gebruikersprofiel in de database
  • Training Builder: multi-lang tabs (NL/EN) per training — auto-save per taal
  • Training Player: taalswitch wanneer training in meerdere talen beschikbaar is
  • Backward compatible: bestaand flat-format training content werkt zonder aanpassingen

Gebruikersbeheer V1 (19 items)

  • Uitgebreid gebruikersprofiel (avatar_url, language, timezone, comm_pref)
  • Uitnodigingsflow: resend, bulk met afdeling/rol, auto-resend toggle
  • Onboarding wizard — 3-stap gebruiker aanmaken
  • Rol-granulariteit — granulaire permissie-instellingen per tenant
  • Afdeling-statistieken — popover in UsersPage en statistiekkaartjes in DepartmentsPage
  • Deactiveringsworkflow — geplande deactivering met offboarding-checklist
  • Smart filters — opgeslagen filterpresets (localStorage)
  • Afdelingshiërarchie — drag-and-drop herindelen, department_path
  • Tenant module-flags — per-module toggles met sidebar-filtering
  • Audit trail — activiteits-timeline in UserProfilePage en afdeling-history
  • Employee self-service portal in UserProfilePage
  • Organigram tab in DepartmentsPage (SVG-gebaseerde boom)
  • CSV sync (sync-preview + sync-apply endpoints + Synchronisatie tab)
  • Delegatie-systeem (delegations tabel + instellingen tab)
  • Dynamische groepen (rule_json, daily scheduler re-evaluatie)
  • Tenant onboarding pakket (template_tenant_id bij aanmaken)
  • Medewerker-import met validatie-preview
  • Cross-tenant gebruikersbeheer (superadmin)
  • Magic link inloggen (eenmalige token, 15 min geldig)

v0.2.0

april 2026

Backend uitbreidingen (V2 Fase A+B+D)

  • Training Builder — CRUD + versioning + publiceren, multi-lang content per taal
  • Human Risk Score engine — my-score, overzicht, per-afdeling, herberekening (HRS service: bewustzijn 50% + gedrag 30% + betrokkenheid 20%)
  • In-app notificaties — CRUD, notificatieteller in Topbar
  • Uitgebreid gebruikersprofiel — GET/PUT via profile.py (users + user_profiles JOIN)
  • Cross-tenant user management — admin_users.py met transfer (superadmin)
  • Campagnes: notes, duplicate, bulk-assign, bulk-action, export-CSV, stats, analytics, reminders
  • Gebruikers: import-preview/apply, sync-preview/apply, scheduled-deactivation, audit-trail, bulk-action, search, export-CSV
  • Gamification: streaks, XP-levels (1–10), afdeling-leaderboard, uitdagingen, all-badges
  • Afdelingen: stats, audit-trail, dynamische groep sync, boomstructuur, PUT rename, managers
  • Dashboard: activity-feed, upcoming-campaigns, completion-trend, afdeling-stats, top-performers, notificatieteller
  • Instellingen: webhooks CRUD, API-keys CRUD, security-policy, notification-prefs, modules, onboarding-defaults, rol-permissies, delegaties
  • Rapporten: geschiedenis, geplande rapporten CRUD, NIS2/BIO/NEN7510

Frontend uitbreidingen (V2 Fase A+B+D)

  • Dashboard: Recharts LineChart + BarChart, activity feed, top performers, upcoming campaigns
  • Campagnes: status-filter tabs, bulk-acties, dupliceren, tags, analytics modal, notities tab, groep bulk-toewijzing, herinneringen, CSV-export
  • Gamification: streaks tab, XP-levels tab, afdeling-leaderboard, uitdagingen tab
  • Gebruikers: geavanceerd zoeken, bulk-acties, dept-stats popover, saved filters, CSV import wizard, scheduled deactivation
  • Afdelingen: boomstructuur, drag-and-drop, dept stats, dynamische groepen, organigram tab — volledig nieuw
  • Gebruikersprofiel: stats, badges, trainingsgeschiedenis, activiteits-timeline — volledig nieuw
  • Training Builder: multi-lang tabs (NL/EN), contentByLang, auto-save per taal, template-bibliotheek — volledig nieuw
  • Human Risk Score: ScoreCircle SVG, RadarChart, LineChart trend, employee + admin views — volledig nieuw
  • Magic link pagina: auto-verify token, 3 states (loading/success/error) — volledig nieuw
  • Topbar: dark mode toggle + NL/EN taalwissel
  • Rapporten: Recharts charts, NIS2/BIO/NEN7510 tab, geplande rapporten, geschiedenis
  • Instellingen: +4 tabs (modules, onboarding defaults, rol-permissies, delegaties)
  • Tenants: zoeken, sorteren, side panel, 3-stap wizard, cross-tenant users tab

Database migraties (migratie 005)

  • 23 nieuwe tabellen toegevoegd (campaign_tags, user_streaks, user_levels, human_risk_scores, training_templates, webhooks, api_keys, etc.)
  • Meerdere kolommen uitgebreid op bestaande tabellen
  • Magic link tokens tabel aangemaakt in public schema

v0.1.0

april 2026

Foundation — Fasen 1 t/m 6

  • Multi-tenant PostgreSQL — schema-per-tenant architectuur
  • Docker Compose stack — backend + frontend (Nginx) + PostgreSQL
  • Volledig auth-systeem — JWT, uitnodigingsflow, RBAC (medewerker / beheerder / superadmin)
  • Gebruikersbeheer, afdelingen, groepen, CSV-import, audit log
  • Campagne-framework — aanmaken, toewijzen, voortgang bijhouden, e-mailtemplates
  • Plugin-systeem — folder-based modules met manifest.json
  • 2 initiële plugins: skeleton en phishing_awareness
  • Rapportage — PDF, Excel, ISO 27001, geplande rapporten
  • Gamification fundament — punten, badges (datamodel)
  • SSO/SAML datamodel + configuratie (login-flow in backlog)
  • Per-tenant branding
  • Traefik-integratie via traefik-public netwerk