Commit Graph
407 Commits
Author SHA1 Message Date
Christian Vidal WolfandClaude Sonnet 4.6 47e2513b79 feat: add Supabase email auth with signup/login gate
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 12:44:12 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 76d901fcde feat: remove MKT and Experiments tabs and all related code
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-06-12 08:29:47 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 9f9c0c2975 feat: add cumulative YoY sales chart to Dashboard
New line chart shows accumulated sell-out (€) or units month by month,
comparing all available years on the same axis for like-for-like
year-over-year tracking.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-20 08:20:26 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 b31911a9df fix: exclude 2023 data across sales and ads (incomplete year)
Filter sales records with year > 2023 and skip ads Excel sheets
for year <= 2023. Bump schema version to 4 to invalidate cached
2023 records in IndexedDB.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-20 08:10:36 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 6426b641c1 fix: cap prior year ad data to current week in Dashboard
Pass ytdFilteredAdsData instead of filteredAdsData so previous years
are capped at the same max week as the current year, enabling
like-for-like YoY advertising comparisons.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-20 08:08:11 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 43a532a6f0 fix: use adsData directly for ad spend totals in DataGrid header
Previously the Filtered Totals header row summed ad spend from pivot rows,
which excluded ads-only records (ASINs with zero sales) due to isRealSale filter.
Now uses adSpendByYear memo from raw adsData, matching Dashboard calculation.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-11 15:19:40 +02:00
Christian Vidal Wolf a13ddcb46c debug: console logs for ad spend diff 2026-05-11 15:06:41 +02:00
Christian Vidal Wolf 4d52928321 fix: resolve DataGrid search and filtering issues by consolidating search logic in filterData and fixing aggregation-aware filtering 2026-04-30 10:51:56 +02:00
Christian Vidal Wolf 4fbe7570a9 fix: resolve DataGrid product rendering failure by updating isRealSale to support CombinedKPIs and ignoring non-flat columns in filterData 2026-04-30 10:38:46 +02:00
Christian Vidal Wolf a75fd32a05 Fix: Update PANEU Stock Dropbox link 2026-04-27 12:08:10 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 a91f353e40 Fix: merge Avg. Coverage into TOTALS sticky cell to fix column misalignment
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 11:53:39 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 ee274b267f Fix: render TOTALS tooltip via ReactDOM portal to document.body, escaping all stacking contexts
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 11:49:42 +02:00
Christian Vidal Wolf 490cb4a96b Fix: improve Vendor stock parsing robustness and ASIN extraction for B0D14YBNWB 2026-04-27 11:48:47 +02:00
Christian Vidal Wolf e7f48af099 Fix: remove duplicated Top50 ranking badges, keep only leftmost instance 2026-04-27 11:44:17 +02:00
Christian Vidal Wolf 1fc494fc3f Fix: consolidate stock badges and update WOC calculation to include internal warehouse stock 2026-04-27 11:40:36 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 6ba07c60f6 Fix: tooltip on TOTALS row follows mouse cursor and renders above it
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 11:37:10 +02:00
Christian Vidal Wolf 99e4b2c34b Fix: restore Top50 ranking badges (white/gradient) next to inventory badges across all views 2026-04-27 11:33:07 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 9f8e51e2f3 Fix: use fixed-position tooltip on TOTALS row to escape overflow container clipping
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 11:28:49 +02:00
Christian Vidal Wolf b01401272c Fix: ensure Amazon stock badges are visible in Profitability and Top Movers tabs 2026-04-27 11:25:09 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 eadbaf3492 Feat: add hover tooltip on TOTALS row in Weekly Sales with WoW and YoY comparison
Shows previous week and same week prior year values (Units, Revenue, Ads Spend, GV) with % change indicators when hovering any week cell in the TOTALS row.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 11:22:53 +02:00
Christian Vidal Wolf 550269724a Fix: export isAllowedCustomer to resolve build error 2026-04-20 13:20:17 +02:00
Christian Vidal Wolf 117aa0626f Fix: implement definitive revenue integrity filter with ASIN validation and strict marketplace whitelist 2026-04-20 13:19:14 +02:00
Christian Vidal Wolf 862b687835 Fix: implemented top-level UI fail-safe to correctly filter out marketing spend and ensure Dashboard totals match Dropbox 1.87M 2026-04-20 13:12:55 +02:00
Christian Vidal Wolf f54aafb44c Fix: final refinement of revenue filtering to ensure Dashboard totals match Dropbox. Enforced Amazon-only marketplace check. 2026-04-20 13:07:25 +02:00
Christian Vidal Wolf f218db76ad Fix: correctly filter Dashboard revenue by enforcing Marketplace and Unit rules in filterData 2026-04-20 13:04:41 +02:00
Christian Vidal Wolf 8e81fc8500 Fix: restore missing React imports in WeeklyGrid.tsx 2026-04-20 12:58:36 +02:00
Christian Vidal Wolf 1e7c88ffad Fix: Corrected 2026 revenue discrepancy, resolved WeeklyGrid initialization crash, and restored Week Coverage data 2026-04-20 12:54:40 +02:00
Christian Vidal Wolf 11ddcb16c5 fix: add fallback UI to VendorStockBadge to prevent empty WOC lines when data is missing 2026-04-17 12:48:18 +02:00
Christian Vidal Wolf c1cf79cb6b feat: move Week Coverage to its own dedicated sticky column per SKU and clean up totals row 2026-04-17 12:41:05 +02:00
Christian Vidal Wolf 59c4b3a204 fix: resolve ReferenceError by moving aggregateWoc after filteredRows initialization 2026-04-17 12:37:59 +02:00
Christian Vidal Wolf 38f16aac89 feat: improve Week Coverage visibility, calculation robustness, and add aggregate WOC to grid totals and forecast view 2026-04-17 12:35:25 +02:00
Christian Vidal Wolf aa4a916c5d fix: Restore missing top50Ranking2025 definition 2026-04-17 08:14:50 +02:00
Christian Vidal Wolf 5088e04d5f fix: Define missing filteredBsrData to resolve critical ReferenceError 2026-04-17 08:12:18 +02:00
Christian Vidal Wolf 73625526ed fix: exhaustive zero-spread safety audit and render logging 2026-04-16 12:18:52 +02:00
Christian Vidal Wolf fbb6c75197 perf: disable StrictMode and optimize App calculations to handle 120k+ rows 2026-04-16 12:09:52 +02:00
Christian Vidal Wolf 630941c96a fix: resolve white screen by removing stack-unfriendly spread operators and adding diagnostic logs 2026-04-16 12:02:49 +02:00
Christian Vidal Wolf 348821cd49 fix: exhaustive visibility fix for Sales/Ads data including inclusive filtering and permissive header validation 2026-04-16 11:49:48 +02:00
Christian Vidal Wolf adf72f6f96 fix: restore sales visibility by normalizing marketplace names in Sales pipeline 2026-04-16 11:41:58 +02:00
Christian Vidal Wolf 8c0401f3d5 fix: relax data filters and marketplace mapping to restore sales visibility 2026-04-16 11:37:33 +02:00
Christian Vidal WolfandQwen-Coder d2ee6c3bf0 fix: add missing props destructuration in Dashboard component
- Added stockMap, vendorStockMap, buyBoxLostMap, top50Mode to Dashboard props destructuring
- This fixes 'stockMap is not defined' error in TopMovers

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 15:14:11 +01:00
Christian Vidal WolfandQwen-Coder 579e96cf5d fix: add null safety checks for years in TopMovers
- Add || null to years array access to prevent undefined values
- Add !currentYear || !previousYear to insufficient data check
- This prevents errors when filtered data has less than 2 years

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 15:12:10 +01:00
Christian Vidal WolfandQwen-Coder 3c199715b9 fix: remove debug code from BuyBoxWarningBadge causing runtime error
- Removed debug console.log that was accessing data before null check
- Fixed colSpan in TopMovers empty state message (7 -> 10 columns)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 15:09:07 +01:00
Christian Vidal WolfandQwen-Coder 19f1137a30 feat: add stock, vendor and buybox badges to Top Movers table
- Added StockBadge, VendorStockBadge and BuyBoxWarningBadge to TopMovers component
- Updated Dashboard to pass stockMap, vendorStockMap, buyBoxLostMap and top50Mode props
- Updated App.tsx to pass the required maps to Dashboard
- Table now shows 3 new columns: Stock (GMBH), Vendor (Amazon Warehouse), and Buy Box status

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 15:05:11 +01:00
Christian Vidal WolfandQwen-Coder 167273e659 fix: Top Movers table now responds to dashboard filters
Changed rawData prop from rawData to ytdFilteredData so the Top Movers
component respects all active filters (customer, year, month, week,
product line, SKU, title, ASIN, stock)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 14:57:09 +01:00
Christian Vidal Wolf b304e0ddb8 fix: resolve maximum call stack size exceeded error and optimize master table 2026-03-16 13:19:21 +01:00
Christian Vidal WolfandClaude Sonnet 4.6 845a8e0ae6 fix: resolve black screen caused by React hooks violation in WaterfallModal
Move useMemo before early return in WaterfallModal to comply with Rules of Hooks.
Wrap App with ErrorBoundary so future render crashes show an error panel instead of a silent black screen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 13:04:42 +01:00
Christian Vidal Wolf 753b312412 fix(mkt): ensure all ad spend is aggregated correctly in MKT tab including unassigned spend 2026-03-12 17:07:13 +01:00
Christian Vidal Wolf eb20fe2878 fix: include ad rows without ASINs to match total PPC spend (Sponsored Brands fix) 2026-03-12 16:59:11 +01:00
Christian Vidal WolfandClaude Sonnet 4.6 777a01e417 fix: use all-country ads for MKT tab to match Excel file total
filteredAdsData applies PAN_EU default when no marketplace is selected,
cutting UK/other spend and showing 118k instead of the full 151k.
mktAdsData skips the PAN_EU restriction: no customer filter = all
countries, still respects explicit customer/year/week selections.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 16:52:06 +01:00
Christian Vidal WolfandClaude Sonnet 4.6 910e6d2a4d fix: include empty-ASIN ad records so MKT total matches ADs Weekly
Removed the `if (asin)` guard so records without a product ASIN
(e.g. campaign-level rows) accumulate in adsSpendMap and appear as
an 'Unassigned Ad Spend' row, ensuring the total PPC spend is the
same as in the ADs Weekly tab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 16:44:36 +01:00