feat: TenantSource 抽象——File源(测试/档案)与DB源(生产),registry 数据源可切换+reload upsert

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-13 08:50:16 +08:00
parent 386b5eb90a
commit c7fd533320
9 changed files with 720 additions and 85 deletions
+4 -1
View File
@@ -81,7 +81,10 @@ async def avatar(request: Request):
# 任意文件。显式拒绝分隔符与目录点,命中即回退静态兜底。
if name in {".", ".."} or "/" in name or "\\" in name:
name = ""
candidate = runtime.seed_dir / "assets" / name if name else None
# seed_dir=None = DB 源租户(Task 4;资产目录尚无 DB 侧存储)——直接
# 落静态兜底,不让 None 进路径拼接炸 500
candidate = (runtime.seed_dir / "assets" / name
if name and runtime.seed_dir is not None else None)
if candidate is not None and candidate.is_file():
return FileResponse(
candidate, headers={"Access-Control-Allow-Origin": "*"})