134 lines
2.2 KiB
JavaScript
134 lines
2.2 KiB
JavaScript
// Backend classification constants (mirror of frontend)
|
|
|
|
const ITEM_TYPES = {
|
|
PRODUCE: "produce",
|
|
MEAT: "meat",
|
|
DAIRY: "dairy",
|
|
BAKERY: "bakery",
|
|
FROZEN: "frozen",
|
|
PANTRY: "pantry",
|
|
BEVERAGE: "beverage",
|
|
SNACK: "snack",
|
|
HOUSEHOLD: "household",
|
|
PERSONAL_CARE: "personal_care",
|
|
OTHER: "other",
|
|
};
|
|
|
|
const ITEM_GROUPS = {
|
|
[ITEM_TYPES.PRODUCE]: [
|
|
"Fruits",
|
|
"Vegetables",
|
|
"Salad Mix",
|
|
"Herbs",
|
|
"Organic Produce",
|
|
],
|
|
[ITEM_TYPES.MEAT]: [
|
|
"Beef",
|
|
"Pork",
|
|
"Chicken",
|
|
"Seafood",
|
|
"Deli Meat",
|
|
"Prepared Meat",
|
|
],
|
|
[ITEM_TYPES.DAIRY]: [
|
|
"Milk",
|
|
"Cheese",
|
|
"Yogurt",
|
|
"Butter",
|
|
"Eggs",
|
|
"Cream",
|
|
],
|
|
[ITEM_TYPES.BAKERY]: [
|
|
"Bread",
|
|
"Rolls",
|
|
"Pastries",
|
|
"Cakes",
|
|
"Bagels",
|
|
"Tortillas",
|
|
],
|
|
[ITEM_TYPES.FROZEN]: [
|
|
"Frozen Meals",
|
|
"Ice Cream",
|
|
"Frozen Vegetables",
|
|
"Frozen Meat",
|
|
"Pizza",
|
|
"Desserts",
|
|
],
|
|
[ITEM_TYPES.PANTRY]: [
|
|
"Canned Goods",
|
|
"Pasta",
|
|
"Rice",
|
|
"Cereal",
|
|
"Condiments",
|
|
"Spices",
|
|
"Baking",
|
|
"Oils",
|
|
],
|
|
[ITEM_TYPES.BEVERAGE]: [
|
|
"Water",
|
|
"Soda",
|
|
"Juice",
|
|
"Coffee",
|
|
"Tea",
|
|
"Alcohol",
|
|
"Sports Drinks",
|
|
],
|
|
[ITEM_TYPES.SNACK]: [
|
|
"Chips",
|
|
"Crackers",
|
|
"Nuts",
|
|
"Candy",
|
|
"Cookies",
|
|
"Protein Bars",
|
|
],
|
|
[ITEM_TYPES.HOUSEHOLD]: [
|
|
"Cleaning Supplies",
|
|
"Paper Products",
|
|
"Laundry",
|
|
"Kitchen Items",
|
|
"Storage",
|
|
],
|
|
[ITEM_TYPES.PERSONAL_CARE]: [
|
|
"Bath & Body",
|
|
"Hair Care",
|
|
"Oral Care",
|
|
"Skincare",
|
|
"Health",
|
|
],
|
|
[ITEM_TYPES.OTHER]: [
|
|
"Miscellaneous",
|
|
],
|
|
};
|
|
|
|
const ZONES = [
|
|
"Front Entry",
|
|
"Fresh Foods Right",
|
|
"Fresh Foods Left",
|
|
"Center Aisles",
|
|
"Bakery",
|
|
"Meat Department",
|
|
"Dairy Cooler",
|
|
"Freezer Section",
|
|
"Back Wall",
|
|
"Checkout Area",
|
|
];
|
|
|
|
// Validation helpers
|
|
const isValidItemType = (type) => Object.values(ITEM_TYPES).includes(type);
|
|
|
|
const isValidItemGroup = (type, group) => {
|
|
if (!isValidItemType(type)) return false;
|
|
return ITEM_GROUPS[type]?.includes(group) || false;
|
|
};
|
|
|
|
const isValidZone = (zone) => ZONES.includes(zone);
|
|
|
|
module.exports = {
|
|
ITEM_TYPES,
|
|
ITEM_GROUPS,
|
|
ZONES,
|
|
isValidItemType,
|
|
isValidItemGroup,
|
|
isValidZone,
|
|
};
|