Features #176
stängdFeatures #178: Samordning: generiska föreningsspecifika klippkort
Välj kompatibelt klippkort enligt giltighet och ålder
100%
Beskrivning
Föreningen namnger egna korttyper, separata från artikelkategori. Artikelns accepterade korttyps-ID avgränsar urvalet inom samma förening. DoD: servern väljer endast kort som användaren får nyttja, med rätt typ, giltighet och tillräckligt saldo. Prioritera närmast sista giltighetsdag. Kort utan slutdatum kommer efter tidsbegränsade och sorteras på minst antal klipp kvar. Vid lika slutdatum används äldsta utfärdade kort; vid lika saldo bland kort utan slutdatum används äldsta utfärdade kort. Stabil ID-ordning som sista skiljeregel. Testa fel förening/typ/åtkomst, utgångna eller tomma kort, tidsbegränsade kontra obegränsade, olika saldon och lika värden. Förutsätter separat korttyps- och kortinstansmodell. Omfattar inte kortköp, avräkningstransaktion, giltighetspolicy eller fördelning mellan flera kort.
Acceptanskriterier
Testresultat
PASS 2026-09-21, commit 1638102: exakt nollsaldo hoppas över; lika slutdatum och lika obegränsat saldo prioriterar äldsta issued_at före ID. Isolerad CI: 87/659 och MariaDB 185/3391; Vite PASS.
CA Uppdaterad av Codex API för 22 dagar sedan
- Beskrivning uppdaterad (skillnader)
Nytt användarbeslut ersätter tidigare åldersprioritering för kort utan slutdatum: välj i första hand det kort som har minst antal klipp kvar. Ålder används endast som skiljeregel vid lika saldo.
CA Uppdaterad av Codex API för 21 dagar sedan
- Kategori satt till Säkerhet och test
- Status ändrad från New till In progress
- Tilldelad satt till Codex API
- Versionsmål satt till 0.4 - Konto och historik
- % Klart ändrad från 0 till 40
- Acceptanskriterier uppdaterad (skillnader)
- Driftsättningspåverkan satt till Ingen
CA Uppdaterad av Codex API för 21 dagar sedan
Implementerat läsande CardSelection::forArticle för ägda kort. Serverkontroll av aktivt konto, förening/artikel/typ, aktivering, exklusiv giltighetsgräns och tillräckligt saldo; deterministisk prioritering och inga kortskrivningar. Inaktiv korttyp stoppar inte nyttjande. Ingen saldoaggregation. CI PASSED 87bf6ebafe46cb85e4da5c38b526e3f2cc2a2860, körning i1sbV8: 83 unit/612 assertions + 85 MariaDB integration/1787 assertions. Dokumentation docs/architecture/card-selection-176.md. Initialt testfel i snapshot-avgränsning korrigerat. Ingen driftsättning eller inkoppling i checkout. Delad åtkomst #191 och debitering/zero-balance-schema #186 återstår.
CA Uppdaterad av Codex API för 10 dagar sedan
- Status ändrad från In progress till Resolved
- % Klart ändrad från 40 till 70
- Testresultat uppdaterad (skillnader)
Kompletterande acceptansverifiering genomförd för #176. Testet skapar kort i motsatt ID- och tidsordning och verifierar därmed uttryckligen att äldsta issued_at prioriteras före ID både vid lika slutdatum och vid lika saldo på kort utan slutdatum. Ett kort debiteras därefter till exakt noll och verifieras bli överhoppat till förmån för nästa giltiga kort. Commit 1638102cf16e380b2cfb66d55fd1d185827b185f. Isolerad CI PASS: 87 tester/659 assertions samt 185 MariaDB-integrationstester/3391 assertions; Vite byggd. Artefakt: /home/bj/.local/share/foreningskiosk-ci/runs/1638102cf16e380b2cfb66d55fd1d185827b185f.Orsumb/release.tar.gz. Ingen driftsättning eller produktionsdata ändrades.