Files
dukang/docs/杜康好客-v3.5.14-开发文档.md
T

96 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 杜康好客 · v3.5.14 修复文档
> **2026-08-26** · API / 生产数据
> **主题**:C 端「提交订单 / 支付成功」用户日志 `client_app` 误标为 H5,改为真实端(小程序)
---
## 1. 版本目标
1. 修复后端埋点:`order_submit``pay_success` 不再写死 `USER_H5`
2. 回填线上 `log_user_analytics`:这两类事件里所有 `USER_H5` 改为 `USER_MINI`
**不做**:核销埋点(`benefit_redeem_*`);未登录 `POST /analytics/events` 的 H5 回退;H5 预览(`TARO_ENV=h5`)仍报 `USER_H5`
---
## 2. 根因
`TradeService.createOrder` / `payOrder`Mock 支付成功)/ `handlePaySuccess`(微信支付回调)调用 `analyticsService.trackOneSafe` 时把 `clientApp` 写死为 `'USER_H5'`
当前生产 C 端是 `apps/mini-user` 小程序,请求头为 `X-Client-App: USER_MINI`(写入 JWT)。同链路的 `pay_fail` 已使用 JWT 的 `clientApp`,故 HQ「用户日志」里提交订单显示「C 端 H5」,支付失败却可能显示「C 端小程序」。
---
## 3. 代码规则
| 写入点 | 事件 | `clientApp` |
|--------|------|-------------|
| `POST /trade/orders``createOrder` | `order_submit` | JWT `user.clientApp`(缺省 `USER_H5` |
| `POST /trade/orders/:id/pay` Mock 成功 | `pay_success` | 入参 `clientApp`(缺省 `USER_H5` |
| 微信支付回调 `handlePaySuccess` | `pay_success` | 该订单已有 `order_submit` / `pay_fail`;没有则默认 `USER_MINI` |
小程序原生:`USER_MINI``mini-user` H5 预览:仍为 `USER_H5`(公众号 JSAPI,见 `apps/mini-user/src/lib/api.ts`)。
---
## 4. 线上数据回填
表:`log_user_analytics`
范围:`event_name IN ('order_submit', 'pay_success') AND client_app = 'USER_H5'`
动作:`client_app``USER_MINI`
```sql
SELECT event_name, client_app, COUNT(*) AS cnt
FROM log_user_analytics
WHERE event_name IN ('order_submit', 'pay_success')
GROUP BY event_name, client_app;
UPDATE log_user_analytics
SET client_app = 'USER_MINI'
WHERE event_name IN ('order_submit', 'pay_success')
AND client_app = 'USER_H5';
```
回填结果(生产,2026-08-26):
| 事件 | 回填前 USER_H5 | 回填后 USER_MINI |
|------|----------------|------------------|
| `order_submit` | 55 | 55 |
| `pay_success` | 28 | 28 |
共更新 **83** 行。回填后这两类事件已无 `USER_H5`
不改其它事件名,不改 `common_event`
---
## 5. 关键路径
| 域 | 路径 |
|----|------|
| 建单 / 支付埋点 | `server/dukang-api/src/modules/trade/trade.service.ts` |
| 建单入参 | `server/dukang-api/src/modules/trade/trade.controller.ts` |
| HQ 展示 | `order_submit` → 提交订单;`USER_MINI` → C 端小程序 |
无 Prisma 迁移。
---
## 6. 发版步骤
| 步骤 | 动作 |
|------|------|
| 1 | 生产已执行上述 `UPDATE`(历史行) |
| 2 | 发 `dukang-api`(新单按 JWT 写端);`--skip-db` |
---
## 7. 验收清单
- [x] 历史 `order_submit` / `pay_success` 在 HQ 不再显示「C 端 H5」(已回填 83 行)
- [ ] 小程序提交订单后,HQ 用户日志「提交订单」端为「C 端小程序」(需发 `dukang-api`
- [ ] 小程序支付成功后,「支付成功」端为「C 端小程序」(需发 `dukang-api`
- [ ] `mini-user` H5 预览下单仍为「C 端 H5」
- [ ] 浏览类埋点(`home_view` 等)端字段不变