C端 × A端 对接总览 + 一起数据事故(波波 2026-09-25 13:5x)

义父问「A端 与 C端 的接口全部接好了吗」⇒ 重新全量反查后的结论与处置。


一、结论:此前没接好,本轮又查出并补上一个缺口

本轮新发现的硬缺口:向导档案(guide_profiles)

项事实
C端 消费GET /api/miniapp/guide-profiles/{id} —— 向导主页(档案+足迹+评价摘要+微信号),游客可见
后端写接口零(全 backend 无任何 INSERT/UPDATE/DELETE)
C端 入驻入口没有「成为向导」的页面 ⇒ 它不是用户自产数据
prod 数据仅 3 条,全是测试账号(user_id 9101/9102/9103)

⇒ 既非 UGC 又无法运营维护,只能靠开发改库 —— 与之前 guides / guide_articles 同型,违反铁律。

已补:admin_guides.py 加 CRUD(列表/新建/编辑/上下架/删除)+ A端 GuideAdmin 第三个 Tab。

线上实测三 Tab:攻略(152)/ 向导档案(3)/ 攻略社区(20),零 PAGEERROR。

对接总览(本轮核完)

类别接口/表状态
商品packages✅ A端 商品管理同一张表
文案content_items✅ A端 ContentItems
攻略guides✅ 上轮补 CRUD + 页
攻略社区guide_articles✅ 上轮补 CRUD + 页
向导档案guide_profiles✅ 本轮补
天气/weather/today✅ 已接和风天气真实数据
商户页merchant-pages✅ 有 admin 读写
不需录入orders / messages / reviews / feedback / demands / distribution / wishlist / footprints / kora-trackers / scenes(checkin)用户自产或行为数据
孤岛cms_posts⚠️ A端「内容管理」有完整发布流程,C端 零消费 —— 运营录了不显示

二、🔴 事故:我的验收脚本误删了 prod 真实数据

必须留痕,不能掩盖。

经过

1. 新建向导档案 → 500(status 枚举写错)
2. 脚本没校验,继续用 max(id)=203 当"新 id"
3. DELETE /profiles/203 → 把真实数据「旦增向导」删掉了

根因链

  1. status 枚举我凭印象写成 active/inactive,库里 check 约束实际是

guide_profiles_status_check: status IN ('active','hidden') ⇒ 新建 500

  1. 验收脚本没有断言前置步骤成功,失败后继续用推导出来的 id 做破坏性操作

已恢复

INSERT ... id=203 ... ON CONFLICT DO NOTHING,现 3 条齐全(扎西/尼玛/旦增)。

但有两个字段无法完整还原,必须说明:

⇒ 需运营在 A端 补全这两个字段(现在有页面了,可以补)。

连带修的三处

  1. 枚举改 active/hidden(create/update 两处校验)
  2. 漏改 toggle 里的赋值 ⇒ 上下架继续 500,二次修复
  3. user_id 不存在触发外键裸 500 ⇒ 改 422 明确提示

三、教训(价格很高,写进长期记忆了)

教训说明
验收脚本每步必须断言,失败即中止绝不能在前置失败时用推导出来的 id 做删除
枚举以库为准写 CRUD 前先查 SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conname LIKE '%xxx%'
改枚举要全文 grep 残留我改了校验却漏了赋值处,二次返工
heredoc 里 '\\n' 变字面反斜杠+napi.ts 多出一行 \n ⇒ tsc TS1127。JS 文件里出现字面 \n 行是静默毒药

四、待办

  1. 运营补全向导档案 203 的 bio/头像/微信号(A端 已有页面)
  2. cms_posts 孤岛:确认是给 C端 接上,还是下线 A端 那个页面