Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
1.7 KiB
1.7 KiB
Feed sync deltas (seller MVP)
High-value change signals from input feed syncs — without a full history table.
Included
| Signal | Source mapped fields | Where surfaced |
|---|---|---|
| New | GTIN not previously in catalog for this company | Feed options.last_sync_deltas.new, sync job enrichment |
| Price changed | price, sale_price, purchase_price |
counts + product filter sync_change=price |
| Stock changed | stock, quantity, qty |
counts + sync_change=stock |
| Availability changed | availability, stock_status, in_stock |
counts + sync_change=availability |
| Title changed | title, name, product_name |
counts + sync_change=title |
| Other changed | any other mapped key change | counts + sync_change=other |
| Unchanged / skipped | identical mapped JSON / bad rows | existing job counters |
Storage
- Summary (last sync only):
input_feeds.options.last_sync_deltas— replaced each successful sync that processes rows (not when the whole feed file hash is unchanged). - Product flags (latest modifying sync):
raw_products.mapped_data._sync_changes— string array, e.g.["price","stock"]. Replaced on the next content update for that GTIN. Not a durable audit log.
Filters
GET /api/products?kind=unprocessed&sync_change=price (also stock, availability, title, other, new, or any).
Processed list supports the same query param via join to the linked raw row.
Out of scope (MVP)
- Multi-sync historical timelines / per-field before→after values
- Diffs when the entire feed file hash is unchanged (short-circuit)
- Shopify/Woo outbound push change reports