Coordinator Proxy Reporting
Feature Detail
Description
Coordinators can register activities on behalf of peer mentors who are unable or unwilling to use the app directly. The feature includes a peer mentor selector widget, allowing coordinators to choose which mentor the activity should be attributed to, then complete the activity form with full field parity to the standard registration flow. This ensures accurate reporting without requiring every peer mentor to be digitally active, supporting organizations during the gradual rollout period.
Sources & reasoning
Line 84 directly states coordinators must register on behalf of peer mentors who cannot or will not use the app. The priority matrix at line 151 confirms SHOULD HAVE with Fase 2, which maps to v1.0 by the second-phase ordinal rule. Three of four organizations require this capability, validating high priority.
-
docs/source/likeperson.md · line 84Ikke alle likepersoner vil eller kan bruke appen. Koordinatorer må ha mulighet til å registrere aktivitet på vegne av sine likepersoner, enten enkeltvis eller samlet for faste aktiviteter
-
docs/source/likeperson.md · line 151Bulkregistrering / proxy-rapportering | ✓ | ✓ | - | ✓ | ✓ | SHOULD HAVE | 2
Analysis
Not every peer mentor is willing or able to use a digital app. Without proxy reporting, coordinators must maintain parallel manual reporting systems indefinitely, undermining the platform goal of replacing fragmented paper and Excel workflows. NHF, HLF, and Barnekreftforeningen all raised this need explicitly, making it a cross-organization requirement rather than an edge case. Enabling coordinators to report on behalf of others directly reduces underreporting, increases data completeness for Bufdir submissions, and eases the transition for organizations with less digitally confident volunteers.
The feature extends the existing activity registration flow by adding a PeerMentorSelectorWidget that queries the coordinator's accessible peer mentors from the backend. ProxyReportService must enforce role-based authorization - only coordinator and org-admin roles may submit proxy records; peer mentor role is rejected. Attribution metadata (submitted_by vs. attributed_to) must be stored as separate columns in the activities table to preserve audit integrity. The selector widget requires the peer mentor list to be cached locally via Drift for offline proxy registration. The UI must clearly indicate proxy mode with a persistent banner to prevent accidental misattribution.
Quality Assurance
Coordinator (primary) · Peer Mentor (subject — activity attributed to them)Coordinator
Quick UAT
- Logg inn i Meander-appen som Koordinator. Bekreft at koordinator-hjemskjermen vises med Proxy-registrering tilgjengelig.
- Trykk på + (legg til) og velg «Registrer på vegne av». Bekreft at PeerMentorSelectorWidget vises med søkefelt.
- Søk etter en likeperson ved navn. Velg dem fra listen og bekreft at valgt navn vises som mottaker øverst i skjemaet.
- Fyll ut aktivitetsskjemaet: type, dato, varighet og kontakt. Bekreft at alle felt er identiske med standard aktivitetsregistrering.
- Trykk «Lagre» og bekreft at du ser en suksessmelding med likepersonens navn og aktivitetstype.
- Naviger til Teamstatistikk og bekreft at aktiviteten er registrert under den valgte likepersonens navn, ikke koordinatorens.
Quick UAT — Accessibility
-
Logg inn i Meander-appen som Koordinator. Bekreft at koordinator-hjemskjermen vises med Proxy-registrering tilgjengelig.
- Screen reader Skjermoverskrift annonseres som 'Hjem – Koordinator'; bottom-nav-faner leses opp med rolle.
- Keyboard / focus Tab-rekkefølge: navigasjonsfaner → hjemwidgets → handlingsknapper.
- Contrast 4.5:1 for all tekst; koordinator-rolleindikatorer ikke formidlet kun via farge.
-
Trykk på + (legg til) og velg «Registrer på vegne av». Bekreft at PeerMentorSelectorWidget vises med søkefelt.
- Screen reader Modal annonseres; søkefelt merket 'Søk etter likeperson' leses opp ved fokus.
- Keyboard / focus Escape lukker modal; Tab når søkefelt og listeelementer.
- Focus visibility Fokus flyttes automatisk til søkefeltet når modal åpnes.
- Touch target ≥ 24×24 CSS px for + og hvert listeelement.
-
Søk etter en likeperson ved navn. Velg dem fra listen og bekreft at valgt navn vises som mottaker øverst i skjemaet.
- Screen reader Listetreff annonseres dynamisk ved skriving; valgt navn leses opp ved valg.
- Keyboard / focus Piltaster navigerer listen; Enter velger; Escape avbryter.
- Live region Polite live region: 'X treff funnet' oppdateres ved hvert tastetrykk.
-
Fyll ut aktivitetsskjemaet: type, dato, varighet og kontakt. Bekreft at alle felt er identiske med standard aktivitetsregistrering.
- Screen reader Hvert felt har synlig og programmatisk label; datovalg annonserer valgt dato.
- Keyboard / focus Alle felt nås med Tab; dato-picker støtter tastaturnavigasjon.
- Focus visibility Feilmeldinger plasseres inline ved feil felt med synlig fokusring.
- Zoom Skjemaet er fullstendig brukbart ved 200% zoom uten horisontal scroll.
-
Trykk «Lagre» og bekreft at du ser en suksessmelding med likepersonens navn og aktivitetstype.
- Screen reader Suksessmelding annonseres av skjermleser etter lagring.
- Focus visibility Fokus flyttes til suksessmeldingen eller tilbake til skjermtoppen.
- Touch target Lagre-knapp ≥ 24×24 CSS px.
- Live region Polite live region: 'Aktivitet lagret for [Navn]. Type: [aktivitetstype].'
-
Naviger til Teamstatistikk og bekreft at aktiviteten er registrert under den valgte likepersonens navn, ikke koordinatorens.
- Screen reader Statistikktabell leses opp rad for rad; likepersonens navn og aktivitet leses korrekt.
- Keyboard / focus Statistikkside nĂĄs via tastatur; tabelrader navigerbare med piltaster.
- Contrast 4.5:1 for all tabelldata; attributsjonsinfo ikke formidlet kun via farge.
Role Boundaries
1 role(s) must NOT access this feature-
Peer Mentor
«Registrer på vegne av»-valget finnes ikke i + (legg til)-menyen; direkte deep-link returnerer 403.
Expected End State
Aktiviteten er lagret i databasen attribuert til den valgte likepersonens bruker-ID med koordinatorens bruker-ID som registrert_av-feltet, og vises under likepersonens navn i teamstatistikk.
Components (21)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.