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

This commit is contained in:
2026-08-12 13:30:30 +08:00
parent 4fd4c3bed4
commit dda65e9a41
+49
View File
@@ -0,0 +1,49 @@
"""Dashboard endpoints: overview stats."""
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from sqlalchemy import func
from app.database import get_db
from app.api.deps import get_current_user
from app.models.user import User
from app.models.project import Project
from app.models.task import Task
from app.models.worker import AIWorker
from app.models.review import Review
from app.services.cost_service import CostService
router = APIRouter(prefix="/dashboard")
@router.get("")
def dashboard(
user: User = Depends(get_current_user),
db: Session = Depends(get_db),
):
tid = user.tenant_id
projects = db.query(Project).filter(Project.tenant_id == tid).count()
tasks = db.query(Task).filter(Task.tenant_id == tid)
workers = db.query(AIWorker).filter(AIWorker.tenant_id == tid, AIWorker.is_active == True).count()
pending_reviews = db.query(Review).filter(
Review.tenant_id == tid, Review.status == "pending"
).count()
task_status_counts = {}
for row in db.query(Task.status, func.count()).filter(Task.tenant_id == tid).group_by(Task.status).all():
task_status_counts[row[0]] = row[1]
cost_summary = CostService.get_tenant_cost_summary(db, tid)
return {
"projects": projects,
"tasks": tasks.count(),
"active_workers": workers,
"pending_reviews": pending_reviews,
"task_status": task_status_counts,
"cost": cost_summary,
"user": {
"id": user.id,
"username": user.username,
"role": user.role,
},
}