feat: ?mentionable query param on project members endpoint
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s

This commit is contained in:
markov 2026-03-15 07:12:04 +01:00
parent 274294c183
commit 4d35e35b5e

View File

@ -156,8 +156,12 @@ async def delete_project(project_id: str, request: Request, db: AsyncSession = D
return {"ok": True}
@router.get("/projects/{project_id}/members", response_model=list[ProjectMemberOut])
async def get_project_members(project_id: str, db: AsyncSession = Depends(get_db)):
@router.get("/projects/{project_id}/members")
async def get_project_members(
project_id: str,
mentionable: bool | None = None,
db: AsyncSession = Depends(get_db),
):
project = await _get_project(project_id, db)
result = await db.execute(
@ -167,10 +171,27 @@ async def get_project_members(project_id: str, db: AsyncSession = Depends(get_db
.options(selectinload(Member.agent_config))
)
return [
{"id": str(m.id), "name": m.name, "slug": m.slug, "type": m.type, "role": role}
for m, role in result.all()
]
members = []
for m, role in result.all():
if mentionable is not None:
# bridge никогда не mentionable
if m.type == "bridge":
if mentionable:
continue
elif m.agent_config and m.agent_config.mentionable != mentionable:
continue
ac = None
if m.agent_config:
ac = {
"mentionable": m.agent_config.mentionable,
"chat_listen": m.agent_config.chat_listen,
"task_listen": m.agent_config.task_listen,
}
members.append({
"id": str(m.id), "name": m.name, "slug": m.slug,
"type": m.type, "role": role, "agent_config": ac,
})
return members
@router.post("/projects/{project_id}/members")