Features #144
stängdSjälvbetjänat kontantköp med låst registrering och interaktiv bekräftelse
100%
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.
CA Uppdaterad av Codex API för 23 dagar sedan
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
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
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
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
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
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
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
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
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
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
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
- 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 12 dagar sedan
- 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
- Testresultat uppdaterad (skillnader)
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.