From 6dacb8f43250aa289d293831c2b7549813268e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Wed, 21 Oct 2026 09:36:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(site-import):=20config=5Fjson=20Text=20?= =?UTF-8?q?=E5=88=97=20JSON=20=E4=B8=B2=E5=8F=8D=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=EF=BC=88=E7=94=9F=E4=BA=A7=E8=B5=B0=E6=9F=A5=E6=8A=93?= =?UTF-8?q?=E6=BC=8F=E2=80=94=E2=80=94str=20=E4=BC=A0=20resolver=20?= =?UTF-8?q?=E7=82=B8=20.get=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- app/platform/routes/site_import_routes.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/platform/routes/site_import_routes.py b/app/platform/routes/site_import_routes.py index 9b86a02..019b49b 100644 --- a/app/platform/routes/site_import_routes.py +++ b/app/platform/routes/site_import_routes.py @@ -18,6 +18,8 @@ 启动只做校验+建任务——pipeline 由任务模块的后台 aio task 跑,本层不 感知 crawler/generator(测试也因此能整体打桩 task.start/task.get)。 """ +import json + from fastapi import APIRouter, Depends, HTTPException, Request from pydantic import BaseModel from sqlalchemy import select @@ -45,11 +47,16 @@ async def start_import(slug: str, body: StartRequest, request: Request, tenant = await _get_tenant_or_404(session, slug) # 租户配置快照(终审 Important #2:AI 三级链的租户槽位——传给 # task.start → make_provider;自有 ai.* 配置的租户烧自己配额) - latest = (await session.execute( + # config_json 列为 Text——scalar 返回 JSON 串,须 json.loads 成 dict + raw_config = (await session.execute( select(TenantConfigVersion.config_json) .where(TenantConfigVersion.tenant_id == tenant.id) .order_by(TenantConfigVersion.version.desc()) .limit(1))).scalar_one_or_none() + try: + latest = json.loads(raw_config) if raw_config else None + except (TypeError, json.JSONDecodeError): + latest = None if tenant.status != "active": raise HTTPException( status_code=403, detail=f"租户 {slug!r} 已停用,无法发起导入")