Files
kefu/im/宠物模块整改上线记录-2026-09-07.md
Your NameandClaude Opus 5 3e6a4900e2 记录宠物模块整改的三期上线情况
以后排查时需要知道线上跑的是哪个二进制、哪些配置项是新加的、
哪几件事还卡在地图 key 与支付密钥上。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 11:48:00 +08:00

82 lines
5.4 KiB
Markdown
Raw Permalink 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.
# 宠物模块整改上线记录(2026-09-07)
九条整改分三期做完,全部发到两台服务器。这份记录留给以后排查用:改了什么、
线上跑的是哪个版本、哪些事情还卡在外部条件上。
## 线上版本
| | im.bchongw.com(47.106.181.28) | xim.bchongw.com(8.219.70.152) |
| --- | --- | --- |
| 后端二进制 | `add78d4fa08e1b4c00c5a13531ce6669d4431be7ff70b5c81f3188c64a539479` | 同左 |
| 发布路径 | `/www/server/xingyu-im/bt/xingyu-api` | `releases/pet-feed-20260907-112223` ← `current` |
| 管理端 | `/www/wwwroot/xingyu-admin/releases/20260907-112424` | `/www/wwwroot/xim-admin/releases/20260907-112410` |
| 迁移 | 037 – 041 全部已应用 | 同左 |
提交:`ebf7189`(一期)、`a889cb4`(三期)。二期是纯客户端改动,服务端没有发版。
## 三期分别改了什么
### 一期:把发布这条链路跑通
- **定位**:`createPetAddress` 不再强制坐标。拿不到定位也能存地址,标成「未核验定位」,
这条地址的打卡照常做,只是不比对距离。客户端给了三条退路:直接取 → 去系统设置开权限 →
地图选点。根因是 `manifest.json` 里 `distribute.sdkConfigs` 是空的 `{}`,App 端没有地图 SDK。
- **推荐价**:新增 `GET /api/v1/pet/feed-price`,按物种基准价 × 城市系数 + 时长加价算建议单价,
规则在 `pet.feed_price_suggest_json` 里,改一次不用发版。用户改过就以他填的为准。
- **先付后发**:发布页底部常驻合计,主按钮是「支付并发布」,走 `创建 → 下单 → 支付`。
没付成的任务留在「我的任务」可继续支付,超过 `pet.feed_unpaid_close_hours`(24 小时)
由后台 worker 关闭。
- **选宠物**:换成带头像的卡片选择器,缺免疫记录或照片当场标黄。
### 二期:界面与地址
- `components/PetSheet.vue` 底部抽屉替掉报名接单、发起申诉两处 `uni.showModal({editable:true})`。
- 任务详情默认只展开今天与未完成的上门,其余折叠;打卡胶囊只有接单的喂养者可点。
- `src/static/regions.json`(34 省 / 344 市 / 3273 区县,121KB,来自公开数据集 province-city-china,MIT)
加 `components/RegionPicker.vue` 三级联动,用在发布代喂、送养、配种、喂养者四处;
只有详细地址仍然手填。城市编码跟着提交,宠物页三个频道都能按城市筛。
### 三期:退款、后台增改删、悬赏
- **退款**:`pet_feed_refunds` 每笔一行,可分多次退到退完;`refunded_cent` 在任务与订单上同步累加。
渠道接通时按金额原路退回并带独立幂等键 `feed:<任务>:<时间戳>`;沙箱支付、手工托管、
没有渠道流水号的一律登记为「线下已退」。已结算的任务必须显式勾选「平台承担」才能退,
喂养者余额不会被倒扣。
- **后台增改删**:宠物可代建 / 编辑 / 软删(有进行中任务的删不掉,删除时相关送养配种一并下架
并通知本人);送养与配种可改文案城市、可下架、可软删;代喂任务可改备注、可取消
(托管中的钱必须先退)。所有写操作进审计日志。
- **悬赏**:`pet_feed_tasks.tip_cent`。悬赏跟着任务一起托管,结算时全额给喂养者,
平台服务费只算基础报酬。上限 `pet.feed_tip_max_cent`(默认 200 元)。
## 新增的配置项
| 配置键 | 默认值 | 作用 |
| --- | --- | --- |
| `pet.feed_price_suggest_json` | 见迁移 040 | 推荐单价规则:物种基准价、城市系数、时长加价 |
| `pet.feed_unpaid_close_hours` | 24 | 创建后多少小时未支付自动关闭 |
| `pet.feed_checkin_min_gap_seconds` | 120 | 到达与喂食打卡的最小间隔,防摆拍 |
| `pet.address_purge_days` | 7 | 任务结束多少天后抹掉地址明文 |
| `pet.feed_tip_max_cent` | 20000 | 单个任务的悬赏上限 |
管理端「宠物模块 → 宠物设置」里可以直接改,改完立即生效。
## 上线后的核对(两台都跑过)
- 迁移 039 / 040 / 041 均已应用,新列 `pet_feed_tasks.tip_cent`、`pet_feed_tasks.refunded_cent`、
`orders.refunded_cent`、`pet_addresses.emergency_cipher`、`pet_addresses.vet_hospital` 都在。
- 地址城市码为空的记录 0 条;按 `cityCode=440300` 筛选命中全部招募中任务。
- 余额与流水对不上的账户 0 个。
- 超过 24 小时未支付的任务 0 个。
- 自动确认在真实数据上跑过:示例数据里那个「待确认」任务超期后被后台自动结算给喂养者,
账本与余额仍然一致。
## 还卡在外部条件上的
1. **地图 key(高德或腾讯)**:`manifest.json` 的 `sdkConfigs.maps` 需要 iOS / Android 两个 appkey。
没有它,地图选点会提示不可用,另外两条定位路径正常。
2. **支付渠道密钥**:两台仍是 `payment.mode=sandbox`,渠道密钥全空。所以「支付并发布」在灰度期
要靠客服在管理端手工标记已托管,退款走「线下已退」登记。密钥到位后自动接上真实通道,代码不用改。
3. **手机端重新打包**:一期二期的界面改动都在客户端,要在 HBuilderX 里重新编译发版。
4. **保险自动投保**:方案里写了,但要先谈承保方,代码只留了 `insurance_no` 字段。
5. **配种撮合**:功能已经跑通,但 `pet.mating_enabled` 仍然关着,等规则与资质完备再开。