Initial commit of Descrybe v2 without local scratch artifacts.

Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
This commit is contained in:
2026-08-09 22:47:43 +02:00
commit 8580c996c3
1285 changed files with 325780 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# 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