diff --git a/backend/src/services/analytics/BrandPenetrationService.ts b/backend/src/services/analytics/BrandPenetrationService.ts index 64aff02c..88a064ac 100644 --- a/backend/src/services/analytics/BrandPenetrationService.ts +++ b/backend/src/services/analytics/BrandPenetrationService.ts @@ -75,7 +75,7 @@ export class BrandPenetrationService { DATE(sps.captured_at) AS date, COUNT(DISTINCT sps.dispensary_id) AS dispensary_count FROM store_product_snapshots sps - WHERE sps.brand_name = $1 + WHERE sps.brand_name_raw = $1 AND sps.captured_at >= $2 AND sps.captured_at <= $3 AND sps.is_in_stock = TRUE @@ -368,23 +368,23 @@ export class BrandPenetrationService { const result = await this.pool.query(` WITH start_counts AS ( SELECT - brand_name, + brand_name_raw AS brand_name, COUNT(DISTINCT dispensary_id) AS dispensary_count FROM store_product_snapshots WHERE captured_at >= $1 AND captured_at < $1 + INTERVAL '1 day' - AND brand_name IS NOT NULL + AND brand_name_raw IS NOT NULL AND is_in_stock = TRUE - GROUP BY brand_name + GROUP BY brand_name_raw ), end_counts AS ( SELECT - brand_name, + brand_name_raw AS brand_name, COUNT(DISTINCT dispensary_id) AS dispensary_count FROM store_product_snapshots WHERE captured_at >= $2 - INTERVAL '1 day' AND captured_at <= $2 - AND brand_name IS NOT NULL + AND brand_name_raw IS NOT NULL AND is_in_stock = TRUE - GROUP BY brand_name + GROUP BY brand_name_raw ) SELECT COALESCE(sc.brand_name, ec.brand_name) AS brand_name, diff --git a/findagram/frontend/public/manifest.json b/findagram/frontend/public/manifest.json index ee608dba..fcc283f4 100644 --- a/findagram/frontend/public/manifest.json +++ b/findagram/frontend/public/manifest.json @@ -7,16 +7,6 @@ "src": "favicon.ico", "sizes": "64x64 32x32 24x24 16x16", "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" } ], "start_url": ".", diff --git a/findagram/frontend/src/api/client.js b/findagram/frontend/src/api/client.js index 1b7429d2..1db1e056 100644 --- a/findagram/frontend/src/api/client.js +++ b/findagram/frontend/src/api/client.js @@ -373,10 +373,12 @@ export function mapCategoryForUI(apiCategory) { * Map API brand to UI-compatible format */ export function mapBrandForUI(apiBrand) { + // API returns 'brand' field (see /api/v1/brands endpoint) + const brandName = apiBrand.brand || apiBrand.brand_name || ''; return { - id: apiBrand.brand_name, - name: apiBrand.brand_name, - slug: apiBrand.brand_name?.toLowerCase().replace(/\s+/g, '-'), + id: brandName, + name: brandName, + slug: brandName ? brandName.toLowerCase().replace(/\s+/g, '-') : '', logo: apiBrand.brand_logo_url || null, productCount: parseInt(apiBrand.product_count || 0, 10), dispensaryCount: parseInt(apiBrand.dispensary_count || 0, 10), diff --git a/findagram/frontend/src/pages/findagram/Brands.jsx b/findagram/frontend/src/pages/findagram/Brands.jsx index 662cd0d1..3966d90b 100644 --- a/findagram/frontend/src/pages/findagram/Brands.jsx +++ b/findagram/frontend/src/pages/findagram/Brands.jsx @@ -27,7 +27,7 @@ const Brands = () => { }, []); const filteredBrands = brands.filter((brand) => - brand.name.toLowerCase().includes(searchQuery.toLowerCase()) + brand.name && brand.name.toLowerCase().includes(searchQuery.toLowerCase()) ); // Group brands alphabetically