Billa maps directly to the canonical categories. Spar uses a mapping file stores/spar-categories.json.
Each store has a generateCategoryMapping() function which is called once in analysis.js:updateData() and analysis.js:replay(). The function is responsible for
* Fetching the latest categories
* Merging them with already mapped categories
* Report new categories that haven't been mapped yet
* Report categories that have been mapped but are no longer part of the latest set of categories
* Save the merged mappings to disk
This schema might not work for all stores, in which case updateData() and replay() will use a knn approach to figure out the category for an item. See #81
Issues:
- 100g feels wrong for some articles (the cheaper ones)
- priceHistory wasn't changed (so the shown prices were
wrong/inconsistent with changed quantity)