feat: resolver回退链接入platform_settings(三级回退/快照热刷新)

- app/platform/settings_store.py 新模块: lifespan 启动把 platform_settings
  全表快照进进程内存(load_snapshot/get/refresh,workers=1 单进程纪律);
  PUT /api/platform/settings 提交后 refresh 热刷新,回退链即时生效
- config_views email/ai 两组改三级回退: 租户槽位 → 平台设置快照
  (键名对齐平台设置页推荐键 ai.*/smtp.*)→ env settings(env 键名
  不变做最终兜底);push 无平台推荐键保持两级;smtp.port 自由 KV 容错
  归一(数字串转 int,脏值视同未设置落 env)
- conftest autouse 复位快照(resolver 直调测试隔离);新增
  test_platform_settings_fallback 六测(启动装载/三级链/端口容错/
  push 不接线钉死/PUT 即时生效)
- 平台设置页"仅存储"注记移除(CLAUDE.md 与前端页头同步改为已接线)
- 回归: 后端 627 passed(621+6)/ 前端 vitest 156 / build 零错误

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-14 10:10:52 +08:00
parent 7808f8a299
commit d734ed6d2a
9 changed files with 341 additions and 37 deletions
+11
View File
@@ -86,6 +86,17 @@ def _reset_platform_auth():
_reset_for_test()
@pytest.fixture(autouse=True)
def _reset_platform_settings_snapshot():
"""Phase 4 Task 5A: 平台设置内存快照前后复位——resolver 直调测试
之间不串平台默认值(不隔离时一脚 PUT 进快照的 ai.api_key 会顶掉后脚
的 env 回退断言)。"""
from app.platform.settings_store import _reset_for_test
_reset_for_test()
yield
_reset_for_test()
# ---- Phase 2 Task 10: FakeAI 公共确定性桩(清理单 #1) --------------------------
# 收敛自四份拷贝(test_lead_email_trigger / test_cc_integration /
# test_channel_hygiene / test_lead_push_wiring,接口取超集: 前两份全量,