Projekt

Allmänt

Profil

Handlingar

Features #144

stängd
CA CA

Självbetjänat kontantköp med låst registrering och interaktiv bekräftelse

Features #144: Självbetjänat kontantköp med låst registrering och interaktiv bekräftelse

Tillagd av Codex API för 23 dagar sedan. Uppdaterad för 12 dagar sedan.

Status:
Closed
Prioritet:
Normal
Tilldelad:
Kategori:
Betalning
Startdatum:
2026-09-08
Deadline:
% Klart:

100%

Beräknad tid:
Risknivå:
Normal
Driftsättningspåverkan:
Ingen
Berörd miljö:
Ej tillämpligt
Regression krävs:
Nej
Reported by:

Beskrivning

Köparen genomför hela kontantköpet själv, utan betalningsleverantör. En ledare på plats ska kunna se att köpet har registrerats genom en tydlig bekräftelseskärm. Detta är ett avgränsat tillägg till tidigare beslut att skjuta extern betalningsintegration till senare.

Acceptanskriterier:

  • Köparen granskar varukorgen och väljer Betala kontant, följt av en uttrycklig bekräftelse att kontanterna har lämnats.
  • Servern kontrollerar förening, artiklarnas tillgänglighet, antal och aktuella priser. Ändrade priser kräver ny bekräftelse.
  • Registrering sker atomärt med unikt köpnummer, förening, servertidpunkt, artiklar, antal och belopp. Namn och priser sparas som historiska snapshots.
  • Betalningssätt är kontant. Betalningen markeras som bekräftad av köparen, inte som kontrollerad eller avstämd av föreningen.
  • Registrerade köp kan inte redigeras eller raderas via det vanliga köp- eller administrationsflödet. Eventuella rättelser sker separat och spårbart utan att skriva över originalet.
  • Dubbeltryck, omladdning och omförsök får inte skapa dubbla köp. Idempotens och samtidiga anrop ska testas.
  • Bekräftelseskärmen visas först efter lyckad serverregistrering och visar köpnummer, förening, tidpunkt och totalbelopp.
  • Skärmen har animation och ger toner när köparen trycker på olika områden. Ljud startas genom användarens interaktion; ljudlös användning och reducerad rörelse ska fungera. Viktig information får inte vara beroende av ljud eller animation.
  • Skärmen får en egen utformning som inte kan förväxlas med Swish. Animation och toner visar interaktivitet men utgör inte i sig bevis på äkthet eller mottagna kontanter.
  • Åtkomst till köpbekräftelse och eventuella personuppgifter avgränsas till rätt köpare och förening. QR-länkar ger inte tillgång till någon annans köp.

Avgränsning och fortsatt precisering:
Ingen Swish-, bank- eller annan extern betalningsintegration ingår. Kassakontroll och faktisk avstämning är separata funktioner. Artikelstyrda personfält, gallring och integritetskrav behöver samordnas med köpunderlaget; låst transaktion innebär inte obegränsad lagring av personuppgifter. Exakt rättelseflöde och eventuell ledarverifiering mot servern preciseras före implementation.

Bakgrund: Användaren har uttryckligen valt att köparen sköter hela transaktionen själv och att registreringen ska bestå utan möjlighet att ta bort köpet.


Acceptanskriterier

Köparen genomför hela kontantköpet själv, utan betalningsleverantör. En ledare på plats ska kunna se att köpet har registrerats genom en tydlig bekräftelseskärm. Detta är ett avgränsat tillägg till tidigare beslut att skjuta extern betalningsintegration till senare.

Acceptanskriterier:

  • Köparen granskar varukorgen och väljer Betala kontant, följt av en uttrycklig bekräftelse att kontanterna har lämnats.
  • Servern kontrollerar förening, artiklarnas tillgänglighet, antal och aktuella priser. Ändrade priser kräver ny bekräftelse.
  • Registrering sker atomärt med unikt köpnummer, förening, servertidpunkt, artiklar, antal och belopp. Namn och priser sparas som historiska snapshots.
  • Betalningssätt är kontant. Betalningen markeras som bekräftad av köparen, inte som kontrollerad eller avstämd av föreningen.
  • Registrerade köp kan inte redigeras eller raderas via det vanliga köp- eller administrationsflödet. Eventuella rättelser sker separat och spårbart utan att skriva över originalet.
  • Dubbeltryck, omladdning och omförsök får inte skapa dubbla köp. Idempotens och samtidiga anrop ska testas.
  • Bekräftelseskärmen visas först efter lyckad serverregistrering och visar köpnummer, förening, tidpunkt och totalbelopp.
  • Skärmen har animation och ger toner när köparen trycker på olika områden. Ljud startas genom användarens interaktion; ljudlös användning och reducerad rörelse ska fungera. Viktig information får inte vara beroende av ljud eller animation.
  • Skärmen får en egen utformning som inte kan förväxlas med Swish. Animation och toner visar interaktivitet men utgör inte i sig bevis på äkthet eller mottagna kontanter.
  • Åtkomst till köpbekräftelse och eventuella personuppgifter avgränsas till rätt köpare och förening. QR-länkar ger inte tillgång till någon annans köp.

Avgränsning och fortsatt precisering:
Ingen Swish-, bank- eller annan extern betalningsintegration ingår. Kassakontroll och faktisk avstämning är separata funktioner. Artikelstyrda personfält, gallring och integritetskrav behöver samordnas med köpunderlaget; låst transaktion innebär inte obegränsad lagring av personuppgifter. Exakt rättelseflöde och eventuell ledarverifiering mot servern preciseras före implementation.

Bakgrund: Användaren har uttryckligen valt att köparen sköter hela transaktionen själv och att registreringen ska bestå utan möjlighet att ta bort köpet.


Testresultat

Godkänt 2026-09-20. Kontantflödet har verifierats med uttrycklig köparbekräftelse, aktuella serverpriser, atomär låst registrering, unikt köpnummer, snapshots, idempotent omförsök och processbaserat samtidighetstest. Bekräftelsevyn har godkänts manuellt med animation, toner, reducerad rörelse och utan JavaScript; viktig information visas som text. Ägar- och föreningsavgränsning ingår i integrationstesterna. Full senare CI på 213755844135f1495bebce364df6606f2fcfe6cd: 173 tester, 3182 assertions, godkänd. Nuvarande HTTPS-release 0e6c6ce innehåller flödet. Extern betalning och kassavstämning ingår inte. Det separata spårbara rättelseflödet har avgränsats till relaterade #313 under #134.


Relaterade ärenden 1 (0 öppna — 1 stängd)

Relaterar till Features #313: Inför spårbar rättelse av registrerat kontantköpClosedCodex API2026-09-20

Handlingar

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #1

  • Kategori satt till Betalning

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #2

Transaktionsgrunden finns nu lokalt: migration 007 med cash_purchases och immutable-triggers, backend för ägarskyddad granskning/HMAC, kontroll av pris/antal/obligatoriska personfält, atomär registrering och idempotent omförsök per underlag. Integrationstester tillagda men EJ körda ännu. Dokumentation och huvud-/deldiagram uppdaterade; båda PlantUML-bilder regenererade utan renderingsfel. Commit/push till main stoppades av säkerhetskontrollen och explicit godkännande har efterfrågats. Ingen migration körd i acceptans/produktion och ingen betalningsknapp exponerad. Nästa steg efter godkänd CI: processbaserat samtidighetstest och köparens gransknings-/bekräftelseflöde, därefter animation/toner.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #3

Användaren godkände incheckning/main-push och CI för transaktionsgrunden. Commit 7239ef8f413d295e9487f870f78183a0ededba28 är pushad och CI PASSED. Migration 007 och befintliga SQL-integritetstester körda endast i disponibel CI-databas. 48 tester/324 assertions samt 44 integrationstester/839 assertions godkända (92 tester totalt). Verifierar bland annat ändrat pris kräver ny granskning, atomär registrering, idempotent omförsök även efter ny varukorg, låsta registreringar/rader, gäståtkomst och stopp för ej implementerade obligatoriska personfält. Ingen migration eller appuppdatering utförd i acceptans/produktion. Processbaserat samtidighetstest och köparens gransknings-/bekräftelseflöde återstår innan aktivering.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #4

Kontantflodets granskningssida och agarskyddade bekraftelse ar implementerade i lokal commit 32d5c05. Explicit kontantbekraftelse, kopnummer, frysta rader, tryckanimation och valfria toner. Funktionen ar avstangd som standard. HTTP-test tillagt for registrering, omsandning, frammande gast och avstangd funktion. git diff --check passerade. Push/CI blockerades av sakerhetsgranskning i vantan pa uttryckligt godkannande for denna commit. CI, processbaserat samtidighetstest och visuell verifiering aterstar. Ingen migration eller acceptans-/produktionsaktivering gjord.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #5

Efter uttryckligt godkannande pushades 32d5c058bbfb836abfe7bb82ab413b5dd7d9a012 till main. Isolerad CI PASSED: 48 enhetstester/324 assertions och 45 integrationstester/857 assertions, totalt 93 tester. Korning 32d5c058bbfb836abfe7bb82ab413b5dd7d9a012.SCWC5E. Ingen aktivering eller migration i acceptans/produktion. Processbaserat samtidighetstest och visuell verifiering aterstar fore aktivering.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #6

Verifierat i separat disponibel kopia av 32d5c05 med nya tester: 46 integrationstester och 870 assertions godkanda. Tva separata PHP-processer bekraftar samma underlag samtidigt och far samma kop-id; endast en registrering sparas. Databasen borttagen efter test. Databasfri Playwright-kontroll av bekraftelsesidan passerar vid 1280/390/320 px, ljud av/pa, startad ljudkontext efter tryck, reducerad rorelse och utan JavaScript. Skarmbilder visuellt granskade for dator och smal mobil. Fysisk mobil/ljudatergivning och fullstandig mobilcheckout aterstar. Tillfallig previewcontainer och tunnel stangda. Ingen acceptans-/produktionsmigration eller aktivering. Testfiler och dokumentation finns lokalt, ej pushade.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #7

Efter uttryckligt godkannande committades och pushades tester och dokumentation i d8348f9095d55e833c72dfe43406ba52add497ce till main. Ordinarie CI PASSED: 48 enhetstester/324 assertions och 46 integrationstester/870 assertions, totalt 94 tester. Samtidighetstestet ingar nu i CI. Korning d8348f9095d55e833c72dfe43406ba52add497ce.HEt8hP. Arbetskatalogen ar ren. Ingen aktivering, migration eller andring av appkontots rattigheter i acceptans/produktion.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #8

Lasande forkontroll av acceptans genomford. Release e28fbbc matchar godkand CI; appen riktad mot foreningskiosk_acceptance och cash.enabled=false. Flyway 001-006 success, 0 misslyckade migrationer, cash_purchases saknas, inga schemaomfattande skrivrattigheter for appkontot. Ny lokal check-acceptance-cash.sh samt docs/architecture/cash-acceptance-rollout.md dokumenterar backup, Flyway target007, SELECT/INSERT, aktivering och atergang utan radering av kop. Inga databas-/konfigurationsandringar gjorda. Explicit godkannande behovs fore migration och aktivering; globala/rollbaserade grants kontrolleras fore rattighetsandring.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #9

Efter uttryckligt godkannande aktiverades kontantkop i acceptans (ej produktion). Privat backup i /home/bj/.local/share/foreningskiosk-acceptance/backups/cash-20260908T202019Z; dump+triggers/rutiner/events, gzip-integritet och checksumma verifierade (ingen full aterlasningsovning). Flyway target007: exakt en migration applicerad, 7 validerade. Appkonto saknar globala/schema/rollbaserade breda privilegier; cash_purchases har exakt INSERT och SELECT. Tre triggers och unik kallnyckel verifierade. Laravel cash.enabled=true efter omstart, lasatkomst fungerar. Read-only Playwright: root/login/kiosk/cart OK pa 18083, version e28fbbc. Inga provkop eller varukorgsandringar; antal kontantkop 0 efter kontrollerna. Aktiveringsskript och dokumentation finns lokalt, ej pushade. Fysiskt mobilprov och ljudatergivning aterstar som anvandaracceptans.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #10

Efter anvandarprov: ljudkryssruta borttagen. Bekraftelseytan ger olika korta toner i sex omraden vid tryck, utan automatisk ljudstart. Symboler och rorelseband animeras kontinuerligt; pausknapp och prefers-reduced-motion respekteras. Animation ar inte akthetsbevis; separat serverkontroll kravs for det. Databasfri Playwright: 1280/390/320 px, faktisk rorelse, paus/start, olika toner, inga JS-fel, reducerad rorelse och utan JS godkanda. 53 enhetstester/369 assertions och Vite-build passerade. Inga kop andrade eller skapade. Ej driftsatt; lokala UI-andringar invantar push/CI och acceptansuppdatering.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #11

Godkand interaktionsandring committad/pushad och driftsatt i acceptans: 4218bc291f50bc9df6fda1c7c46f61ef6fa8df1d. CI PASSED med 53 enhetstester/369 assertions och 46 integrationstester/870 assertions, totalt 99 tester. Korning 4218bc291f50bc9df6fda1c7c46f61ef6fa8df1d.7SoeCo. Version 4218bc2 och nya animationsassets verifierade via 18083. Befintliga kop, databas, sessioner och shared storage bevarade; inga migrationer/seed eller produktionsandringar. Kontinuerlig rorelse, positionsbaserade toner och borttagen ljudkryssruta finns nu i acceptans. Ingen atkomst till eller andring av anvandarens kop i verifieringen. Rollbackcontainer: foreningskiosk-acceptance-web-before-4218bc291f50.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #12

Anvandaracceptans: anvandaren bekraftar att sidan ser bra ut och att toner ljuder vid varje tryck i version 4218bc2. Det aktuella utforandet behalls. Detta bekraftar interaktionen, inte kontantavstamning eller akthetsverifiering mot servern.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #13

Avstämning 2026-09-08: Delvis, huvudflödet godkänt. Låst kontantköp, idempotens och animerad ljudbekräftelse levererade och godkända. Rättelseflöde/precisering återstår; personfält hanteras i #125/#126. Underlag: docs/issue-audit-2026-09-08.md. Ingen ny regression eller produktionsdriftsättning i denna avstämning. Statusfält oförändrat.

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #14

  • Tilldelad satt till Codex API
  • Versionsmål satt till 0.3 - Köpflöde utan betalning
  • Acceptanskriterier uppdaterad (skillnader)
  • Driftsättningspåverkan satt till Ingen
  • Testresultat uppdaterad (skillnader)

CA Uppdaterad av Codex API för 23 dagar sedan Handlingar #15

  • Status ändrad från New till In progress
  • % Klart ändrad från 0 till 40

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #16

  • Relaterar till Features #313: Inför spårbar rättelse av registrerat kontantköp tillagd

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #17

Slutverifierad. Huvudflödet är levererat och användargodkänt. Kvarvarande rättelsefunktion har registrerats separat som #313, relaterats hit och planerats till 0.5; originalköpets orubblighet kvarstår.

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #18

  • Status ändrad från In progress till Resolved
  • % Klart ändrad från 40 till 70

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #19

  • Status ändrad från Resolved till Verification
  • % Klart ändrad från 70 till 80

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #20

  • Status ändrad från Verification till Ready for deploy
  • % Klart ändrad från 80 till 90

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #21

  • Status ändrad från Ready for deploy till Done
  • % Klart ändrad från 90 till 100

CA Uppdaterad av Codex API för 12 dagar sedan Handlingar #22

  • Status ändrad från Done till Closed
Handlingar

Finns även som: PDF Atom