feat: generic shopping names — group products by shopping_name
- Add shopping_name column to products table - Add computeShoppingName() PHP auto-assign function: * Curated keyword map: all salumi/cold cuts → 'Affettato' * Bring! catalog back-translation: 'Latte di Montagna' → 'Latte' * Fallback: first significant token capitalized - Migrate all 210 existing products with auto-computed shopping_name - saveProduct() auto-computes shopping_name on every create/update - smartShopping() groups items by shopping_name: most urgent item is representative, others listed as variants (e.g. 'Affettato' shows Mortadella, Speck, Nduja, Salame, Prosciutto, Schinkenspeck as one row) - _productOnBring() also checks shopping_name for Bring! match detection - addToInventory auto-remove: uses shopping_name-based Bring! key - useFromInventory auto-add: sends shopping_name to Bring! (not raw name), specific product name goes into specification field - Frontend renderSmartItem: shows shopping_name as title, specific product name(s) in italic subtitle line below - _syncOnBringFlags: matches on both name and shopping_name
This commit is contained in:
@@ -1963,6 +1963,14 @@ body {
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.smart-item-specific {
|
||||
font-size: 0.73rem;
|
||||
color: var(--text-muted);
|
||||
margin-top: 1px;
|
||||
line-height: 1.3;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.smart-brand {
|
||||
font-weight: 400;
|
||||
color: var(--text-muted);
|
||||
|
||||
Reference in New Issue
Block a user