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:
@@ -20,6 +20,7 @@ from app.platform.db import (
|
||||
)
|
||||
from app.platform.host_middleware import TenantHostMiddleware
|
||||
from app.platform.registry import TenantRegistry
|
||||
from app.platform import settings_store
|
||||
from app.platform.tenant_source import DbTenantSource
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -142,6 +143,10 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
try:
|
||||
await ensure_platform_schema(platform_engine)
|
||||
# 平台设置快照(Phase 4 Task 5A):schema 就绪后全表读入内存——
|
||||
# resolver 平台默认回退链(config_views)的数据源。PUT settings
|
||||
# 后经 settings_store.refresh 热刷新,无需重启。
|
||||
await settings_store.load_snapshot(platform_engine)
|
||||
# 默认凭据警示(终审 I-4):ADMIN_PASSWORD 仍是出厂默认时启动日志
|
||||
# 醒目提示。比较对象取 Settings 字段定义的默认值(非硬编码第二份
|
||||
# "admin123"——将来改默认值,警示判定自动跟随,不双源漂移)。
|
||||
|
||||
Reference in New Issue
Block a user