1.11.21
⚙️ Patch 1.11.21 — Qogita catalog import fix, wholesale suppliers & Discord seller links
🚀 Summary
Qogita catalog download now completes after upsert (analyze/Discord failures no longer mark the catalog failed). Stock uses Total Inventory of All Offers; EU decimals parse correctly. Discord targets-met Seller links open GTIN search (or homepage). Five prod supplier columns (parfumeria, bjutip, bratsy, soleluna, zaafaran) are wired into best-offer / schema.
✨ Details
Qogita catalog import
| Area |
Behavior |
| Status |
Upsert → completed; analyze + Discord run after and cannot rewrite a good import to failed |
| Discord |
Sent from the analyze step (fresh EK/targets), not from CSV download alone |
| Logging |
Logs unique_eans, updated, inserted, cleared (and upserted=updated+inserted) |
| Stock |
Prefers Total Inventory of All Offers (fallback: Lowest Priced Offer Inventory) |
| Price |
EU 45,33 / 1.234,56, BOM headers, ,/;/\t delimiters |
Wholesale suppliers
| Area |
Behavior |
| Columns |
parfumeria_*, bjutip_*, bratsy_*, soleluna_*, zaafaran_* on wholesale_shopping_list |
| Best offer |
Included in WHOLESALE_SUPPLIERS for targets-met |
| Schema |
Startup ensure_wholesale_supplier_columns adds any missing *_preis / *_bestand pairs |
Discord seller hrefs (GTIN search)
| Seller |
Link |
| Qogita |
qogita.com/categories/?query={gtin} |
| Nunu |
de.nunutrading.com/search.php?search_query={gtin} |
| Parfumeria |
parfumeria.store/search?q={gtin} |
| Rney |
rneydistribution.com/site/wholesale?ProductsSearch[main_search]={gtin} |
| Parfumtrend |
parfumtrend.com/catalogsearch/result/?q={gtin} |
| Parfum Wholesales |
m2.znzelectronics.cz/catalogsearch/result/?q={gtin} |
| Bjutip |
bjutip.com/...&search={gtin} |
| Bratsy |
wholesale.brasty.com/products?q={gtin} |
| Soleluna |
wholesale-perfumes.eu/search/?search={gtin} |
| Zaafaran |
zaafaran.eu/?s={gtin}&post_type=product |
No public product search for Jadro, Polarmoda, Engelsa, B2B Luxury, Novaengel, Naypes, Nexalia — Seller stays plain text or homepage only.
📌 Notes
- Redeploy service-omni. Apply
docker/postgres/updates/add_wholesale_supplier_columns_2026_10.sql (or restart omni for the column patch).
- Request a fresh Qogita catalog after deploy so stock refreshes to total inventory.
✅ Verify
- Request catalog → status
completed; logs show upsert counts; Discord only after analyze.
- EAN
3614273069533 → qogita_preis=45.33, qogita_bestand=1740 (total inventory).
- Targets-met Discord: Seller for Qogita/Nunu/Bratsy/… is a clickable GTIN search link.
pytest app/tests/test_qogita_catalog_unit.py app/tests/test_wholesale_offers.py app/tests/test_watchlist_links.py
📁 Files
backend/service_omni/app/services/qogita/catalog.py — parse, analyze Discord, upsert logging
backend/service_omni/app/crud/qogita_catalog.py — apply counts
backend/service_omni/app/services/qogita/wholesale_offers.py — suppliers + GTIN URLs
backend/service_omni/app/services/price_alerts/discord_notifications.py — seller links
backend/service_omni/app/schemas/wholesale_shopping_list.py
backend/service_omni/app/core/schema_patches.py, main.py
docker/postgres/updates/add_wholesale_supplier_columns_2026_10.sql
docker/postgres/tables/wholesales_shopping_list.sql
backend/service_omni/app/tests/test_qogita_catalog_unit.py, test_wholesale_offers.py, test_watchlist_links.py
docs/docs/patchnotes/1.11/1.11.21.md — this file