Skip to content

Nährwerte-Autofill beim Scan + Fix: syncId-Import-Kollision#96

Merged
BEKO2210 merged 2 commits into
mainfrom
claude/pwa-world-leading-strategy-vivkbt
Jun 15, 2026
Merged

Nährwerte-Autofill beim Scan + Fix: syncId-Import-Kollision#96
BEKO2210 merged 2 commits into
mainfrom
claude/pwa-world-leading-strategy-vivkbt

Conversation

@BEKO2210

Copy link
Copy Markdown
Owner

Nährwerte automatisch beim Scan + Fix für Import-Crash

Zwei Dinge in dieser PR.

1. Nährwerte automatisch beim Barcode-Scan übernehmen

Ergänzt den kalorienbasierten Autarkie-Score: Open Food Facts liefert energy-kcal_100g + Packungsgröße (product_quantity) → lookupBarcode berechnet „kcal pro Einheit" und füllt das Feld beim Scannen automatisch vor (nur wenn noch leer). Der Autarkie-Score füllt sich so quasi von selbst.

  • kcalPerUnit = round(kcal/100g × Packungsgröße / 100) (nur bei plausiblen Werten).
  • Durchgereicht über ScannedData → Inline-/Haupt-Scanner → Formular.

2. Fix: ConstraintError auf unique syncId beim Import (gemeldeter Crash)

„Unable to add key to index 'syncId': at least one key does not satisfy the uniqueness requirements."

Ursache: Der Import übernahm die syncId aus dem Backup unverändert — existierte sie lokal schon (Re-Import / Backup vom selben Gerät) und griff die Name+MHD+Lagerort-Duplikaterkennung nicht, kollidierte der &syncId-Unique-Index → Crash.
Fix: Beim Import wird die eingehende syncId nur übernommen, wenn sie frei ist — sonst neu erzeugt. Für Produkte, Lagerorte und Verbrauchslogs. + Regressionstest.

Verifikation

tsc sauber · 110 Unit (1 neuer Kollisions-Test) + 5 E2E grün · Build ok.

https://claude.ai/code/session_011LpmXuRXfBvy84x3Kk8ng8


Generated by Claude Code

claude added 2 commits June 15, 2026 17:12
Open Food Facts liefert energy-kcal_100g + Packungsgröße (product_quantity)
-> lookupBarcode berechnet daraus "kcal pro Einheit" und füllt das neue
kcal-Feld beim Scannen automatisch vor (nur wenn das Feld noch leer ist).
So füllt sich der kalorienbasierte Autarkie-Score quasi von selbst.

- utils.lookupBarcode: nutriments + product_quantity abgefragt, kcalPerUnit
  = round(kcal100 * packGröße / 100) (nur bei plausiblen Werten).
- ScannedData + InlineScanner/handleScanned + BarcodeScanner reichen
  kcalPerUnit bis ins Formular durch.

https://claude.ai/code/session_011LpmXuRXfBvy84x3Kk8ng8
Re-Import eines Backups (oder Import auf demselben Gerät) konnte den
&syncId-Unique-Index verletzen: "Unable to add key to index 'syncId'…".
Ursache: Import übernahm die syncId aus dem Backup unverändert, auch wenn
sie lokal bereits existierte (und die Name+MHD+Lagerort-Duplikaterkennung
nicht griff).

Fix: Beim Import wird die eingehende syncId nur übernommen, wenn sie frei
ist — sonst wird eine neue erzeugt. Gilt für Produkte, Lagerorte und
Verbrauchslogs. + Regressionstest.

https://claude.ai/code/session_011LpmXuRXfBvy84x3Kk8ng8
@BEKO2210 BEKO2210 marked this pull request as ready for review June 15, 2026 17:13
@BEKO2210 BEKO2210 merged commit 7945922 into main Jun 15, 2026
2 checks passed
@BEKO2210 BEKO2210 deleted the claude/pwa-world-leading-strategy-vivkbt branch June 15, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants