feat(fase3): add agent status update and list endpoints

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Claude AI
2026-01-29 10:52:31 +00:00
parent 8784ec2e3f
commit c9365c9d43
2 changed files with 53 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ from app.schemas.auth import (
TokenResponse, TokenResponse,
UserResponse, UserResponse,
CreateUserRequest, CreateUserRequest,
UpdateStatusRequest,
) )
router = APIRouter(prefix="/auth", tags=["auth"]) router = APIRouter(prefix="/auth", tags=["auth"])
@@ -94,3 +95,51 @@ def register_first_admin(request: CreateUserRequest, db: Session = Depends(get_d
db.refresh(user) db.refresh(user)
return UserResponse.model_validate(user) return UserResponse.model_validate(user)
@router.put("/me/status")
def update_my_status(
request: UpdateStatusRequest,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
current_user.status = request.status
db.commit()
return {"success": True, "status": request.status.value}
@router.get("/agents")
def list_agents(
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
"""List all agents with their status and conversation counts"""
from app.models.whatsapp import Conversation, ConversationStatus
agents = db.query(User).filter(User.is_active == True).all()
result = []
for agent in agents:
active_count = (
db.query(Conversation)
.filter(
Conversation.assigned_to == agent.id,
Conversation.status.in_(
[ConversationStatus.ACTIVE, ConversationStatus.WAITING]
),
)
.count()
)
result.append(
{
"id": str(agent.id),
"name": agent.name,
"email": agent.email,
"role": agent.role.value,
"status": agent.status.value,
"active_conversations": active_count,
}
)
return result

View File

@@ -43,3 +43,7 @@ class CreateUserRequest(BaseModel):
password: str password: str
name: str name: str
role: UserRole = UserRole.AGENT role: UserRole = UserRole.AGENT
class UpdateStatusRequest(BaseModel):
status: UserStatus