Allow store contactPhone as landline, show pending package audit badge, and split live vs pending packages in HQ review.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow HQ to save stores with zero packages, preview contract images/PDFs, inspect package audit images/content, and show gray 无需打款 when winery payable is 0.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop auto ST from validation_error; show package prices with right-aligned layout; partner store list status/filter and onboard CS QR gate; HQ store table truncation/fixed actions; expose CS config in wechat_mini settings; bind local servers for LAN.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store.phone stays login/boss; contactPhone is C-end dial. Public store APIs keep phone compat via publicDial mapping.
Co-authored-by: Cursor <cursoragent@cursor.com>
Xiaofeixia posts multipart form fields; previously mis-read as urlencoded empty payload. Parse multipart text parts and map into order status transitions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Capture raw request for courier track callbacks regardless of Content-Type and persist contentType/rawBody/query into log_third_party for empty-body diagnosis.
Co-authored-by: Cursor <cursoragent@cursor.com>
Root cause is JSSDK entry-URL mismatch after SPA post-OAuth, not camera permission. Hard-navigate on iOS, keep OAuth query in sign URL, skip redundant bind OAuth, and prompt refresh/re-auth on failure.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>