Commit Graph
113 Commits
Author SHA1 Message Date
Christian Vidal Wolf e1e6f127be feat: Add UK inventory sync from Dropbox
- Create new API endpoint api/fetch-uk-inventory.ts
- Add processUKInventoryExcel function in dataProcessor.ts
- Update handleVendorStockFetch to load PANEU + UK in parallel
- Configure Vite proxy for UK inventory endpoint
- UK stock correctly populates 'uk' field in vendorStockMap
2026-02-02 09:24:49 +01:00
Christian Vidal Wolf 7e58e8aba4 feat: Sync PANEU inventory from Dropbox
- Add new API endpoint for PANEU stock from Dropbox
- Update handleVendorStockFetch to use new endpoint
- Configure Vite proxy for local development
2026-02-02 09:13:20 +01:00
christian.vidal efbdfc41e5 Refine YTD Logic: Allow full historical data when Month/Week filters are active 2026-01-29 21:11:29 +01:00
christian.vidal 9200c554e1 Fix Forecast Seasonality: Process weights using global data even when filtered 2026-01-29 20:56:19 +01:00
christian.vidal db2c67060b Implement Dashboard-specific YTD filtering 2026-01-29 20:31:44 +01:00
christian.vidal 7a2b47af21 Fix syntax error in App.tsx: Restore missing useMemo declaration 2026-01-29 20:29:18 +01:00
christian.vidal 2c6b9c9f5a Implement Grid-specific YTD filtering and default sorting 2026-01-29 20:27:19 +01:00
christian.vidal 5dce7992e1 Fix Week Coverage calculation in DataGrid 2026-01-29 18:56:31 +01:00
Christian Vidal Wolf fcc8096b01 Integrate Buy Box warnings in Grid tab; fix prop regression in App.tsx 2026-01-29 13:45:41 +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 d19f0cddac Optimize Forecast View performance and implement WOC filter across views 2026-01-29 08:47:03 +01:00
Christian Vidal Wolf bc6ec6dff8 Fix Forecast Period discrepancy by excluding month filter from seasonality data 2026-01-28 16:38:06 +01:00
Christian Vidal Wolf d40740fce7 Optimize performance (persistent tabs, pagination) and add sortable columns + stock badges to ForecastView 2026-01-28 15:11:47 +01:00
Christian Vidal Wolf 1886554a31 Fix Weekly Grid WOC and Restore Forecast View Graph/UI 2026-01-28 12:35:40 +01:00
Christian Vidal Wolf 2affd868db Fix ReferenceError crash: Move velocityMap calculation to top of App component 2026-01-28 11:39:17 +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 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 6c788d335f Refactor: Unified Top 50 Badge logic and shared component integration 2026-01-28 08:55:09 +01:00
Christian Vidal Wolf 87e097224b Refine Top 50 badge visibility based on customer filters 2026-01-28 08:31:52 +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 db65509bab Fix Ads data mismatch, optimize Forecast performance, and add Excel-style in-column stock filtering 2026-01-27 21:12:27 +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 f0d920de84 fix: resolve syntax error in App.tsx (handleTrafficFetch) 2026-01-27 17:00:32 +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 19fbd12e77 Auto-Sync and Manual Refresh: Ensured fresh data on reload and added Sync button 2026-01-27 15:02:18 +01:00
Christian Vidal Wolf 5cac85c693 Fix: Ensure product metadata is built globally for Forecast View 2026-01-27 10:22:06 +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 4e8b84bcd3 Refine Forecast View: Dynamic 'Actual Units Sales' based on customer filters 2026-01-27 09:37:58 +01:00
Christian Vidal Wolf 23d3e56edc Refine Forecast View: compact UI and dynamic UK data integration 2026-01-27 09:31:50 +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 83470042b4 style: clean header and refine Group By filter dropdown in Grid tab 2026-01-26 16:06:39 +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 3de971801d feat: add Top 50 filter button and badges to Ads Performance tab 2026-01-26 10:51:30 +01:00
Christian Vidal Wolf 0fc6f2324d feat: separate Pan-EU and UK Top 50 results in Weekly Sales
- App.tsx: Always calculate both EU and UK Top 50 maps.
- WeeklyGrid.tsx: Added top50Mode state and EU/UK toggle.
- WeeklyGrid.tsx: Updated filtering and sorting to respect the selected Top 50 mode.
- WeeklyGrid.tsx: Enhanced product badges to show selected group rank.
2026-01-23 10:07:37 +01:00
Christian Vidal Wolf 7a0375fca7 feat: auto-load Traffic data from Dropbox on app startup
- api/fetch-traffic.ts: New endpoint to fetch Traffic Weekly.xlsx from Dropbox
- App.tsx: Added handleTrafficFetch function and auto-fetch on initialization
2026-01-23 09:23:42 +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 b23b2fba96 feat: allow drill-down from Weekly Sales to Ads tab via SKU
- WeeklyGrid.tsx: Add onDrillDown prop and make SKU identifiers clickable
- App.tsx: Implement handleSkuDrillDown to switch view and filter by SKU
2026-01-22 14:06:53 +01:00
Christian Vidal Wolf 25756ae763 feat: implement period-over-period comparison in Ads tab
- AdsPerformance.tsx: Automatically activate comparison view when 2 periods are selected
- AdsPerformance.tsx: Add growth percentages and trend indicators to table and summary
- AdsPerformance.tsx: Implement chronological sorting for previous vs current periods
- App.tsx: Pass filters to AdsPerformance component
2026-01-22 13:37:07 +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 0214509ffe feat: implement country-aware Top 50 ranking
- App.tsx: Update top50Ranking2025 to calculate ranks based on active country filters
- App.tsx: Add split Pan-EU vs UK ranking when no filters are active
- WeeklyGrid.tsx: Add support for multiple ranking badges (EU/UK)
- WeeklyGrid.tsx: Enhance Top50Badge with labels and color themes
- WeeklyGrid.tsx: Update sorting and filtering logic for new ranking structure
2026-01-22 13:01:04 +01:00
Christian Vidal Wolf 1c8ec7b835 feat: add Top 50 Best Sellers badge in Weekly Sales
- Calculate static Top 50 ranking based on 2025 Sell Out (independent of filters)
- Display trophy badge with position number for Top 50 ASINs
- Badge shows 🏆 followed by rank (1-50)
- Ranking stays static regardless of date/country filters applied
- Pre-computed ranking based on cumulative 2025 data
2026-01-22 12:02:21 +01:00
Christian Vidal Wolf 15f5b08c71 perf: add lazy loading for heavy components
- Use React.lazy for DataGrid, WeeklyGrid, and TopMovers
- Add Suspense with LoadingSpinner fallback for smooth transitions
- Enables code splitting for faster initial page load
- Combined with previous O(n²) fix, should significantly improve performance
2026-01-22 11:55:23 +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 01c90ad889 feat: add weekly sales tab with WoW growth 2026-01-21 13:19:13 +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