Systeembeheer
Deze pagina beschrijft de beheerfuncties van I See You: het afgeschermde deel van de applicatie waarmee een beheerder (admin) de stamdata, instellingen en statistieken van het systeem onderhoudt. Het beheer valt functioneel binnen de Beheer-context van het domeinmodel en draait om drie aggregates: Systeem, Keuzelijst en Bericht.
Beheer raakt geen lopende vragen of opinies aan. De beheerder stuurt de randvoorwaarden: de keuze-opties die gebruikers in formulieren zien, de instelbare parameters van het platform, de systeembrede statistieken, en uitgaande berichten. De anonimiteit en het retentiebeleid van vragen blijven onverkort gelden — een beheerder krijgt geen toegang tot opnames. Na afronding verdwijnt een opname niet meer direct: hij blijft binnen het resultaat-retentievenster uitsluitend voor de maker zichtbaar en wordt daarna automatisch verwijderd. Voor beheer blijft de opname ontoegankelijk.
Overzicht beheerfuncties
Section titled “Overzicht beheerfuncties”| Beheerfunctie | Aggregate | Wat de beheerder kan |
|---|---|---|
| Admin-login | Systeem (admin) | Apart inloggen op het beheergedeelte met admin-credentials |
| Gebruikers | Gebruiker | Geregistreerde gebruikers inzien (creditsaldo, waarderings-statistieken, profiel, sterren/adviesniveau, aanmaakdatum) met zoeken, filteren op adviesniveau en paging; handmatig credits toekennen; het sterrenaantal direct zetten (test — het adviesniveau volgt automatisch uit de drempel); en oude gebruikers opschonen (op aanmaakdatum; 0 dagen = alles, incl. hun vragen/sessies/sterren) |
| Keuzelijsten | Keuzelijst | Keuze-opties voor gender, culturele achtergrond, regio’s en de beoordelings-secties/-attributen per taal onderhouden |
| Systeeminstellingen | Systeeminstellingen | De instelbare parameters van het platform inzien en bijwerken |
| E-mailteksten | EmailSjabloon | Onderwerp + body van de e-mailseintjes per mailtype aanpassen (placeholders zoals {link}), zonder deploy |
| AI-persona’s | AIPersona | De AI-persona’s voor het vangnet beheren (toevoegen, profiel/instructie, activeren) |
| AI-opinie toevoegen | AIPersona + Vraag | Bij een vraag met een open slot handmatig, met een gekozen persona, direct een AI-opinie laten genereren |
| Systeemwaarden & statistieken | SysteemWaarden | Startdatum en statistieken inzien/bijwerken |
| Tips-content (voorgesteld) | Tips-venster | De tips/uitleg per deelvraag (en per taal) onderhouden die in het opiniescherm verschijnen |
| Adviesniveaus | Adviesniveau | De niveauprijzen en de sterren-drempel per niveau (sterrenPerNiveau) instellen en het Expert-niveau handmatig/op aanvraag toekennen |
| Monitoring verdeelsysteem | Verdeelstatistieken | De gezondheid van het vraag-verdeelsysteem volgen (AI-aandeel, openstaand, antwoordtijd, …) |
| Berichten | Bericht | Berichten aan gebruikers beheren |
| Audittrail | Auditgebeurtenis | Wie-deed-wat-wanneer voor support inzien (gefilterd op actor/type/periode) — mét identiteit, admin-only, nooit media |
Presentatie (beheerportaal, per
2026-07-08e). Het beheerportaal is één SPA met een zijbalk (gegroepeerd: Platform / Inhoud / Mensen) en opent op een Overzicht-dashboard met kerncijfers (open vragen, gebruikers, actieve AI-persona’s, keuzelijst-opties) en de nieuwste vragen/gebruikers; elke pagina is deep-linkbaar via de URL. Zowel het gebruikers- als het vragenoverzicht is een compacte lijst; klikken op een rij opent een detailpaneel (deep-linkbaar:#/gebruikers/<naam>resp.#/vragen/<id>). (Per2026-07-11b:) het gebruikersoverzicht staat op aanmaaktijd, nieuwste eerst (een vers testaccount staat bovenaan) en in het vraagdetail is de maker klikbaar naar zijn gebruikersdetail. Het gebruikersdetail toont alle cijfers, aanmaak-/bezoektijdstip en de acties (credits toekennen, sterren zetten). Het vraagdetail toont de metadata (maker-profiel, doelgroep, te beoordelen onderdelen, betaald-advies-eisen, toelichting), álle ontvangen opinies (mét herkomst mens/AI) en de acties AI-opinie toevoegen (beheer) en verwijderen (moderatie); daarnaast — als testfunctie — het bekijken van de opname (zie hieronder). Test-/QA-tooling — testvragen genereren, het sterrenaantal direct zetten, oude gebruikers opschonen en de opname-inzage bij het vraagdetail — is overal herkenbaar aan het Testfunctie-label (erlenmeyer) in een gestreepte amber zone: hulpmiddelen voor test en QA, geen productiefunctie. De handmatige AI-opinie en het verwijderen zijn gewone beheer-/moderatiefuncties en dragen dat label bewust niet.
Admin-login
Section titled “Admin-login”De beheerder logt apart in, los van de gewone gebruikersaanmelding. Waar een Gebruiker zich aanmeldt met zijn gebruikersnaam en een Sessie krijgt (single-device, zie domeinmodel), gebruikt de beheerder een eigen set admin-credentials die op het Systeem-aggregate is vastgelegd.
| Aspect | Gewone gebruiker | Beheerder (admin) |
|---|---|---|
| Identiteit | gebruikersnaam van de Gebruiker | Admin-credentials op Systeem.admin |
| Aanmeldroute | Reguliere aanmelding (gebruikerssessie) | Aparte admin-login |
| Toegang | Vragen stellen, opinie geven, eigen profiel/waarderingen | Keuzelijsten, systeemwaarden/statistieken, berichten |
| Sessiemodel | Single-device gebruikerssessie | Beheertoegang, gescheiden van gebruikerssessies |
Functionele eisen:
- Het beheergedeelte is uitsluitend bereikbaar na succesvolle admin-login.
- Admin-credentials staan los van de gebruikersgegevens; een gewone gebruiker kan nooit via zijn eigen aanmelding in het beheergedeelte komen.
- De beheerfuncties (keuzelijsten, systeemwaarden, berichten) zijn pas beschikbaar nadat de beheerder is ingelogd.
Keuzelijsten beheren
Section titled “Keuzelijsten beheren”Keuzelijsten zijn de stamdata die gebruikers als keuze-opties in formulieren zien — bij het opgeven van hun profiel, bij het instellen van de SelectieCriteria voor de matching en bij het samenstellen van de Beoordelingsselectie na een opname. De beheerder onderhoudt deze opties zodat ze per taal kloppen en consistent blijven.
De beheerder onderhoudt de volgende soorten keuzelijsten:
- Gender — de keuze-opties voor het profielveld
gender. - Culturele achtergrond — de keuze-opties voor het profielveld
achtergrond. - Beoordelings-secties (type
sectie) — de groepen waaruit een vrager zijn Beoordelingsselectie samenstelt. Gezicht, Kleding en Accessoires zijn hierbij de standaard (seed-sleutelsgezicht,kleding,accessoires); ze zijn niet langer drie vaste secties maar beheerbare stamdata. - Beoordelings-attributen (type
attribuut, per2026-07-08f) — de deelvragen binnen een sectie, met een samengestelde sleutel"<sectie>.<attribuut>"(bijv.gezicht.ogen,kleding.pasvorm,accessoires.bril). Door de sectie in de sleutel op te nemen passen de attributen in dezelfde platte keuzelijst-structuur — geen aparte tabel of schemawijziging. De seed bevat de standaard-attributen per sectie: Gezicht — ogen, mond, haar, baard, wenkbrauwen, make-up/stijl, algeheel; Kleding — hoofd, nek, bovenstuk, taille, onderstuk, combinatie, kleuren, pasvorm, kwaliteit, algeheel; Accessoires — bril, gehoorapparaat, oorbellen, nek, pols, riem, piercing, tattoo, schoenen, algeheel. - Content-lijsten — de onboarding-welkomsttekst (type
onboarding) en de tips per deelvraag (typetips). - Uitlegteksten (type
uitleg, per2026-07-10) — beheerbare uitlegteksten in het gebruikersportaal, met vaste sleutels:doelgroep(uitleg bij “Wie mag beoordelen” in Stel een vraag),seintje(uitleg bij het e-mail-seintje),achtergrond(het uitleg-(i) bij het profielveld Achtergrond) en (per2026-07-13d, issue #20)open-vragen(de hulptekst bij de eigen open vragen in Stel een vraag — bv. “Maak je eigen categorie met een titel en zet er sub-vragen onder; beoordelaars scoren elke sub-vraag met een smiley, net als bij Gezicht/Kleding.”). Ontbreekt een sleutel, dan valt het portaal terug op zijn ingebouwde standaardtekst. - Regio’s (type
regio, per2026-07-10d; vlak sinds2026-07-11m) — de regio-onderverdeling, met de regionaam zelf als sleutel (bv.gelderland). Nederland is geseed met de 12 provincies. (Tot2026-07-11mwas dit per land onderverdeeld met samengestelde sleutels<landcode>.<regiosleutel>; die landprefix is vervallen samen met de landenlijst — zie ADR-037.)
Een keuzelijst-item bestaat uit:
| Veld | Betekenis |
|---|---|
taal | De taal waarvoor de optie geldt (een keuzelijst is per taal gescheiden) |
type | Het soort keuzelijst: gender, achtergrond (culturele achtergrond), regio, sectie, attribuut, of content (onboarding/tips) |
sleutel | De stabiele, taal-onafhankelijke sleutel van de optie (bij een attribuut samengesteld: "<sectie>.<attribuut>") |
omschrijving | De tekst van de optie zoals de gebruiker die ziet |
volgorde | De sorteervolgorde binnen het type |
Wat de beheerder functioneel moet kunnen:
- Per taal en type de set keuze-opties bekijken.
- Opties toevoegen, wijzigen en verwijderen.
- De opties per taal apart onderhouden, zodat elke taalversie zijn eigen, vertaalde opties heeft.
De keuze-opties sturen rechtstreeks de profielvelden, de SelectieCriteria en de Beoordelingsselectie. Een wijziging in de keuzelijsten werkt dus door in Vraag stellen en in de matching van opiniegevers. De velden
gender,achtergronden regio putten uit deze lijsten. Er is geen land- of locatieveld meer (per2026-07-11m) en dus ook geen locatiebepaling nodig.
E-mailteksten
Section titled “E-mailteksten”(Per 2026-07-13c, issue #26, ADR-042.) De teksten van de e-mailseintjes die de app verstuurt zijn beheerbaar zonder deploy via de tab E-mailteksten. Elk seintje is een E-mailsjabloon: een mailtype (de vaste sleutel), per taal, met een onderwerp en een body (platte tekst).
Op dit moment is er één mailtype:
| Sleutel (mailtype) | Wanneer | Toegestane placeholders |
|---|---|---|
uitslag-klaar | Het eenmalige uitslag-seintje: “je uitslag staat klaar” | {link} — de URL van het gebruikersportaal (“Mijn vragen”) |
Wat de beheerder functioneel kan:
- Het onderwerp en de body van elk mailtype aanpassen; de wijziging werkt direct door bij de eerstvolgende verzending, zonder code-aanpassing of deploy.
- Placeholders gebruiken die de code invult. Alleen de bij dat mailtype horende placeholders zijn toegestaan; typt de beheerder een onbekende
{…}, dan wordt het opslaan geweigerd (zo lekt er nooit een niet-ingevulde placeholder de mail in). - Terugvallen op de standaardtekst: is er (nog) geen beheerde tekst — of is de database bij verzenden onbereikbaar — dan gebruikt de app de in code vastgelegde standaardtekst (fail-graceful), zodat het seintje altijd verstuurd kan worden.
Let op — ADR-023: het uitslag-seintje bevat alleen een link, bewust geen inhoudelijke uitslag (robuust tegen aflever-/spamproblemen; de site is de bron). Zet dus geen scores, namen of andere persoonsgegevens in de tekst. De beheer-UI toont deze regel als waarschuwing. Nieuwe mailtypes (bv. wachtwoordherstel) verschijnen hier automatisch zodra ze aan de seed + het placeholder-contract zijn toegevoegd.
Systeeminstellingen
Section titled “Systeeminstellingen”De Systeeminstellingen vormen een value object op het Systeem-aggregate met de instelbare parameters van het platform. Hiermee is er geen vast “10 opiniegevers” of “30 minuten” meer: de beheerder stelt deze waarden centraal in en kan ze aanpassen zonder dat de code wijzigt. Waar elders een standaardwaarde wordt genoemd, is dat slechts de uitgangswaarde.
| Parameter | Betekenis | Standaard |
|---|---|---|
aantalOpiniegevers | Het aantal beoordelingen per vraag: hoeveel beoordelingen (en dus slots) elke vraag krijgt. Wordt bij het stellen als aantalBeoordelingen op de vraag bevroren; het is geen keuze van de maker. (Per 2026-07-05 terug van de test-instelling 1 naar 10 — de welkomsttekst rekent met 10 mensen/10 credits.) | 10 |
keuzesetGrootte | Het aantal vragen dat een opiniegever in één Keuzeset krijgt voorgelegd om uit te kiezen (de “X” van de keuze) | 5 |
keuzetermijnMin | De keuzetermijn: hoelang een keuzeset voor de opiniegever gereserveerd blijft; kiest hij niet op tijd, dan worden de vragen weer vrijgegeven | 3 |
antwoordtermijnMin | De antwoordtermijn: hoelang een opiniegever ná zijn keuze de tijd heeft om de beoordeling af te ronden; daarna keert het slot terug naar Open | 30 |
creditkostenPerBeoordeling | De prijs per beoordeling in credits die de inzage-prijs opbouwt: het eenmalig ontgrendelen van je eigen uitslag kost aantalBeoordelingen × creditkostenPerBeoordeling (met aantalBeoordelingen = de bij het stellen bevroren instelling aantalOpiniegevers). Een vraag stellen is gratis; bij te weinig saldo blijft de uitslag verborgen en verdient de gebruiker eerst credits door andermans vragen te beoordelen | 1 |
creditsPerBeoordeling | Het aantal credits dat een gebruiker verdient per voltooide menselijke opinie | 5 |
maxOnbeantwoordMin | De maximale onbeantwoord-tijd van een vraag; wordt die overschreden, dan vult het AI-vangnet de resterende opinies in | 120 |
antiThrashCooldownMin | Hoelang een opiniegever een specifiek slot niet opnieuw aangeboden krijgt nadat hij het liet verlopen (anti-thrash) | 10 |
maxVoorstelHerhaling | Hoe vaak een slot aan mensen mag worden aangeboden-en-verlopen voordat het naar het AI-vangnet escaleert | 2 |
aiVangnetActief | Globale aan/uit-schakelaar voor het AI-vangnet | aan |
anoniemeSessieMin | De levensduur van een anonieme sessie; daarna vervalt de sessie en daarmee het sessie-gebonden credit-saldo van de anonieme gebruiker | 60 |
onlineVensterMin | Het online-venster: hoelang na het laatste bezoek een gebruiker als online geldt en daarmee voorrang krijgt bij de matching | 10 |
veiligheidsTimeoutMin | De veiligheids-timeout die als laatste vangnet vragen opruimt die zelfs door AI niet afgerond raken (nooit-afgeronde vragen) | 240 |
resultaatRetentieUren | Het resultaat-retentievenster: hoelang ná afronding het resultaat én de opname voor de maker bewaard blijven vóór automatische verwijdering (geteld vanaf beoordeeldOp) | 168 |
meldingenDrempel | Het aantal meldingen waarbij een vraag automatisch wordt verwijderd | 3 |
Beloning & financieel (vastgesteld per 2026-07-08b — geverifieerd door Han; geïmplementeerd in app/ op 2026-07-08):
| Parameter | Betekenis | Standaard |
|---|---|---|
niveauPrijzen | De prijs per beoordeling per adviesniveau (1–4 en Expert) voor betaald advies | € 0,20 / 0,40 / 0,60 / 0,80 / 1,00 |
sterrenPerNiveau | Het aantal sterren per adviesniveau-stap: 30★ → niveau 1, 60★ → 2, 90★ → 3, 120★ → 4 (⚠️ Expert 150★) | 30 |
sterDrempelTweedePlaatsen | Aantal 2e plaatsen in de consensus-ranking dat één ster oplevert | 5 |
sterDrempelDerdePlaatsen | Aantal 3e plaatsen dat één ster oplevert | 10 |
sterCreditsMijlpaal | Elke zoveel cumulatief verdiende credits leveren één ster op | 200 |
gewichtMakerWaardering | Het gewicht van de 0–5-waardering van de maker in de consensus-ranking (0 = niet meewegen) | instelbaar |
minBeoordelaarsVoorRanking | Minimaal aantal menselijke beoordelaars vóór er per vraag geranked wordt | 3 |
welkomstbonusMaxEuro | Het maximum van de eenmalige welkomstbonus: de eerste inleg wordt verdubbeld tot dit bedrag aan bonus, zodat het totaal max €10 is (€5 + €5) | € 5 |
beoordelaarAandeelProcent | De verdeelsleutel: welk deel van een betaald/ontgrendeld advies naar de beoordelaar gaat (de rest naar het platform) — 50 = 50/50 | 50 |
uitbetaalDrempelEuro | Het minimale euro-saldo waarbij een opiniegever via zijn profielscherm een uitbetaling kan aanvragen | € 10 |
maxVrijeReactiesZonderBetaald | Het maximum aantal vrije-reactie-slots per vraag zonder betaald advies (exclusief voor beoordelaars met niveau ≥ 1). Wordt gevalideerd op kleiner dan aantalOpiniegevers. (Per 2026-07-10h; vervangt minTeaserNiveauBeoordelaars.) | 3 |
aiVangnetVultVrijeReactieSlots | Of het AI-vangnet op vrije-reactie-/betaald-advies-slots een tekstreactie meelevert; uit = alleen scores (de vraag rondt altijd af) | aan |
onboardingAantalBeoordelingen | Hoeveel vragen een nieuwe gebruiker eerst zelf beantwoordt vóór zijn eerste vraag de verdeling ingaat (onboarding-poort, met cold-start-vangrail) | 2 |
maxOpenVragen | Het maximum aantal eigen open-vragen-categorieën dat een maker aan een vraag mag toevoegen (issue #20); 0 = de functie staat uit. Elke categorie heeft een titel + eigen sub-vragen. De hulptekst ernaast is de uitleg-sleutel open-vragen (zie Keuzelijsten). | 3 |
maxOpenSubvragen | Het maximum aantal sub-vragen per eigen categorie (elk op de smiley-schaal gescoord), per 2026-07-14a. | 5 |
De verdeelsleutel beoordelaarAandeelProcent staat op 50/50: met die verdeling kost het als bonus verdubbelen van de inleg het platform per saldo niets.
Samenhang tussen de termijnen. De beheerder moet de termijnen consistent houden:
keuzetermijnMin + antwoordtermijnMin < maxOnbeantwoordMin < veiligheidsTimeoutMin. Het AI-vangnet zit dus vóór de veiligheids-timeout — die laatste vuurt alleen als zelfs de AI niet leverde. De applicatie weigert instellingen die deze regel schenden.
Wat de beheerder functioneel moet kunnen:
- De actuele systeeminstellingen inzien als overzicht.
- De parameters bijwerken, zodat het gedrag van matching, antwoordtermijn, retentie en moderatie centraal afgestemd kan worden.
Deze parameters werken door in vrijwel het hele platform: het aantal opiniegevers, de keuzeset-grootte en het online-venster sturen de verdeling en matching; de keuze- en antwoordtermijn sturen de reservering;
maxOnbeantwoordMinen het AI-vangnet garanderen dat geen vraag te lang onbeantwoord blijft;creditkostenPerBeoordelingencreditsPerBeoordelingsturen samen de credits-poort op het inzien van je uitslag (inzage-prijs =aantalBeoordelingen × creditkostenPerBeoordeling) — stellen is gratis (zie Credits verdienen en besteden); en de veiligheids-timeout en meldingen-drempel borgen samen het retentiebeleid. De duur van een video (maximaal 10 seconden) is géén instelling en blijft vast.
AI-persona’s beheren
Section titled “AI-persona’s beheren”Het AI-vangnet zorgt dat een vraag die te lang onbeantwoord blijft (langer dan maxOnbeantwoordMin) tóch een volledige beoordeling krijgt. Die beoordelingen komen van AI-persona’s (AIPersona) — beheerbare stamdata, zodat een nieuwe persona toevoegen niets meer is dan een rij invoeren.
Een AI-persona legt het volgende vast:
| Veld | Betekenis |
|---|---|
naam | Herkenbare naam van de persona (intern/monitoring) |
omschrijving | Korte toelichting op de persona |
profiel | Demografisch profiel (leeftijd, gender, achtergrond) — bepaalt voor welke vragen de persona demografisch passend is |
instructie | De persoonlijkheid/insteek waarmee de persona beoordeelt |
actief | Of de persona meedoet aan het vangnet |
gewicht | Relatief gewicht bij de (gewogen-willekeurige) keuze tussen even goed passende persona’s |
Wat de beheerder functioneel moet kunnen:
- AI-persona’s inzien, toevoegen, wijzigen en (de)activeren.
- Per persona zien hoe vaak die is ingezet (
aantalBeoordelingen), als input voor het AI-aandeel.
Altijd minstens één vangnet. Er moet altijd ten minste één actieve persona zijn; de laatste actieve persona kan niet worden gedeactiveerd of verwijderd. De opinie-generatie loopt via de dienst
IAiPersonaService: een echte, vision-gebaseerde dienst op OpenAIgpt-4o-minidie de opname “ziet” (foto rechtstreeks; video via ~4 FFmpeg-frames) en, gestuurd door de persona-instructieen de toelichting van de maker, alleen de door de maker gekozen secties/attributen scoort — allemaal, verplicht (schaal 1–5 per2026-07-05; zo gebouwd). Sinds2026-07-04glevert de dienst naast scores óók een korte vrije reactie (constructieve tekst), zodat een AI-opinie geen “geen reactie” meer oplevert en de AI ook een alleen-vrije-tekst-vraag kan beantwoorden. Daarnaast bestaat er een ingebouwde deterministische fallback (regelgebaseerd, zonder externe AI-dienst), zodat het vangnet fail-graceful ook werkt als er geen OpenAI-sleutel of chat/completions-permissie is of de AI-dienst faalt. Het vangnet kiest de demografisch best-passende actieve persona en vult alleen nog-open plekken in; een door een mens vastgehouden vraag wordt nooit door de AI overgenomen. Een AI-opinie levert geen credits op. De maker kan wél elke ontvangen beoordeling waarderen (0–5), óók een AI-opinie; die waardering wordt op de opinie vastgelegd maar beïnvloedt géén reviewer-profiel (een AI-persona heeft er geen).
Handmatig een AI-opinie toevoegen
Section titled “Handmatig een AI-opinie toevoegen”Naast het automatische AI-vangnet (dat een vraag ná de deadline afvult) kan de beheerder in het Vragen-overzicht bij een vraag met nog open slots handmatig, direct, een AI-opinie laten genereren met een gekozen AI-persona. Zo kan hij een vastgelopen of trage vraag alvast (deels) afronden zonder op de maxOnbeantwoordMin-deadline te wachten.
Wat de beheerder functioneel moet kunnen:
- Het Vragen-overzicht filteren op “alleen vragen zonder alle opinies” — vragen waarvoor
aantalOpinies < aantalOpiniegevers, dus die nog niet volledig beoordeeld zijn. Handig om vastgelopen of trage vragen te vinden die nog een (AI-)opinie nodig hebben. - Bij een vraag een knop “AI-opinie toevoegen” gebruiken met een persona-keuze; de actie is alleen zinvol (en beschikbaar) zolang de vraag nog een open slot heeft.
- Per klik wordt één open slot gevuld met een AI-opinie van de gekozen persona (
Opinie.bron = AI); is de vraag al vol, dan gebeurt er niets (foutmelding “geen open slot”). - Per opinie de herkomst (mens of AI) zien: het onderscheid mens/AI blijft in het beheer zichtbaar (via de beheer-endpoints), ook al ziet de eindgebruiker/maker dat niet meer in zijn eigen uitslag.
De handmatige actie gebruikt dezelfde vision-
IAiPersonaServiceen is dus even fail-graceful als het automatische vangnet: zonder OpenAI-sleutel/chat-permissie of bij een fout ontstaat er alsnog een deterministische opinie. Ze vult alleen open slots — nooit een door een mens vastgehouden slot. De AI levert scores én een korte reactie (ook bruikbaar bij een alleen-vrije-tekst-vraag); de opinie levert geen credits op. De maker kan een AI-opinie wél waarderen (0–5) — die waardering wordt op de opinie vastgelegd maar telt niet mee in een reviewer-profiel. Zie het endpointPOST /api/beheer/vragen/{id}/ai-opinie.
Testtools voor het stersysteem
Section titled “Testtools voor het stersysteem”(Per 2026-07-10n — test-/QA-tooling, herkenbaar aan het Testfunctie-label.) Het stersysteem is zonder hulpmiddelen lastig te testen: de consensus-ranking vergt minstens minBeoordelaarsVoorRanking menselijke account-beoordelaars per vraag (AI-opinies dingen niet mee). Het vraagdetail in het beheerportaal biedt daarom drie testfuncties:
| Functie | Wat het doet |
|---|---|
| Test-opinies genereren | Vult (een deel van) de open slots van de vraag met opinies van wegwerp-testgebruikers: échte, geregistreerde accounts (naamprefix testrev_) met een profiel dat binnen de doelgroep van de vraag valt, zodat ze volwaardig meedingen in de ranking en sterren kunnen ontvangen. De scores zijn gevarieerd (per testgebruiker een eigen mild/streng-karakter); een vrije-reactie-slot krijgt een testgebruiker met het vereiste adviesniveau én een tekstreactie (geblurd, zoals echt betaald advies). Bewust buiten de reguliere flow om (geen moderatie, geen credits-verdienste, geen keuzeset) — net als de testvragen-generator. |
| Ranglijst-inzage | Toont per vraag de actuele consensus-ranglijst met de opbouw per deelnemer: consensus (C), correlatie (K), maker-waardering (W) en de gewogen totaalscore — plus of de maker al zijn waardeerbare beoordelingen heeft gewaardeerd (de gate voor de voorlopige ster), wie de ster (voorlopig of definitief) heeft en of de vraag al gefinaliseerd is. Zo is verifieerbaar waarom iemand bovenaan staat. |
| Finaliseer ranking nu | Voert de finalisatie (zoals aan het einde van de Resultaat-retentie) direct uit: de nummer 1 krijgt zijn ster, de 2e/3e-tellers lopen op. Idempotent — nogmaals finaliseren doet niets. Let op: daarna ligt de uitkomst vast; latere waarderingen veranderen de toegekende sterren niet meer. |
Definitieve ster in de uitslag. Na finalisatie toont de uitslag van de maker (
GET /api/vragen/{id}/uitslag) de definitieve ster van de winnaar in plaats van de live herberekende voorlopige ster — de twee kunnen anders uiteenlopen als de maker ná de finalisatie nog waarderingen wijzigt.
Systeemwaarden en statistieken
Section titled “Systeemwaarden en statistieken”De SysteemWaarden vormen een value object op het Systeem-aggregate met systeembrede, lopende statistieken. De beheerder kan deze waarden inzien en bijwerken.
| Waarde | Betekenis |
|---|---|
startdatum | De datum waarop het systeem (of de huidige telling) is gestart |
aantalOnline | Het aantal gebruikers dat actueel online is — binnen het instelbare online-venster (standaard 10 minuten). Online gebruikers krijgen voorrang bij de matching; het is geen filter |
totaalVragen | Het totaal aantal gestelde vragen (geplaatste vragen) |
Wat de beheerder functioneel moet kunnen:
- De actuele systeemwaarden en statistieken inzien als overzicht.
- De waarden bijwerken waar dat van toepassing is (zoals de startdatum).
- De statistieken (aantal online, totaal vragen) gebruiken als monitoring van het gebruik van het platform.
totaalVragentelt de vragen ongeacht MediaType (video of foto) en Vraagtype (algemeen of specifiek). (Voorgesteld per2026-07-05:) met de komst van betaald advies komen er financiële totalen (inleg, ontgrendelingen, uitbetalingen) bij zodra de mechaniek na verificatie is uitgewerkt.
Statistieken (first-party product-analytics)
Section titled “Statistieken (first-party product-analytics)”(Per 2026-07-11i, ADR-036.) Naast de systeembrede tellers hierboven meet het platform het gebruik van het gebruikersportaal met first-party events: cookieloos, zonder persoonsgegevens en zonder externe dienst. Het gebruikersportaal stuurt bij de funnel-stappen (portaal geopend → welkom gezien → poort gestart → beoordeling gegeven → vraag gesteld → resultaat ontgrendeld) een gebeurtenis met alleen een toegestaan type en een willekeurige meet-id per browsersessie (niet herleidbaar tot een account).
Wat de beheerder functioneel moet kunnen:
- In de tab Statistieken per dag per gebeurtenistype het aantal gebeurtenissen en het aantal unieke bezoekers (meet-id’s) inzien, over een instelbare periode (7/14/30/90 dagen).
- (Per
2026-07-11k.) Bovenaan de tab de onboarding-funnel aflezen: per stap de unieke bezoekers over de hele periode én de conversie ten opzichte van de vorige stap — zo is direct zichtbaar wáár bezoekers afhaken (bijvoorbeeld op de eerst-2-beoordelen-poort uit de onboarding). - Erop vertrouwen dat de metingen automatisch na 90 dagen worden opgeschoond (beperkte bewaartermijn).
- Onbekende gebeurtenistypen worden door de API geweigerd (allowlist) — het meetkanaal is geen vrije-vorm-datastore.
Audittrail
Section titled “Audittrail”(Per 2026-07-11n, issue #22, ADR-038.) Naast de anonieme Statistieken hierboven heeft de beheerder een admin-only audittrail nodig om support te kunnen verlenen: wie stelde welke vraag, wie beoordeelde wat, wie heeft wanneer zijn euro-saldo opgehoogd. In tegenstelling tot de statistieken draagt elke regel hier bewust wél de gebruikersidentiteit (actor) — nooit zichtbaar voor de gebruiker zelf, uitsluitend voor de beheerder, en nooit de opname/media zelf (alleen metadata: id’s, aantallen, bedragen).
Wat wordt vastgelegd (elke gebeurtenis: type, actor, optioneel target, details, tijdstip):
| Type | Wanneer | Actor |
|---|---|---|
Registratie | Een nieuw account wordt aangemaakt | de nieuwe gebruiker |
VraagGesteld | Een vraag wordt gesteld | de maker |
OpinieGegeven | Een beoordeling wordt ingediend | de opiniegever |
WaarderingGegeven | De maker waardeert een ontvangen beoordeling | de maker |
SaldoOpgehoogd | Een iDeal-inleg wordt bevestigd (webhook) | de gebruiker wiens saldo ophoogt |
UitbetalingAangevraagd | Een uitbetaling wordt aangevraagd | de aanvrager |
AccountUpgrade | Een anonieme sessie wordt geregistreerd account | de (nieuwe) gebruikersnaam |
MeldingIngediend | Een vraag wordt gemeld | de melder |
VraagVervallenDoorMelding | Een vraag vervalt door de meldingen-drempel | de maker van de vervallen vraag |
Wat de beheerder functioneel moet kunnen:
- In de tab Audittrail de gebeurtenissen aflopend op tijdstip inzien, met filters op actor, type en periode (vanaf/tot), gepagineerd.
- Erop vertrouwen dat elke gebeurtenis in dezelfde databasetransactie is weggeschreven als de mutatie die ze beschrijft — een audit-regel bestaat dus nooit los van de bijbehorende actie (en andersom).
- Erop vertrouwen dat de audittrail na
auditRetentieDagen(instelbaar, standaard 365) automatisch wordt opgeruimd — een bewust ruimere, maar nog altijd begrensde bewaartermijn dan de 90 dagen van de anonieme statistieken, omdat support vaak met vertraging wordt gevraagd. - De audittrail overleeft bewust de retentie van de onderliggende
Vraag(die na het resultaat-retentievenster verdwijnt) — maar bevat zelf nooit de opname of andere inhoud die geretentioneerd wordt, alleen de metadata.
Monitoring van het verdeelsysteem
Section titled “Monitoring van het verdeelsysteem”De beheerder moet kunnen zien of het vraag-verdeelsysteem zijn werk goed doet: blijft geen enkele vraag te lang onbeantwoord, en draagt de community genoeg bij of leunt het systeem te veel op de AI? Deze cijfers worden vastgelegd in de Verdeelstatistieken op het Systeem-aggregate.
Omdat een Vraag na afronding binnen het resultaat-retentievenster alleen nog voor de maker bestaat en daarna automatisch wordt verwijderd (zie Retentiebeleid), kunnen de meeste cijfers niet achteraf uit de vragen worden berekend. Ze worden daarom als geaggregeerde tellers bijgehouden op het moment dat een gebeurtenis plaatsvindt (een opinie binnen, een slot verlopen, AI ingevuld, vraag afgerond). Alleen wat op dit moment nog bestaat — open vragen, gereserveerde slots — wordt live geteld. De cijfers blijven geaggregeerd en zijn niet herleidbaar tot individuele anonieme vragen.
Tellers (cumulatief)
Section titled “Tellers (cumulatief)”| Cijfer | Wat het zegt |
|---|---|
| Door AI afgerond (door timeout) | Hoeveel vragen door het AI-vangnet zijn beantwoord doordat de maximale onbeantwoord-tijd werd overschreden — het kerncijfer “hoeveel werd automatisch door AI gedaan”. |
| Door mensen afgerond | Hoeveel opinies/vragen door mensen zijn beoordeeld. |
| Gemiddelde antwoordtijd | De gemiddelde tijd van plaatsing tot een vraag volledig beoordeeld is (afgeleid uit een som + telling). |
| Vervallen voorstellen | Hoe vaak een Keuzeset verliep zonder keuze — veel betekent: keuzetermijn te kort of te veel aangeboden. |
| Vervallen toewijzingen | Hoe vaak een gekozen opdracht niet op tijd werd afgerond — veel betekent: antwoordtermijn te kort. |
| SLA-overschrijdingen | Hoe vaak een vraag de maximale onbeantwoord-tijd overschreed (bewaking van de eis “nooit te lang onbeantwoord”). |
| Inzet per AI-persona | Hoe vaak elke persona is ingezet. |
Live-cijfers (momentopname)
Section titled “Live-cijfers (momentopname)”| Cijfer | Wat het zegt |
|---|---|
| Openstaande vragen nu | Hoeveel vragen op dit moment nog niet (volledig) beoordeeld zijn. |
| Actieve opiniegevers nu | Hoeveel gebruikers binnen het online-venster actief zijn (= aantalOnline). |
| Gereserveerde slots nu | Hoeveel slots op dit moment Voorgesteld of Gekozen zijn (reserveringsdruk). |
| Leeftijd oudste open vraag | Hoe lang de oudste openstaande vraag al wacht — nadert die maxOnbeantwoordMin, dan staat het AI-vangnet op punt te vuren. |
Gezondheidsthermometer. Het AI-aandeel — door AI afgerond gedeeld door alle afgeronde vragen — vat in één getal samen of de community genoeg bijdraagt. Loopt dat op, dan leunt het platform te zwaar op het vangnet en kan de beheerder bijsturen (meer opiniegevers werven, termijnen of de keuzeset-grootte aanpassen).
Berichten beheren
Section titled “Berichten beheren”Berichten zijn mededelingen aan een gebruiker. Een bericht heeft een ontvanger, een inhoud en een tijdstip. Berichten blijven behouden voor geregistreerde gebruikers; voor anonieme gebruikers worden gegevens niet bewaard.
| Veld | Betekenis |
|---|---|
ontvanger | De gebruiker voor wie het bericht bestemd is |
inhoud | De tekst van het bericht |
timestamp | Het tijdstip waarop het bericht is aangemaakt |
Wat de beheerder functioneel moet kunnen:
- De bestaande berichten inzien.
- Berichten aanmaken, wijzigen en verwijderen.
Het bewaren van berichten respecteert de anonimiteit en het onderscheid tussen gebruikerstypen: berichten blijven behouden voor geregistreerde gebruikers, terwijl van anonieme gebruikers geen gegevens worden bewaard. Betaalcommunicatie (iDeal-bevestigingen e.d.) loopt via de payment provider, niet via deze berichten.
Verhouding tot anonimiteit en retentie
Section titled “Verhouding tot anonimiteit en retentie”Beheer mag de kernbelofte van I See You niet doorbreken. Daarom geldt:
- De beheerder beheert stamdata, instellingen en berichten — niet de vragen zelf.
- Opnames (video/foto) worden hoe dan ook verwijderd volgens het retentiebeleid: na afronding blijven het resultaat en de opname binnen het instelbare resultaat-retentievenster (
resultaatRetentieUren) uitsluitend voor de maker zichtbaar en verdwijnen daarna automatisch; nooit-afgeronde vragen ruimt de veiligheids-timeout op. In productie zijn opnames voor beheer niet toegankelijk en geen onderwerp van beheer. - Statistieken zijn geaggregeerd (aantallen en bedragen) en herleiden niet tot individuele anonieme vragen.
Test/QA-uitzondering (per
2026-07-09c). Het beheerportaal kan bij het vraagdetail de opname tónen, maar uitsluitend als expliciet gemarkeerde testfunctie (amber zone met erlenmeyer). Dit is een hulpmiddel voor test/QA en geen productiefunctie: de belofte “in productie geen beheer-toegang tot opnames” blijft de norm. De opname wordt geladen via het bestaande, sleutel-gebaseerde media-endpoint; het beheerdetail geeft die sleutel alleen in deze testcontext terug.
Zie ook Anonimiteit & retentie, het domeinmodel en de termenlijst.