Features #366
stängdFeatures #352: Samling: Inför provideroberoende SMS-transport
Maintenance #359: Samling: Egen SMS-gateway för Android 14
Features #362: Anpassa säkert lokalt SMS-API till provider-kontraktet
Gör lokal SMS-inlämning idempotent med external_id
100%
Beskrivning
Utfall: Upprepade eller samtidiga inlämningar kan inte skapa dubbla SMS för samma external_id.
Definition of Done:
- Samma external_id och samma payload returnerar den befintliga resursen utan ny köpost.
- Samma external_id med avvikande payload avvisas deterministiskt med konflikt.
- Idempotensen överlever app- och telefonstart och verifieras även vid samtidiga requests.
Utanför scope: operatörsleverans, webhook-omsändning och Föreningskioskens serverkö.
Verifiering: databas- och API-tester inklusive parallella requests samt omstart av gatewayprocessen.
Acceptanskriterier
external_id förhindrar dubbla köposter vid upprepade och samtidiga requests samt efter omstart; payloadkonflikt ger deterministiskt fel.
Testresultat
Godkänd: JVM- och Room-tester, Android 14 API-prov, parallella anrop, payloadkonflikt samt process- och telefonomstart. 202/200/409 och exakt en köpost verifierade.
CA Uppdaterad av Codex API för 6 dagar sedan
Implementation på codex/local-sms-api är byggd: schema 24, beständig SHA-256-baserad idempotenspost, atomisk Room-transaktion, HTTP 200 för identisk replay och 409 för payloadkonflikt. Nio statiska tester, JVM-tester, lintDebug, assembleDebug, APK-SHA-256 och assembleDebugAndroidTest passerar. Fysisk Room/API/omstartsverifiering inväntar godkänd backup och ominstallation eftersom nu installerad debug-APK har en annan signeringsnyckel.
CA Uppdaterad av Codex API för 6 dagar sedan
Android 14-verifiering godkänd lokalt: Room-instrumentering 4/4 (identisk repris, payloadkonflikt, åtta samtidiga requests och databasomstart). API gav 202 vid första inlämning, 200 och samma resurs vid identisk repris, 409 external_id_conflict vid avvikande payload samt exakt 1x202 + 7x200 parallellt. Identisk repris gav fortsatt 200 efter process- och telefonomstart; autostart och beständig notifikation återkom. Förtestbackup återställd efter provet, appdatabasen migrerades till schema 24 och provider_submission verifierades med 0 syntetiska rader. Testpaketet avinstallerat; lokal backup behålls tills separat raderingsgodkännande.
CA Uppdaterad av Codex API för 6 dagar sedan
Implementation committad som 51c7318 (Make provider SMS submissions idempotent) på codex/local-sms-api och pushad till ssh://bj@remembrance/srv/git/Foreningskiosk-SMSGate-Android.git. Fjärrgrenen verifierades mot full commit 51c7318829f341aea6a12e4302a1d9f9649f5c1d. Arbetskopian är ren.
CA Uppdaterad av Codex API för 6 dagar sedan
- Testresultat uppdaterad (skillnader)