1.8.11
βοΈ Patch 1.8.11 β Sentry production fixes & triage automation¶
π Summary¶
- Qogita watchlist push β invalid / unknown GTINs no longer spam Sentry; push uses the resolved catalog GTIN and skips gracefully.
- Qogita catalog import β duplicate GTIN rows in one CSV and concurrent webhook imports no longer cause
wholesale_shopping_listprimary-key violations. - Plenty populate cron β fixed
retry_pending_orders()call, Sellerlogic bulk-update validation, bundle-check 429 handling, and Sheets metadata 429 retries. - Sentry triage automation β project skill + Cursor Automation + webhook script to triage, fix, test, and write patchnotes in one run.
β¨ Improvements¶
Qogita β invalid GTIN push (LAGE-DASHBOARD-7)¶
| Before | After |
|---|---|
Push used local gtin even when catalog resolved a different barcode |
API calls use push_gtin from resolve_push_gtin |
Invalid GTIN 400 logged as error β Sentry noise |
warning + skip row; no Sentry event for expected bad data |
| 322+ events for GTINs not in Qogita catalog | Row skipped as skipped / skipped_not_in_catalog |
Qogita β catalog webhook import (LAGE-DASHBOARD-9 / A)¶
| Before | After |
|---|---|
Duplicate GTIN in same CSV β double INSERT β UniqueViolation |
In-batch dedupe via pending_by_ean |
| Concurrent webhooks could race on insert | IntegrityError retry updates existing rows only |
Omni β pending Plenty orders cron (LAGE-DASHBOARD-8)¶
| Before | After |
|---|---|
retry_pending_orders(db) β TypeError every cron run |
retry_pending_orders() (function opens its own session) |
Plenty β populate workflow¶
| Area | Fix |
|---|---|
| Sellerlogic min/max update (LAGE-DASHBOARD-D) | UpdateAmazonProductsRequest.asins typed as Optional[List[str]] β asins=None valid for bulk update |
| Bundle check 429 (LAGE-DASHBOARD-C) | Rate limit β warning, skip classification (not logged as error / not marked bundle) |
| Google Sheets (LAGE-DASHBOARD-F/J/R/β¦) | retry_on_429 on metadata fetch; removed silent Sheet1 fallback when tab resolution fails |
| Populate cron (LAGE-DASHBOARD-S) | Credential id / username read before async workflow to avoid DetachedInstanceError |
Sentry triage tooling (new)¶
| Asset | Purpose |
|---|---|
.cursor/skills/sentry-triage-fix/SKILL.md |
Local agent: @sentry-triage-fix or fix sentry errors |
.cursor/automations/sentry-triage-fix.workflow.json |
Cursor Automation draft (webhook + Sentry MCP) |
scripts/invoke-sentry-fix-agent.ps1 |
One-command webhook trigger |
Each run ends with a patchnotes draft when code changed (see skill step 7).
π§ Deploy¶
- Rebuild / restart
service-omniandservice-plenty. - Rebuild docs if you publish patchnotes from the repo.
- No database migration.
Optional β re-import Cursor Automation prompt from .cursor/automations/sentry-triage-fix.workflow.json if you use the cloud webhook agent.
β Verify¶
- Qogita push: run Keepa β Qogita push; invalid GTINs should log warnings only, not new Sentry issues.
- Catalog webhook: trigger or replay catalog import; no
wholesale_shopping_list_pkeyerrors. - Plenty cron: next
plenty_orders_runner/ populate cron β noretry_pending_ordersTypeError in logs. - Sheets populate: Plenty article populate with Sheets step β 429 retries in logs, no bogus
Sheet1!range errors after metadata failure. - Sentry triage:
@sentry-triage-fixin Cursor β fixes +docs/docs/patchnotes/1.8/<version>.mdupdated.
β οΈ Notes¶
- Sheets 400 βUnable to parse rangeβ may still occur if the configured spreadsheet tab name/GID does not match the live sheet β fix in Sheets settings, not code.
- Sentry issues are not auto-resolved until fixes are deployed; the triage agent resolves them only after verified code changes.
- LAGE-DASHBOARD-B (catalog_id info log typo) unchanged β informational only.
Files touched¶
service-omni
app/api/v1/endpoints/statistics.pyβretry_pending_orders()call fixapp/crud/qogita_catalog.pyβ catalog row dedupe +IntegrityErrorretryapp/services/keepa/scanner.pyβpush_gtinfor API; invalid GTIN skipapp/services/qogita/qogita_client.pyβis_qogita_invalid_gtin_error; warn on invalid GTIN 400
service-plenty
app/models/sellerlogic.pyβ optionalasinson Amazon update requestsapp/api/v1/endpoints/plenty_article.pyβ cron credential detach fixapp/services/plenty/plenty_manager.pyβ bundle check 429 handlingapp/services/sheets.pyβretry_on_429; no silentSheet1fallback
Tooling / docs
.cursor/skills/sentry-triage-fix/SKILL.md.cursor/automations/sentry-triage-fix.md.cursor/automations/sentry-triage-fix.workflow.jsonscripts/invoke-sentry-fix-agent.ps1docs/docs/patchnotes/1.8/1.8.11.mdβ this file