feat(site-import): POST/GET API 与挂载
Task 7(spec §4):/api/platform/tenants/{slug}/site-import 两端点,
_tenant_guard 守租户(两角色)。POST 校验链:鉴权 → 租户存在/未停用
(404/403) → 形态预检(retry 只认 generate+task_id 非空;新建 URL 复用
safe_fetch._validate_url 单一事实源——scheme/内网字面量/端口,POST 即拒
400「仅支持公网网站地址」) → task.start;异常映射 ImportRateLimited→429 /
ConcurrentLimit→409 / LookupError→404 / ValueError→409(str(exc) 作
detail,任务层白话文案透出)。GET 五键 status/phase/pages/draft/error,
(slug,task_id) 联合索引即越权防线,过期 404「任务不存在或已过期」。
main.py 照 config_routes 位置挂载。测试 15 条(管线全打桩)。
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -238,6 +238,9 @@ from app.platform.routes.config_routes import (
|
||||
settings_router as platform_settings_router,
|
||||
)
|
||||
from app.platform.routes.data_routes import router as platform_data_router
|
||||
from app.platform.routes.site_import_routes import (
|
||||
router as platform_site_import_router,
|
||||
)
|
||||
from app.platform.routes.stats_routes import router as platform_stats_router
|
||||
from app.platform.routes.tenant_routes import router as platform_tenant_router
|
||||
from app.platform.routes.upload_routes import router as platform_upload_router
|
||||
@@ -263,6 +266,10 @@ app.include_router(platform_data_router)
|
||||
# stats.py,逐库查询应用层合并(禁 ATTACH,spec §7.6);合并端点 require_super
|
||||
# (?tenant= 单租户下钻),单租户端点 _tenant_guard。
|
||||
app.include_router(platform_stats_router)
|
||||
# 从网站导入 API(site-import Task 7): POST 启动/GET 轮询(_tenant_guard,
|
||||
# 两角色)——管线在 app/platform/site_import/task.py 的内存任务表,本层只做
|
||||
# 校验与异常映射(429/409/404)。
|
||||
app.include_router(platform_site_import_router)
|
||||
# 平台认证路由(Task 2):本任务即挂——已知租户 Host(如 jiancai)下
|
||||
# /api/platform/auth/* 经 Host 中间件直达,TDD 循环闭环。Task 3 将为
|
||||
# /api/platform/ 前缀加中间件豁免(平台后台不依赖租户域名解析);
|
||||
|
||||
Reference in New Issue
Block a user