feat: AI Worker 平台 MVP v1.0.0 - 多租户/项目管理/AI Worker/任务编排/HITL审核/成本治理

This commit is contained in:
2026-08-12 13:30:34 +08:00
parent 903ba9af68
commit 8ad3579408
+60
View File
@@ -0,0 +1,60 @@
"""Tenant management endpoints."""
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from typing import List
from app.database import get_db
from app.schemas.tenant import TenantCreate, TenantUpdate, TenantResponse
from app.services.tenant_service import TenantService
from app.api.deps import get_current_user, require_roles
from app.core.permissions import Role
from app.models.user import User
router = APIRouter(prefix="/tenants")
@router.get("", response_model=List[TenantResponse])
def list_tenants(
skip: int = 0, limit: int = 100,
user: User = Depends(require_roles(Role.SUPER_ADMIN)),
db: Session = Depends(get_db),
):
return TenantService.list_tenants(db, skip, limit)
@router.post("", response_model=TenantResponse)
def create_tenant(
req: TenantCreate,
user: User = Depends(require_roles(Role.SUPER_ADMIN)),
db: Session = Depends(get_db),
):
try:
return TenantService.create_tenant(db, req)
except ValueError as e:
raise HTTPException(status_code=409, detail=str(e))
@router.get("/{tenant_id}", response_model=TenantResponse)
def get_tenant(
tenant_id: int,
user: User = Depends(get_current_user),
db: Session = Depends(get_db),
):
if user.role != Role.SUPER_ADMIN.value and user.tenant_id != tenant_id:
raise HTTPException(status_code=403, detail="Cannot access other tenants")
t = TenantService.get_tenant(db, tenant_id)
if not t:
raise HTTPException(status_code=404, detail="Tenant not found")
return t
@router.put("/{tenant_id}", response_model=TenantResponse)
def update_tenant(
tenant_id: int,
req: TenantUpdate,
user: User = Depends(require_roles(Role.SUPER_ADMIN, Role.TENANT_ADMIN)),
db: Session = Depends(get_db),
):
try:
return TenantService.update_tenant(db, tenant_id, req)
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))