81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
from __future__ import annotations
|
|
|
|
from .shared import *
|
|
|
|
@router.post("/lifecycle/assess-impact")
|
|
async def assess_model_update_impact(
|
|
request: LifecycleImpactRequest,
|
|
current_user: User = Depends(get_current_user),
|
|
tenant_id: int = Depends(get_tenant_id),
|
|
db: AsyncSession = Depends(get_db),
|
|
):
|
|
"""评估模型升级对现有需求集合的影响。"""
|
|
_ = current_user
|
|
service = ModelLifecycleService(db)
|
|
try:
|
|
data = await service.assess_model_update_impact(
|
|
old_model_version_id=request.old_model_version_id,
|
|
new_model_version_id=request.new_model_version_id,
|
|
tenant_id=tenant_id,
|
|
)
|
|
return success_response(data=data)
|
|
except ValueError as exc:
|
|
return JSONResponse(
|
|
status_code=404,
|
|
content=error_response(ErrorCode.NOT_FOUND, str(exc)),
|
|
)
|
|
except Exception as exc:
|
|
return JSONResponse(
|
|
status_code=500,
|
|
content=error_response(ErrorCode.INTERNAL_ERROR, f"影响评估失败: {exc}"),
|
|
)
|
|
|
|
@router.get("/lifecycle/impacts")
|
|
async def list_lifecycle_impacts(
|
|
limit: int = Query(default=50, ge=1, le=200),
|
|
current_user: User = Depends(get_current_user),
|
|
tenant_id: int = Depends(get_tenant_id),
|
|
db: AsyncSession = Depends(get_db),
|
|
):
|
|
"""列出模型生命周期影响评估记录。"""
|
|
_ = current_user
|
|
service = ModelLifecycleService(db)
|
|
try:
|
|
data = await service.list_impacts(tenant_id=tenant_id, limit=limit)
|
|
return success_response(data=data)
|
|
except Exception as exc:
|
|
return JSONResponse(
|
|
status_code=500,
|
|
content=error_response(ErrorCode.INTERNAL_ERROR, f"查询影响评估失败: {exc}"),
|
|
)
|
|
|
|
@router.post("/lifecycle/{impact_id}/migration-tasks")
|
|
async def create_migration_tasks(
|
|
impact_id: int,
|
|
request: GenerateMigrationTasksRequest,
|
|
current_user: User = Depends(get_current_user),
|
|
tenant_id: int = Depends(get_tenant_id),
|
|
db: AsyncSession = Depends(get_db),
|
|
):
|
|
"""基于影响评估自动生成迁移任务建议。"""
|
|
_ = current_user
|
|
service = ModelLifecycleService(db)
|
|
try:
|
|
data = await service.generate_migration_tasks(
|
|
impact_id=impact_id,
|
|
tenant_id=tenant_id,
|
|
max_tasks=request.max_tasks,
|
|
)
|
|
return success_response(data=data)
|
|
except ValueError as exc:
|
|
return JSONResponse(
|
|
status_code=404,
|
|
content=error_response(ErrorCode.NOT_FOUND, str(exc)),
|
|
)
|
|
except Exception as exc:
|
|
return JSONResponse(
|
|
status_code=500,
|
|
content=error_response(ErrorCode.INTERNAL_ERROR, f"生成迁移任务失败: {exc}"),
|
|
)
|
|
|