Portal Retail Sales page: 30-day orders/revenue/units/AOV, daily charts, top products
Home dashboard cards for 30-day shop sales and revenue
Stacks on #2. Merge that first, then retarget master if needed.
Test plan
Sales page requires login; empty state with no paid orders
Paid/fulfilled in the last 30 days counted; unpaid/old excluded
Home dashboard shows 30-day sales count
manage.py test shop
## Summary
- Closes #3
- Portal Retail **Sales** page: 30-day orders/revenue/units/AOV, daily charts, top products
- Home dashboard cards for 30-day shop sales and revenue
- Stacks on #2. Merge that first, then retarget `master` if needed.
## Test plan
- [ ] Sales page requires login; empty state with no paid orders
- [ ] Paid/fulfilled in the last 30 days counted; unpaid/old excluded
- [ ] Home dashboard shows 30-day sales count
- [ ] `manage.py test shop`
Portal Retail gets a Sales page for paid/fulfilled volume, daily bars, and top products so the storefront can show performance without a third-party analytics tool.
Closes#3
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
masterif needed.Test plan
manage.py test shop