"""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, }, }