Skip to content

1.5.1

🩹 Patch 1.5.1 — FBA international_pricing persistence & repricing behavior

🚀 New Features

  • Dashboard: toggle ignore per marketplace on the FBA Articles page and persist it to the database.
  • Frontend ensures ignore is always included in PUT payloads for /api/v1/multi/articles/{sku}/fba.
  • Repricing program change: when a marketplace is not DE, the repricer now uses FBA_EFN logic for FBA articles (previous behaviour retained for DE).

🔧 Improvements

  • Backend now accepts typed FBACountryPricing inputs and tolerates Pydantic model instances when merging international_pricing.
  • Merge logic in update_fba_details normalizes incoming data, ensures every region has an explicit ignore flag, and merges min_bound / max_bound safely.
  • Defensive persistence: added a robust fallback using SQLAlchemy Core to force-update the international_pricing JSONB when a race overwrites the field.
  • Reduced noisy logging: retained essential info/error messages and moved verbose payload traces to debug level.

🐛 Bug Fixes

  • Fixed missing ignore persistence when updating FBA details from the dashboard — ignore=True now survives concurrent updates.
  • Fixed raw-SQL fallback that failed with psycopg2 can't adapt type 'dict' by using SQLAlchemy Core (proper JSONB binding).

Files changed

Notes for operators

  • No DB schema migration required for these fixes — we operate on the existing fba_details.international_pricing JSONB column.
  • If race conditions still surface in heavy concurrent environments, consider a transactional retry loop or explicit SELECT ... FOR UPDATE around the fba_details row during updates.

SQL

  • N/A (no new migrations in this patch; changes are behavioural and in-code only)