Maintenance #410
öppenMaintenance #135: Produktionshårdning och slutregression
Maintenance #381: Samling: Återverifiera godkända katalog- och köpflöden efter pilotavgränsning
Säkra unik produktkoppling per förening
Tillagd av Codex API för 3 dagar sedan. Uppdaterad för 2 dagar sedan.
40%
Beskrivning
En global produkt får vara kopplad till högst en icke-raderad artikel inom samma förening. Inventera först befintliga konflikter skrivskyddat. Inför tydlig validering vid skapande och redigering samt ett databasskydd mot samtidiga dubbletter. Samma globala produkt ska fortsatt kunna användas av en artikel i vardera av flera olika föreningar. Kioskskanning av en produkt-EAN ska därefter entydigt välja föreningens artikel. Omfattar inte automatisk sammanslagning eller radering av befintliga artiklar; sådana konflikter kräver separat godkänd datakorrigering efter backup.
Acceptanskriterier
Skrivskyddad inventering visar alla aktiva och mjukraderade konflikter per förening och produkt. Skapande eller redigering som skulle koppla samma produkt till ytterligare en icke-raderad artikel i samma förening avvisas med ett tydligt EAN-fel. Databasen skyddar samma regel även vid samtidiga skrivningar. Samma produkt i olika föreningar tillåts. Befintlig artikel kan sparas utan falsk konflikt. Kioskskanning av varje EAN på produkten väljer exakt en artikel. Tester täcker create, update, concurrency/databasunikhet, mjukradering, tenantavgränsning och scannerregression. Produktionsleverans kräver inventering, återställningsverifierad backup och separat godkännande för eventuell datakorrigering.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #2
- Relaterar till Maintenance #396: Gör produktens EAN-hantering entydig när flera koder finns tillagd
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #3
- Relaterar till Maintenance #407: Lägg till EAN-skanning i artikelformuläret tillagd
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #4
- Relaterar till Maintenance #409: Varna direkt när produktens EAN redan finns tillagd
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #5
Implementerat i arbetskopian: applikationsvalidering vid skapande/redigering, schema 025 med unik förening-produkt-nyckel för icke-raderade artiklar, fortsatt tenantdelning, tydligt EAN-fel, scannerregression samt skrivskyddat produktionsaudit utan person- eller produktnamn. Verifierat: foundation 99 tester/840 assertioner; isolerad MariaDB 59 tester/1258 assertioner; audit 2 tester; PHP-syntax godkänd. Separat konfliktdatabas visar att schema 025 vägrar befintliga dubbletter atomiskt och lämnar raderna oförändrade. Ingen produktion har lästs eller ändrats; commit och skrivskyddad produktionsinventering återstår.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #6
Commit 882a9c6 skapad på main: Enforce unique article product per organization refs #410. Committen innehåller endast applikationsvalidering, schema 025, integrationstester, skrivskyddat konflikt-audit och den korrigerade databasdesignregeln. Orelaterade arbetskopieändringar lämnades utanför. Push, produktionsaudit, eventuell datakorrigering, schemaaktivering och apprelease återstår.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #7
Push genomförd: 882a9c6e43f013d5e4a648b7ad8b838a01873540 är nu main på ssh://bj@remembrance/srv/git/Foreningskiosk.git. Server-CI passerade och skapade releaseartefakten /home/bj/.local/share/foreningskiosk-ci/runs/882a9c6e43f013d5e4a648b7ad8b838a01873540.RcSaCo/release.tar.gz. Ingen produktionsdata, schema eller aktiv apprelease ändrades. Nästa steg är skrivskyddad konfliktinventering före eventuell datakorrigering och schema 025.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #8
Skrivskyddad produktionsinventering körd mot aktiv release 03a7310: conflict_count=1. Organisation 1 och produkt 3 är kopplade till två icke-raderade aktiva artiklar: id 7/A-000004 och id 8/A-000005. Ingen databasrad ändrades. Schema 025 får inte migreras förrän konflikten har klassificerats och korrigerats efter separat godkänd backup/återställningskontroll. Nästa steg är skrivskyddad jämförelse av de två artiklarnas affärskonfiguration och referensantal.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #9
Skrivskyddad detaljkontroll i produktion visar en tydlig dubblett i förening 1 för produkt 3 (Plejd Dosdimmer DIM-01, EAN 7330018133708). A-000004 (artikel-id 7) skapades först, kostar 800,00 kr och har 1 köprad. A-000005 (artikel-id 8) skapades fem minuter senare, kostar 0,00 kr och har inga köp, länkar, personfält, klippkortserbjudanden eller inlösenregler. Rekommenderad separat datakorrigering är att bevara A-000004 och mjukradera A-000005 efter ny återställningsverifierad databasbackup och uttryckligt godkännande. Ingen produktionsdata ändrades av kontrollen.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #10
Supportleverans färdigställd lokalt för den godkända korrigeringsordningen: (1) transaktionell och exakt låst mjukradering av A-000005 efter färska matchande backup-/återställningsbevis, (2) separat schema 025-migrering på remembrance med konfliktfrihetskontroll och Flyway-checkpoint, (3) separat apprelease 882a9c6 med produktionskontroll av databasskydd, validering och entydig kioskskanning till A-000004. Nio nya stödspecifika tester samt befintliga EAN-/auditregressioner passerar; PHP- och Bash-syntax godkända. Inga produktionsändringar gjorda och användarens övriga arbetskatalogsändringar lämnas utanför.
CA Uppdaterad av Codex API för 3 dagar sedan Handlingar #11
Supportcommit 2e83511c70d455a63a9e52bfe406fc44a10afac2 pushad till main; serverns pre-receive-CI passerade. Ett inaktivt samlat supportpaket byggdes på remembrance för feature-release 882a9c6e43f013d5e4a648b7ad8b838a01873540 och verifierades internt. Paket: /home/bj/.local/share/foreningskiosk-article-product-unique-410-2e83511.tar.gz, SHA-256 6bae50f196275b056e1808d782774180fd401b06b4af53bf5441b5287b7e85f3. Ingen databas eller aktiv release ändrades.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #12
Produktionsbackup och återställningsprov godkända före datakorrigering. Krypterad snapshot 04836543f025... skapades och återställdes i isolerad nätverkslös MariaDB med matchande schema; källdatabasen var oförändrad. Matchande bevisfiler skapades som bj:bj 0600. Nästa godkända steg är exakt mjukradering av artikel-id 8 på Webserver; artikel-id 7 och köphistorik ska förbli oförändrade.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #13
Den separat godkända produktionskorrigeringen genomfördes 2026-09-29T08:11:41Z efter återställningsverifierad snapshot 04836543f025aca5aed4951eb53012630ab86a85124d493cc230ba8cf8e094ca. Artikel A-000005 (id 8) mjukraderades transaktionellt. Efterkontroll visar state=applied och bekräftar att A-000004 (id 7), produkt 3, EAN, köphistorik, konfiguration, tjänster och timers är oförändrade. Nästa steg är skrivskyddad schema 025-förkontroll på remembrance; migrering kräver separat godkännande.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #14
Skrivskyddad produktionsförkontroll på remembrance godkänd efter datakorrigeringen: exakt CI-källa verifierad, databasen konfliktfri på schema 024, endast migration 025 väntar och Flyway-valideringen passerar. Ingen schema- eller dataändring gjordes. Schema 025-migrering inväntar separat uttryckligt godkännande.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #15
Användaren godkände uttryckligen produktionsmigrering från schema 024 till 025 på remembrance med återställningsverifierad snapshot 04836543f025aca5aed4951eb53012630ab86a85124d493cc230ba8cf8e094ca som återställningspunkt. Godkännandet omfattar schemaändringen, inte efterföljande appaktivering.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #16
Produktionsschema migrerades godkänt från 024 till 025 på remembrance 2026-09-29T08:36:25Z efter återställningsverifierad snapshot 04836543f025aca5aed4951eb53012630ab86a85124d493cc230ba8cf8e094ca. Efterkontroll verifierar generated column active_product_id, uniknyckeln uq_article_active_product, konfliktfri data och schemahistorik 025. Rollback-checkpoint finns i /var/lib/foreningskiosk-deployments/article-product-unique-410-schema024-882a9c6e43f013d5e4a648b7ad8b838a01873540. Ingen apprelease, flagga, grant eller ytterligare affärsrad ändrades.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #17
Inaktiv releaseförberedelse installerade releasekatalogen 882a9c6 men stoppade säkert utan aktivering. Orsak verifierad: Webserver-preflight försökte läsa flyway_schema_history med appkontot, trots att appkontot avsiktligt nekas den tabellen. Lokal korrigering tar bort denna otillåtna kontroll och verifierar fortsatt schema 025 via information_schema-kolumnen active_product_id och unikindexet uq_article_active_product. Regressionstest förbjuder framtida läsning av Flyway-historiken; tre leveranstester och PHP-syntax passerar. Ingen aktiv release, konfiguration eller databas ändrades av felet.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #18
Korrigeringscommit 6466cc6359d5d7f2138c2411a473e49e41d3710b pushad till main och server-CI passerade. Inaktivt tvåfilsfixpaket byggt på remembrance: /home/bj/.local/share/foreningskiosk-article-product-unique-410-fix-6466cc6.tar.gz, SHA-256 e51e8d46af12457d82899eea121440a98ec7c339d87c7a68638908c1773f75bb. Feature-release 882a9c6 och dess artefakt är oförändrade; ingen produktionsaktivering gjord.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #19
Andra inaktiva releaseförberedelsen stoppade säkert vid release source markers. Exakt orsak: en markör med källkodens variabelnamn och låg i en dubbelciterad PHP-sträng och interpolerades under preflight. Lokal korrigering använder bokstavlig enkelciterad sträng; regressionstest förbjuder den interpolerande formen. Samtliga nio stödspecifika tester och PHP-syntax passerar. Ingen aktiv release eller produktionsdata ändrades.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #20
Korrigeringscommit a8b138b73ebd341bbad73908d590fc546703e195 är pushad till main och server-CI har godkänt den. Preflightens PHP-källmarkör använder nu en icke-interpolerande literal och regressionstestet skyddar mot återfall. Korrigeringspaket foreningskiosk-article-product-unique-410-fix-a8b138b.tar.gz är skapat på remembrance med SHA-256 295cb2fdc8e067ddbad60f9a8fbfa40a8d10f474d75a1fb0c6c38d24d9efdeec. Ingen produktionsrelease eller databas ändrades i detta steg.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #21
Skrivskyddad kontroll via rätt Webserver-alias bok verifierade att Articles.php i inaktiv release 882a9c6 innehåller uq_article_active_product, medan database/migrations/025_unique_article_product_per_organization.sql avsiktligt inte ingår i applikationspaketet. Preflightfelet rapporterade föregående markör eftersom stegnamnet inte uppdaterades före nästa filläsning. Lokal korrigering tar bort SQL-källfilen som releasekrav, behåller direkt verifiering av schema 025 via information_schema och inför ett separat felsteg för varje källfil. Nio supporttester och PHP-syntaxkontroll passerar. Ingen produktion ändrad.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #22
Commit f198adbe079dc8b0f6173f4943b538641b6c2807 är pushad till main och server-CI har godkänt den. Korrigeringen kräver inte längre den separat levererade SQL-migrationskällan i applikationspaketet; schema 025 och unikhetsindex verifieras fortsatt direkt via information_schema. Fixpaket foreningskiosk-article-product-unique-410-fix-f198adb.tar.gz är skapat på remembrance med SHA-256 882d9dc0d611260b60de42c4bf6707e328953a51e5880a68e540cf3d47a56a14. Ingen produktionsrelease aktiverades.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #23
Skrivskyddad produktionsdiagnostik verifierade att samtliga fem faktiska tillståndsvillkor är sanna: inga konfliktgrupper, artikel 7 aktiv, artikel 8 mjukraderad, förväntad EAN bevarad och scannersvar entydigt. Preflightens avvikelse isolerades till count() på en grupperad HAVING-fråga. Lokal korrigering hämtar konfliktgrupperna och testar Collection::isEmpty(), samma frågeform som passerade i produktion. Nio supporttester och PHP-syntaxkontroll passerar; ingen produktion ändrad.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #24
Commit edf4aab0c32c659a88706e023e536326aa9b0377 är pushad till main och server-CI har godkänt den. Preflightens konfliktkontroll använder nu den produktionstestade gruppfrågan och Collection::isEmpty() i stället för count() på grupperad HAVING-fråga. Fixpaket foreningskiosk-article-product-unique-410-fix-edf4aab.tar.gz är skapat på remembrance med SHA-256 0b18bdd8f7f26e5f250e1a2e8a273ef2eb9a09c9b0a766277e1c3364a923bc5d. Ingen produktionsrelease aktiverades.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #25
Inaktiv releaseförberedelse för applikationsrelease 882a9c6e43f013d5e4a648b7ad8b838a01873540 passerade efter supportrevision edf4aab0c32c659a88706e023e536326aa9b0377. Verifierat: schema 025, korrigerade produktkopplingar, applikationsvalidering, entydigt scannersvar, oförändrade EAN-gränssnitt samt PHP-FPM-syntax. Ingen current-länk, tjänst, konfiguration, databasrad eller testdata ändrades. Produktionsaktivering återstår och kräver separat godkännande.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #26
Produktionsrelease 882a9c6e43f013d5e4a648b7ad8b838a01873540 aktiverades 2026-09-29 med automatisk rollbackberedskap. Effektiv produktionskonfiguration, schema 025, korrigerade rader, applikationsvalidering, scannerresultat, PHP-FPM-syntax, HTTPS, autentisering, teståtkomst, artikelvägar, skyddade sökvägar och publicerade tillgångar passerade. Apache och php8.3-fpm är aktiva. Ingen databasrad, konfiguration, feature flag, personuppgift, purchase eller backuptimer ändrades av releaseaktiveringen. Manuell verifiering av dubblettval i create/edit samt produkt-, artikel- och kioskskanning återstår.
CA Uppdaterad av Codex API för 2 dagar sedan Handlingar #27
Manuell produktionsverifiering godkänd för unik produktkoppling: användaren bekräftar att samma produkt bara kan kopplas en gång till en aktiv artikel inom föreningen. Den automatiska kontrollen har redan verifierat att EAN 7330018133708 entydigt pekar på A-000004. Fysisk smoke-test av produkt-, artikel- och kioskskanning skjuts upp tills ett skanningsobjekt finns tillgängligt; ärendet hålls öppet för den punkten.