Commit Graph
152 Commits
Author SHA1 Message Date
Christian Vidal Wolf 02aa95d39d Fix Buy Box parsing: only include ASINs with Issue Type/Reason specified 2026-01-29 09:51:34 +01:00
Christian Vidal Wolf 04b208969d Add Buy Box Lost detection feature with visual warning badges 2026-01-29 09:42:39 +01:00
Christian Vidal Wolf 0ea94aefd1 Implement Smart Seasonality blending for products with sparse history (fixes 0-forecast issue) 2026-01-28 15:17:58 +01:00
Christian Vidal Wolf 9d732eeba3 Restore ForecastView UI, Fix default YTD logic, and Refine Seasonality (Specific > Global fallback) 2026-01-28 14:55:35 +01:00
Christian Vidal Wolf cfff95bff2 Fix Global Weights: Fallback to flat distribution if reference data is sparse (<4 months) 2026-01-28 13:24:29 +01:00
Christian Vidal Wolf 894271b549 Fix Seasonality: Use Global Catalog curve as fallback for sparse ASIN history 2026-01-28 13:17:04 +01:00
Christian Vidal Wolf cfce00cd63 Fix seasonality bias: Default to flat weighting if history is sparse (<4 months) 2026-01-28 13:11:08 +01:00
Christian Vidal Wolf b3b8c4f967 Revert week logic and add debug tooltip to VendorStockBadge 2026-01-28 11:50:59 +01:00
Christian Vidal Wolf 090d06b78e Fix Weeks of Coverage: Exclude partial current week from calculation 2026-01-28 11:44:47 +01:00
Christian Vidal Wolf 57f1d66622 Fix Weeks of Coverage: use unfiltered velocity map for robust calculation 2026-01-28 11:01:05 +01:00
Christian Vidal Wolf 22f4a639c0 Implement Weeks of Coverage indicator for Vendor Stock 2026-01-28 10:34:46 +01:00
Christian Vidal Wolf 5915bb4c0e Implement Vendor Stock Filtering across Weekly Sales, Ads, and Forecast views 2026-01-28 10:18:08 +01:00
Christian Vidal Wolf 97071c7b62 feat: integrate Amazon Vendor Stock data across all views and fix local data loading 2026-01-28 09:46:59 +01:00
Christian Vidal Wolf 49decf9b9f Fix: Corrected ForecastView data structure and missing aggregated properties 2026-01-28 09:11:13 +01:00
Christian Vidal Wolf 8be5f1a767 Optimize Weekly Sales performance and fix UI hang 2026-01-27 22:42:59 +01:00
Christian Vidal Wolf 6b4bef66ec Performance optimizations: lazy rendering, row memoization, and data processing loops 2026-01-27 21:43:25 +01:00
Christian Vidal Wolf cb9beecaec Fix application hang by ensuring filter state initialization and adding robustness guards 2026-01-27 20:22:58 +01:00
Christian Vidal Wolf c4213acb3d Implement Excel-style stock filtering with Smart Filters and Range support 2026-01-27 19:03:42 +01:00
Christian Vidal Wolf 0d1d2c77d4 Integrate stock availability data and StockBadge component across all views 2026-01-27 16:51:38 +01:00
Christian Vidal Wolf 219d050bf2 Refactor: Switched all exports to .xlsx and enhanced Weekly Grid export 2026-01-27 15:55:59 +01:00
Christian Vidal Wolf f8c6ecdf29 Forecast View: Hybrid UK/Pan-EU seasonality weighting for Jan-Aug 2026-01-27 09:49:35 +01:00
Christian Vidal Wolf 6379d4a37d fix: resolve triplicated ASIN in Forecast View and improve metadata mapping 2026-01-26 16:50:46 +01:00
Christian Vidal Wolf ccdbcb2824 feat: enhance Forecast 2026 view with dynamic periods, top 50 badges and improved product details 2026-01-26 16:24:09 +01:00
Christian Vidal Wolf e213ef0d16 feat: implement Forecast 2026 (Fc 26) tab with seasonality logic and actual sales comparison 2026-01-26 15:47:36 +01:00
Christian Vidal Wolf 48f185e3bc fix: Weekly Sales Evolution chart now correctly supports CombinedKPIs data structure 2026-01-26 14:36:42 +01:00
Christian Vidal Wolf 60330cb2f5 feat: add Glance Views (GV) to Weekly Sales grid
- Updated WeeklyPivotRow interface and pivotWeeklySalesData to aggregate GV data per week.
- Modified WeeklyGrid.tsx to display GV next to Spend in total header and individual rows.
- Added GV sorting support in the Weekly Sales grid.
2026-01-23 09:35:04 +01:00
Christian Vidal Wolf affae9e994 feat: integrate Glance Views (GV) from Traffic Weekly.xlsx
- types.ts: Added TrafficRecord interface and glanceViews field to CombinedKPIs
- dataProcessor.ts: Added processTrafficExcel parser for Traffic Weekly.xlsx
- dataProcessor.ts: Updated mergeSalesAndAdsData to accept and merge traffic data
- App.tsx: Added trafficData state and handleTrafficUpload handler
- FileUpload.tsx: Added Traffic file upload section for GV data
- AdsPerformance.tsx: Added GV and CVR(GV) summary cards
- AdsPerformance.tsx: Added GV column to product table
2026-01-23 09:07:38 +01:00
Christian Vidal Wolf f774bb47a7 fix: ensure SKU filter applies to Ads data
- dataProcessor.ts: Update filterAdsData to correctly handle SKU filtering using global metadata
- Ensures that drill-down from Weekly Sales correctly isolates the target product in the Ads tab
2026-01-22 14:13:16 +01:00
Christian Vidal Wolf 18e003dd80 feat: implement Ads Performance tab
- types.ts: Add conversions field to CombinedKPIs
- dataProcessor.ts: Populate conversions in mergeSalesAndAdsData
- AdsPerformance.tsx: New component with aggregated advertising metrics and detailed product table
- App.tsx: Add Ads view to switcher and render AdsPerformance component
- Icons.tsx: Added icon support for the new Ads tab
2026-01-22 13:25:06 +01:00
Christian Vidal Wolf 9357aed662 fix: ensure Weekly Sales filters update totals and isolate products
- App.tsx: Add globalAsinMetadata to provide context for ad filtering
- dataProcessor.ts: Update filterAdsData to respect product line filters via metadata
- dataProcessor.ts: Update mergeSalesAndAdsData to use global metadata for ads-only records
- Ensures consistent calculation of totals and visibility when filtering by Line or ASIN
2026-01-22 13:07:43 +01:00
Christian Vidal Wolf fa69a68b57 perf: fix critical O(n²) bottleneck in mergeSalesAndAdsData
- The ads-only metadata lookup was doing a nested forEach (O(ads × sales))
- Now pre-builds asinMetadata map during sales aggregation for O(1) lookups
- This reduces complexity from O(n²) to O(n) for large datasets
- Should dramatically improve loading time for Weekly Sales tab
2026-01-22 11:52:03 +01:00
Christian Vidal Wolf 17441a9b30 fix: correct ad spend over-calculation in Weekly Grid
- Refactored mergeSalesAndAdsData to aggregate by ASIN+Customer+Year+Week
- Each ASIN/Week now produces exactly one output record
- Updated pivotWeeklySalesData to use ASIN as primary key
- Fixed double-counting when same ASIN had multiple SKUs
- Added support for ads-only records (ASINs with spend but no sales)
- Changed App.tsx to use filtered ads data for accurate totals
2026-01-22 11:37:53 +01:00
Christian Vidal Wolf 8b47ab844e fix: include ads-only ASINs in merge and use unfiltered rows for totals
1. Changed weekTotals to use 'rows' instead of 'filteredRows' so totals
   always show complete sums regardless of search/growth filters
2. Added second pass in mergeSalesAndAdsData to include ads records for
   ASINs that have ad spend but no corresponding sales data
2026-01-22 09:24:40 +01:00
Christian Vidal Wolf e2e5314b55 feat: optimize Weekly Sales performance and implement Pan-EU default filter
- Implemented pagination and local search in WeeklyGrid to handle large datasets.
- Refactored Weekly Sales tab to show units and ad spend per SKU.
- Added default Pan-EU country filter (DE, FR, IT, ES) when no country is selected.
2026-01-21 16:28:56 +01:00
Christian Vidal Wolf e93da747a3 feat: show ad spend and remove grouping in weekly sales tab 2026-01-21 15:05:59 +01:00
Christian Vidal Wolf 01c90ad889 feat: add weekly sales tab with WoW growth 2026-01-21 13:19:13 +01:00
Christian Vidal Wolf c7cef7954b fix: restore customer field in grid by normalizing CombinedKPIs fields 2026-01-21 11:04:53 +01:00
Christian Vidal Wolf b6573ebe15 feat: enable ads metrics at any grouping level (SKU, Line, etc.) in Grid 2026-01-21 11:02:12 +01:00
Christian Vidal Wolf 1c2a0e86aa fix: increment DB version and improve ads parsing robustness 2026-01-21 10:52:30 +01:00
Christian Vidal Wolf e5c72c48c5 feat: automatic ads data loading and attributed sales line in chart 2026-01-21 10:46:50 +01:00
Christian Vidal Wolf 1c826c2487 feat: Add Amazon Ads Weekly integration with Dashboard KPIs, Grid summary, and chart lines
- Update AdsRecord interface to support weekly data (year, week, cpc, ctr, acos, conversions)
- Rewrite processAdsExcel to parse multiple sheets (2025, 2026) with 12-column format
- Update mergeSalesAndAdsData to match by ASIN+Country+Year+Week
- Add Advertising Performance section to Dashboard with Ad Spend, Attributed Sales, ACOS, ROAS
- Add Ads toggle button and summary bar to DataGrid
- Add Ad Spend lines (fuchsia dashed) to weekly comparison chart
- Fix import paths in Dashboard.tsx and AdvertisingDashboard.tsx
2026-01-21 09:45:50 +01:00
Christian Vidal Wolf 67951bcac8 feat: Implement Pan-EU grouping in Grid tab
- Added applyPanEUGrouping() helper function in dataProcessor.ts
- Groups Amazon DE/IT/FR/ES as 'Pan-EU' when no customer filter applied
- Shows individual countries when specific filter is selected
- Updated DataGrid to accept hasCustomerFilter prop
- Updated App.tsx to pass filter state to DataGrid
- Keeps Amazon UK and Amazon SC separate
- Verified with browser testing: grouping works correctly
2026-01-20 12:59:35 +01:00
Christian Vidal Wolf 98aba3e36b feat: Add European number formatting with dots as thousand separators
- Updated all toLocaleString() calls to use 'de-DE' locale
- Applied to DataGrid, Dashboard, AdvertisingDashboard, TopMovers, geminiService
- Numbers now display as €1.234 instead of €1,234
- Fixed spread operator syntax errors introduced during bulk replacement
- Verified across all tabs: Dashboard, Grid, Advertising
2026-01-20 12:14:13 +01:00
Christian Vidal Wolf bcb1a7a6d1 fix: add cache versioning to invalidate stale data on schema changes 2026-01-17 11:41:41 +01:00
Christian Vidal Wolf 5630d84e10 fix: map product line to LICENSE column (column T) 2026-01-17 11:28:36 +01:00
Christian Vidal Wolf 0075129d76 feat: add Week filter and Grid Growth % columns 2026-01-16 11:47:59 +01:00
Christian Vidal Wolf 6a368ffd1f feat: exclude 2023 data & improve weekly sales tooltip (add Sell Out €) 2026-01-16 11:07:35 +01:00
Christian Vidal Wolf a1ad3aa944 feat: restrict data to Amazon customers only (DE/FR/ES/IT/UK/SC) 2026-01-16 10:44:43 +01:00
Christian Vidal Wolf 470db20458 feat: Automate Dropbox data loading with Vite proxy 2026-01-16 10:20:22 +01:00
Christian bde9d323f1 feat: Integrate advertising data and dashboard
Adds functionality to process and display advertising data alongside sales data. This includes:
- Introducing a new `AdvertisingDashboard` component.
- Modifying `FileUpload` to accept advertising CSVs.
- Updating `App.tsx` to manage and display both sales and ad data.
- Enhancing `dataProcessor.ts` to handle advertising CSV parsing and merging.
- Adding a `MegaphoneIcon` for advertising-related UI elements.
- Defining new types for advertising records and combined KPIs.
2025-12-11 15:08:01 +01:00