medium complexity extracted Activity Oversight Confidence: 100%
7
Components
2
Shared
0
User Stories
Yes
Analyzed

Description

Identifies and surfaces likely duplicate activity registrations - the same activity logged twice by overlapping coordinators, or by both a peer mentor and a coordinator doing proxy reporting for the same event. The system computes similarity on key axes (date, duration, contact, mentor, organization) and presents candidate pairs in a review page where the admin confirms or dismisses the duplicate verdict. Confirmed duplicates collapse into a single canonical activity record; dismissed pairs are remembered so they do not resurface.

Sources & reasoning

Explicitly requested by NHF in §3.2 unique needs and codified in §8 canonical area taxonomy. Not in MVP admin scope (§5); fits naturally with the rest of Activity Oversight in Core Product per source roadmap structure.

  • Duplikatvarsling: Fange opp nĂ„r samme aktivitet registreres av flere koordinatorer.
  • admin-activity-oversight | Activity Oversight | Activity Review & Approval, Activity Flagging, Duplicate Activity Detection

Analysis

Business Value

NHF explicitly raised duplicate registrations as a real-world problem when activities are logged across multiple coordinators or lokallag, and the same risk grows with bulk and proxy registration. Without detection, duplicates inflate Bufdir-reported volumes (a compliance risk that could jeopardise funding) and distort coordinator dashboards. Automated detection plus a human confirmation step gives the organization an honest activity count without forcing admins to comb through hundreds of records manually, which is exactly the kind of administrative burden the platform is meant to eliminate.

Implementation Notes

Run a Duplicate Detection Service as a backend job that scans new and updated activities, scoring candidate pairs on date proximity (±1 day), duration overlap, shared contact, and same organization. Candidates above threshold are written to a duplicate_candidates table with status pending; admins review through a dedicated Duplicate Review Page that surfaces side-by-side comparison and merge controls. Implementation lives in the Next.js API on Vercel against the shared relational database. Confirmed-duplicate decisions are idempotent and audit-logged. The detection is heuristic (no ML) for v1 - thresholds tunable per organization via configuration, not code.

Quality Assurance

Organization Administrator (reviewer + resolver)
1
Scenarios
7
UAT Steps
18
A11y Annotations
4
Role Boundaries
Organization Administrator

Organization Administrator

Quick UAT

  1. Logg inn i Admin-portalen som Organisasjonsadministrator og Ă„pne Aktiviteter → Duplikatkontroll.
  2. Bekreft at listen viser foreslÄtte duplikatpar rangert etter likhetsscore, med kontakt, dato, tidsvindu, aktivitetstype og likeperson synlig per par.
  3. Velg det Ăžverste paret og sammenlign de to aktivitetene side ved side i detaljvisningen.
  4. Trykk SlÄ sammen for Ä beholde én aktivitet og fjerne duplikatet.
  5. Bekreft sammenslÄing i bekreftelsesdialogen og vent pÄ statusmelding.
  6. Bekreft at paret forsvinner fra Duplikatkontroll-listen og at telleren for ventende duplikater reduseres med én.
  7. Åpne neste par, trykk Marker som ulike, og bekreft at paret fjernes fra listen uten Ă„ slette noen aktivitet.

Quick UAT — Accessibility

  1. Logg inn i Admin-portalen som Organisasjonsadministrator og Ă„pne Aktiviteter → Duplikatkontroll.
    • Screen reader Sideoverskrift 'Duplikatkontroll' annonseres; tab-rekkefĂžlge: hovedmeny → undermeny → sideoverskrift → tabell.
    • Keyboard / focus Hele navigasjonen nĂ„s med Tab; Enter aktiverer menypunkt.
    • Focus visibility Synlig fokusring pĂ„ menypunkt og sideoverskrift.
  2. Bekreft at listen viser foreslÄtte duplikatpar rangert etter likhetsscore, med kontakt, dato, tidsvindu, aktivitetstype og likeperson synlig per par.
    • Screen reader Tabellen annonseres med antall rader; kolonneoverskrifter leses opp ved navigering.
    • Keyboard / focus Piltaster navigerer mellom rader og celler; Home/End hopper til start/slutt.
    • Contrast Likhetsscore vises som tall pluss farge, ikke kun farge; 4.5:1 kontrast pĂ„ tekst.
  3. Velg det Ăžverste paret og sammenlign de to aktivitetene side ved side i detaljvisningen.
    • Screen reader Detaljvisning annonseres som dialog/region; felter med avvik merkes 'avvik'.
    • Focus visibility Fokus flyttes inn i detaljvisningen ved Ă„pning og tilbake til raden ved lukking.
    • Zoom Sammenligningen er brukbar ved 200% zoom; kolonner stables vertikalt om nĂždvendig.
  4. Trykk SlÄ sammen for Ä beholde én aktivitet og fjerne duplikatet.
    • Focus visibility Synlig fokusring pĂ„ SlĂ„ sammen-knapp; knappen har tilgjengelig navn 'SlĂ„ sammen duplikat'.
    • Touch target Knappen er minst 24×24 CSS-piksler.
  5. Bekreft sammenslÄing i bekreftelsesdialogen og vent pÄ statusmelding.
    • Screen reader Dialog annonseres som modal; primĂŠrknapp 'Bekreft sammenslĂ„ing' og 'Avbryt' leses opp.
    • Keyboard / focus Tab sirkulerer kun inne i dialogen; Esc avbryter.
    • Focus visibility Fokus settes pĂ„ fĂžrste knapp i dialogen ved Ă„pning.
  6. Bekreft at paret forsvinner fra Duplikatkontroll-listen og at telleren for ventende duplikater reduseres med én.
    • Screen reader Oppdatert antall ventende duplikater annonseres hĂžflig via aria-live.
    • Live region 'Duplikat slĂ„tt sammen. Ett element fjernet fra listen.'
  7. Åpne neste par, trykk Marker som ulike, og bekreft at paret fjernes fra listen uten Ă„ slette noen aktivitet.
    • Focus visibility Fokus returnerer til neste rad i listen etter handling.
    • Live region 'Markert som ulike. Begge aktiviteter beholdt.'

Role Boundaries

4 role(s) must NOT access this feature
  • Peer Mentor (Likeperson)

    Duplikatkontroll finnes ikke i mobilappens navigasjon; likepersoner har ikke tilgang til Admin-portalen. Direkte API-kall returnerer 403.

  • Coordinator (Koordinator)

    Koordinatorer logger ikke inn i Admin-portalen og ser ikke Duplikatkontroll i mobilappen. Deep-link til admin-siden returnerer 403.

  • Global Administrator

    Uten tidsbegrenset support-tilgang gitt av organisasjonen er Duplikatkontroll utilgjengelig; forsĂžk returnerer 403 og hendelsen logges i organisasjonens audit-logg.

  • Prospective Buyer

    Ingen pÄlogging pÄ Admin-portalen; Duplikatkontroll er ikke nÄdd fra sales-website.

Expected End State

Det utvalgte duplikatparet er enten slÄtt sammen til én aktivitet (redundant aktivitet fjernet) eller markert som ulike (begge aktiviteter beholdt). Paret er fjernet fra Duplikatkontroll-kÞen, telleren er oppdatert, og handlingen er sporet i audit-loggen slik at Bufdir-rapporter ikke dobbelteller arbeidet.

User Stories

No user stories have been generated for this feature yet.