1.11.7
⚙️ Patch 1.11.7 — Otto sold-out offers, n8n warm runners, Amazon/Plenty naive datetimes
🚀 Summary
- Otto repricer — Offers marked leider ausverkauft are ignored; if every offer on the frame is sold out, treat as solo buybox →
max_price (no undercut of dead prices).
- n8n Code runners — Keep the JS runner warm (
AUTO_SHUTDOWN_TIMEOUT=0) so Code nodes stop timing out after idle exit + cold start.
- Omni Amazon / Plenty order import — Fix
Datetime values must have timezone information on flush; optional Calculate fees & profits on Amazon import.
✨ Details
Otto — sold-out competitor offers
| Area |
Behavior |
| Detect |
Text leider ausverkauft (optionally in .of_offers-delivery__soldout-message) |
| Pricing |
Sold-out rows are excluded from buybox / competitor price |
| Not skipped |
Fast ausverkauft = low stock, still buyable → normal repricing |
| All sold out |
Real rows present but only sold-out → solo buybox (raise toward max_price) |
| Empty shell |
Still not solo (blocked/incomplete HTML must not jump to max) |
| Example |
S0BFK0ON / S0BFK0ON8OVJ — one sold-out offer → no active competition |
n8n — task request timeouts
| Variable |
Where |
Default |
Purpose |
N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT |
runners |
0 |
Do not kill JS child after 15s idle |
N8N_RUNNERS_MAX_CONCURRENCY |
runners |
5 |
Concurrent Code tasks per runner |
N8N_RUNNERS_TASK_REQUEST_TIMEOUT |
main n8n |
600 |
Wait longer for a free runner offer |
The localStorage is not available line in runner logs is harmless Node noise.
Omni — Amazon / Plenty timestamps + fees toggle
| Area |
Behavior |
| Cause |
SQLModel timezone-aware datetime vs Postgres TIMESTAMP WITHOUT TIME ZONE |
| Fix |
NAIVE_DATETIME on amazon_orders / returns, plenty_orders / retours / pending, credentials |
| Amazon UI |
Profit tab switch Calculate fees & profits → calculate_fees on POST /amazon/orders/sync |
| Fees off |
Faster import; fee/profit columns left empty |
📌 Notes
- Redeploy service-multi-repricer (Otto sold-out).
- Redeploy n8n + n8n-runner / n8n-runner-2 (warm runners).
- Redeploy service-omni (Amazon/Plenty datetime + fees query param); refresh frontend for the Profit tab switch.
- See n8n for runner idle / timeout guidelines.
📁 Files
backend/service_multi-repricer/app/services/otto/otto_service.py
backend/service_multi-repricer/app/tests/test_otto_offers_soldout.py
backend/service_multi-repricer/app/schemas/omni_sales.py
backend/service_omni/app/schemas/amazon_credentials.py
backend/service_omni/app/schemas/plenty.py
backend/service_omni/app/api/v1/endpoints/amazon.py
backend/service_omni/app/services/amazon/spapi_client.py
frontend/src/pages/Statistics/Tabs/ProfitTab.jsx
frontend/src/services/api/omni/statistics.js
docker-compose.yml / docker-compose-portainer.yml
docs/docs/infrastructure/n8n.md
docs/docs/patchnotes/1.11/1.11.7.md — this file