以后排查时需要知道线上跑的是哪个二进制、哪些配置项是新加的、 哪几件事还卡在地图 key 与支付密钥上。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.4 KiB
5.4 KiB
宠物模块整改上线记录(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 个。
- 自动确认在真实数据上跑过:示例数据里那个「待确认」任务超期后被后台自动结算给喂养者, 账本与余额仍然一致。
还卡在外部条件上的
- 地图 key(高德或腾讯):
manifest.json的sdkConfigs.maps需要 iOS / Android 两个 appkey。 没有它,地图选点会提示不可用,另外两条定位路径正常。 - 支付渠道密钥:两台仍是
payment.mode=sandbox,渠道密钥全空。所以「支付并发布」在灰度期 要靠客服在管理端手工标记已托管,退款走「线下已退」登记。密钥到位后自动接上真实通道,代码不用改。 - 手机端重新打包:一期二期的界面改动都在客户端,要在 HBuilderX 里重新编译发版。
- 保险自动投保:方案里写了,但要先谈承保方,代码只留了
insurance_no字段。 - 配种撮合:功能已经跑通,但
pet.mating_enabled仍然关着,等规则与资质完备再开。