Admin CRUD under stores menu; partner picks leaf category on create.
Default sync only inserts missing rows and never updates existing ones.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hide WeChat login for shop and partner users, keep verified sessions for seven days, and allow JSSDK camera or album access without an OpenID binding.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default new sub-accounts to store:create+store:manage, backfill empty permissions on /partner/me, and treat legacy store staff as allowed to mutate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow store:create/manage sub-accounts to edit, open/close, and re-upload media; dedupe ENV photos on write/read and replace via media API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Gate dashboard/stores/orders by permission and move dashboard auth to method level so leaderboard stays open without toasting 403s.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose same-primary ranking on home/me for all staff including warehouse roles, and open the leaderboard API without business permission gates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Serve user/shop/partner H5 under /user/, /shop/, /partner/ on a single authorized domain; update nginx, SSL script, and router base paths.
Co-authored-by: Cursor <cursoragent@cursor.com>