架构复盘:渠道绑定 = "用户在某渠道的一份配置",各渠道字段形态不同 → 判别列 + JSONB 多态 (同本库 usage_events kind+units)最契合,加渠道(飞书/TG…)零 migration。原分表 (0012/0014)对 2 渠道够用但不扛增长、与库内多态范式不一致;单宽表(NULL 列并列)最差。 - models:`ChannelBinding(user_id, channel, status, config JSONB)` PK=(user_id,channel) 取代 WeChatBotBinding/WeComBinding;clawbot 敏感字段 crypto 加密入 config,wecom 明文 userid。 - migration 0015:建表 + 旧两表数据搬进 config(token 密文串原样搬)+ drop 旧表; DDL+DML 同事务失败回滚不丢;含 down 拆回。 - service 存取改读写 config —— **公共 API + BindingSnapshot 形状不变** → inbound/web/tool/ scheduler 零改动(纯内部数据层重构,对外行为不变)。趁绑定数据极少时合表最省。 import/编译 + _snap 反序列化单测过;DB 往返 + migration 待部署联调。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| disk_quota.py | ||
| engine.py | ||
| models.py | ||
| usage.py | ||
| utils.py | ||