guke
|
8d5e062122
|
Merge branch 'main' into feat/sms-jiguang-chuanglan-fallback
|
2026-07-31 11:17:21 +08:00 |
|
guke
|
908df060a6
|
Merge branch 'main' into feat/sms-jiguang-chuanglan-fallback
|
2026-07-30 17:13:28 +08:00 |
|
guke
|
5281148488
|
harden(sms): SMS_FALLBACK_PROVIDER Literal 收窄为 Mode B(去 aliyun)
最终 review Minor:aliyun 是 Mode A(校验走接口、可抛 SmsError),不该做 Mode B
fallback 备。收窄 Literal 为 ["jiguang","chuanglan",""],pydantic 启动即挡住误配
SMS_FALLBACK_PROVIDER=aliyun。同步设计/计划文档。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 16:52:34 +08:00 |
|
guke
|
8f186bc8f7
|
docs(sms): .env.example 加 SMS_FALLBACK_PROVIDER 说明
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 16:44:38 +08:00 |
|
guke
|
ca206bccb2
|
fix(sms): auth sms_send 接入 SendResult(修 cooldown_sec 500)+ 记 provider/fallback
批次2 将 send_code 返回类型 int→SendResult 后,sms_send 仍把它整体塞进
SmsSendResponse.cooldown_sec:int → pydantic ValidationError → 500。改为取
send_result.cooldown_sec;成功侧 EVENT_SMS_SEND details 加 provider/fallback。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 16:36:45 +08:00 |
|
guke
|
60c8fece23
|
feat(sms): verify_code try-both 遍历启用的 fallback 链
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 16:02:58 +08:00 |
|
guke
|
f3cd9bd318
|
feat(sms): send_code 仅主 503 时转创蓝补发(429/400 不转)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 16:01:40 +08:00 |
|
guke
|
63e8083fbd
|
feat(sms): send_code 返回 SendResult(主路径),迁移 dispatch 断言
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 15:58:35 +08:00 |
|
guke
|
c9fad9bca8
|
fix(sms): SMS_FALLBACK_PROVIDER 用 Literal 约束 + base docstring 补 SendResult
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 15:50:58 +08:00 |
|
guke
|
0cd667618d
|
feat(sms): 加 SMS_FALLBACK_PROVIDER 开关(默认空=关)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 15:40:47 +08:00 |
|
guke
|
cbe1d340d6
|
feat(sms): 加 SendResult 结果类型(cooldown+provider+fallback)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 15:39:31 +08:00 |
|
guke
|
2399e56a45
|
docs(sms): 极光→创蓝 fallback 实现计划(TDD 7 任务)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 15:31:06 +08:00 |
|
guke
|
10ac1511c3
|
docs(sms): 极光→创蓝 短信容灾 fallback 设计方案
极光为主、创蓝为备:仅极光供应商不可用(SmsError status_code=503)时自动
转创蓝补发;本地冷却/超频(429)、手机号无效(400)不转。校验用 try-both
遍历「启用的 fallback 链」(关闭时只问极光,创蓝零参与);码只存实际发码那家
的进程内存,命中即知渠道、防爆破不被绕过。后台经 EVENT_SMS_SEND.details
(provider/fallback)+ 分派层日志区分实际渠道。开关 SMS_FALLBACK_PROVIDER
默认空=关、生产设 chuanglan、置空秒回退。
provider 文件(jiguang/chuanglan/aliyun)一行不动;仅改分派层 __init__ +
base(SendResult)+ config + auth 一处 details + 测试。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-30 15:21:04 +08:00 |
|