来源:登录系统改造交付说明(docs/登录系统改造-2026-10-13-交付说明.md:102)所列「其余已知待办」两项。
处理人:波波(author=波波 <bobo@kailash.media>)。
「通道显隐」= 平台支付闸口 system_settings.platform_payment_gate,控制线上支付通道的显隐/强制(auto / online_only / offline_only)。
缺陷 A — 枚举不一致(真实代码 bug,本次已修)
backend/app/routers/admin_platform_params.py:317)把可选值写成 ["auto","open","closed"]。miniapp_orders.py:613 与 :944)实际只接受 ("auto","online_only","offline_only"),且对非预期值执行:```python
if platform_gate not in ("auto", "online_only", "offline_only"):
platform_gate = "auto"
```
closed(语义=全站暂停线上支付)会被后端静默重置为 auto,闸口形同虚设。admin 校验逻辑(_coerce_and_validate 的 enum 分支)也会在 422 拒掉 online_only/offline_only 这两个本该合法的值。缺陷 B — 生产缺配置行(经只读核验,早已落地,无缺口)
040_dual_track_keys.sql 在生产的 system_settings 里从未执行(依据 docs/生产部署确认单.md:59 标「待执行 ❌」)。但 2026-10-13 经只读勘察纠正:生产 kailash-pg 容器内 schema_migrations 032–040 全部 marked=t,system_settings.platform_payment_gate 当前值 = offline_only(非迁移默认 auto,说明是运营/老板主动置位),确认 040 的 INSERT ... ON CONFLICT DO NOTHING 早已落库。PUT /{key} 对不存在的键仍直接 404 而非自动插入(admin_platform_params.py:603 刻意设计)——这一机制本身正确,只是当初的前提(生产缺行)不成立罢了。admin_platform_params.py:317 的 options 已对齐后端实际枚举:
"options": ["auto", "online_only", "offline_only"],
"note": "auto = 按商户与产品条件自动判定;online_only = 全站强制线上支付;offline_only = 全站暂停线上支付(券款线下直结)",
py_compile 通过;写一致性断言脚本 /tmp/check_gate_enum.py,确认 admin 枚举 == 后端接受集(auto/online_only/offline_only)完全一致;反证:把 admin 改回 open/closed 时断言 FAIL(捕捉到不一致),还原后 PASS。用户曾授权「整批 032–040」。执行前按纪律先只读勘察,结论:032–040 早已在生产完整落地,无需任何操作。
只读证据(生产 kailash-pg 容器,2026-10-13):
schema_migrations 032–040 全部 marked=t。travel_demands/demand_interests)、merchants.payment_mode 列、user_identities.role 新 CHECK、distributors.user_id 可空、033 的 12 个分销键全部 count=12、site_config 的 demand_expire_days=7 与 8 类目 JSON 齐全。system_settings.platform_payment_gate 当前值 = offline_only(非迁移默认 auto)。由此:原「确认单 §1.3 待执行」已过时;"通道显隐·生产缺配置行"缺口实际早已闭合。"整批 032–040"指令因先核验而避免盲跑(否则白干且搅乱台账)。
是否维持 offline_only? 当前为全站强制线下(券款线下直结)业务态。是否调回 auto/online_only 未擅自改动,待老板确认经营口径。
部署纪律:代码枚举修复(commit a731dc10)需经 staging 自动部署生效;生产迁移经核验无需执行。
「预售券」= 现「神山线路」套餐(packages 表 SKU 7081/7082/7083 + 新线 7086–7089)。逐项核对:
home.wxml 渲染 <home-voucher-cta bind:openvoucher="openVoucher"/>,home.ts.openVoucher() → navigate('vouchers');vouchers 已在 app.json 注册;vouchers.ts / destination.ts 的 VOUCHER_SKUS 硬编码白名单已于 2026-10-12(38c75420)删除,改「以后端 active 列表为准」。页面状态健康。list_packages(packages.py:149)只返回 status='active' 的套餐;packages 状态枚举为 draft|active|offline(无 suspended),前端 status!=='offline' 过滤为冗余保险。miniapp_orders.py:534 被无条件强制 offline(WIP-222 已实测验证:gate=auto / gate=online_only 下券类均 offline;merchant_mch 全库零命中;退款链路 422 硬拒)→ 券款全链路平台零触碰,是 08-30「线上支付暂停」决议下的刻意设计,非 bug。packages.status 置 active),非代码改动。当前生产套餐状态未在本次排查窗口内确认(staging 不可达),如需可单独核生产 packages 表 status 分布。| 项 | 状态 | 说明 |
|---|---|---|
| 通道显隐·枚举不一致 | ✅ 已修(commit a731dc10) | admin_platform_params.py options 对齐后端 |
| 通道显隐·生产缺配置行 | ✅ 经核验早已落地 | 生产 platform_payment_gate=offline_only,缺口早已闭合、无需执行 |
| 预售券挂起 | ✅ 排查结案 | 无代码缺陷;「挂起」= 券类刻意线下直结(设计态) |