Enable urlencoded body parser, return XFX {code,message} without API envelope, and harden callback payload parsing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add HQ group for default and per-page share title/desc/image; expose via client-config and wire all mini-user share entry points.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store list/detail package flow, configurable WeChat mini brand assets and customer service, shop H5 home refresh.
Co-authored-by: Cursor <cursoragent@cursor.com>
- HQ stores: partner column uses companyName/name/phone via partnerOptionLabel
- Dev plan: version RELEASED auto-marks tasks RELEASED and tickets PUBLISHED with releasedVersionNo
- mini-user/h5-shop/h5-partner v3.4.13 UX fixes (store UI, iOS scan OAuth, partner login guard)
- Docs: v3.4.13 dev doc + status audit updates
Co-authored-by: Cursor <cursoragent@cursor.com>
Add log_promo_event for scan/attribution/register/order with IP; admin metrics APIs and ECharts on promo detail page.
Co-authored-by: Cursor <cursoragent@cursor.com>
When XFX route callback reports status=5 or statusName containing 签收, map to COMPLETED instead of PENDING_RECEIVE; document in v3.4.13 docs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add knowledge document GET/PUT and admin edit UI; auto-create support tickets on client 400 validation errors across user/shop/partner apps; batch create tasks and publish from support tickets; restore mini-user store env single-column layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Refund rollback, winery T+3, multi withdraw, mini-user store detail, dev plan batch edit and WeCom dispatch, support ticket edit/attachments/batch status, package imageUrl.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add client-logging SDK, expanded event taxonomy, API observability, admin domain events UI, and move SENTRY_DSN to HQ system settings with @sentry/node bootstrap after config preload.
Co-authored-by: Cursor <cursoragent@cursor.com>
Filter anonymous mini-app page-not-found client errors (often WeChat review bots) from webhook while still logging and persisting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Collect mini-user/shop/partner JS errors via POST /common/client-errors, persist logs, and push fatal/error to WeCom.
Co-authored-by: Cursor <cursoragent@cursor.com>
dev deploys to /opt/dukang-staging (819x, *-test domains); main deploys to production. Staging uses full Mock with shared WeChat app ids.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add partner-facing proxy order list/detail; unlock SUPER_ADMIN order delete with cascade cleanup and type filter.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop SMS verification for HQ/partner proxy orders; keep form draft across product picker; hide whitelist-only products from partner catalog.
Co-authored-by: Cursor <cursoragent@cursor.com>
Open weappOrderConfirm in mini-user so users confirm in-app instead of
service notice; verify via get_order before completing. Show operator/remark
on admin order status timeline.
Co-authored-by: Cursor <cursoragent@cursor.com>
Receive trade_manage_order_settlement to sync confirm-receive/settle;
wait ~65s and retry on 10060001 before upload_shipping_info.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hide locate on store forms; restore optimized locpicker overlay.
Add TENCENT_LBS_SECRET_KEY and server-side sig for WebServiceAPI.
Co-authored-by: Cursor <cursoragent@cursor.com>
City partner storeCount jumps to /stores?partnerId=; normalize empty/null text so usage rule is not saved as literal "null.
Co-authored-by: Cursor <cursoragent@cursor.com>
HQ can remove store sub-accounts from primary account detail; cities table store count jumps to /stores?cityId=.
Co-authored-by: Cursor <cursoragent@cursor.com>