Features #222
stängdFeatures #178: Samordning: generiska föreningsspecifika klippkort
Features #177: Konfigurera frivillig giltighetstid för klippkortsartiklar
Spara och validera artikelns frivilliga giltighetsår
100%
Beskrivning
DoD: nullable validity_years i artikelns erbjudande, positivt heltal eller null via befintligt admin-API, sparat och återläst med föreningsbehörighet. Isolerad MariaDB/CI verifierar noll, negativa tal, decimaler, utanför lagringsintervall, null, uppdatering och obehörig förening. Teknisk maxgräns enligt unsigned int; faktisk datumgräns kontrolleras av CardValidity vid utfärdande. Exkluderar UI och acceptansdriftsättning, vilka ligger kvar i #177; utfärdande och snapshot ligger i #183.
Acceptanskriterier
API och databas bevarar frivilliga giltighetsår och avvisar ogiltiga värden i isolerad CI. Inga köpspärrar tas bort.
Testresultat
Slutgranskat 2026-09-15. Återanvänt godkänt CI-underlag fd791bdd07d30115b2de65a6467104c1c07c3526.crx8si, testsummor återlästa: 84 tester/628 assertions samt 174 MariaDB-tester/3196 assertions. Ingen ny testkörning denna gång. Berörda controller-, lagrings-, schema- och testfiler oförändrade mot detta bygge. ArticleCardOfferAdminTest::test_optional_validity_is_validated_saved_cleared_and_tenant_scoped verifierar API-avslag för 0, negativa tal, decimaler, text, array och över unsigned-int-gränsen; spara/återläsa 5, uppdatera 6 och 4294967295, rensa via null/tom sträng, utelämnat fält bevarar tidigare värde, ny artikel utan värde ger null. Främmande förening nekas och värdet bevaras; föreningsavgränsad läsning ger null. ArticleCardOffersSchemaTest verifierar databasspärrar för 0/negativt/överintervall samt null, uppdatering och tenant-FK. Migration 016 och ArticlesController/ArticleCardOffers granskade. Teknisk lagringsgräns skiljs från faktisk möjlig slutdag, som kontrolleras av CardValidity vid utfärdande. Ingen kodändring, dataändring, UI-ändring eller driftsättning.
CA Uppdaterad av Codex API för 21 dagar sedan
Implementerat och pushat 5a220baef7a0552eaa97b6fd45e454f57cc6bf52. Migration 016 och validering/sparande via befintligt admin-API. Utelämnat fält bevarar värdet; explicit null/tomt tar bort tidsgränsen. CI PASS: 83 tester/612 assertions + 74 MariaDB-tester/1619 assertions = 157 tester. Körning /home/bj/.local/share/foreningskiosk-ci/runs/5a220baef7a0552eaa97b6fd45e454f57cc6bf52.fwzkjD. Ingen UI eller acceptans-/produktionsmigration. Köp spärras fortfarande. Dokumentation docs/architecture/card-offer-validity-222.md.
CA Uppdaterad av Codex API för 17 dagar sedan
- Testresultat uppdaterad (skillnader)
DoD för API och databas uppfylld. UI, leverans och snapshots/utfärdande ingår inte i denna stängning; inga köpspärrar eller flaggor ändrade.