Add project.created broadcast, debug log for bridge message delivery
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
This commit is contained in:
parent
c1fd50f28c
commit
5030c06d76
@ -11,6 +11,7 @@ from sqlalchemy.orm import selectinload
|
|||||||
from ..database import get_db
|
from ..database import get_db
|
||||||
from ..enums import ChatKind, MemberRole, ProjectStatus
|
from ..enums import ChatKind, MemberRole, ProjectStatus
|
||||||
from ..models import Project, Chat, Member, ProjectMember
|
from ..models import Project, Chat, Member, ProjectMember
|
||||||
|
from ..ws.manager import manager
|
||||||
from .schemas import ProjectOut
|
from .schemas import ProjectOut
|
||||||
|
|
||||||
router = APIRouter(tags=["projects"])
|
router = APIRouter(tags=["projects"])
|
||||||
@ -107,7 +108,16 @@ async def create_project(req: ProjectCreate, db: AsyncSession = Depends(get_db))
|
|||||||
db.add(chat)
|
db.add(chat)
|
||||||
|
|
||||||
await db.commit()
|
await db.commit()
|
||||||
return await _project_out(project, db)
|
|
||||||
|
out = await _project_out(project, db)
|
||||||
|
|
||||||
|
# Broadcast project.created to all connected clients
|
||||||
|
await manager.broadcast_all({
|
||||||
|
"type": "project.created",
|
||||||
|
"project": out.model_dump(),
|
||||||
|
})
|
||||||
|
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
@router.patch("/projects/{project_id}", response_model=ProjectOut)
|
@router.patch("/projects/{project_id}", response_model=ProjectOut)
|
||||||
|
|||||||
@ -92,6 +92,21 @@ async def seed_dev_data(session: AsyncSession):
|
|||||||
session.add(ProjectMember(project_id=project.id, member_id=coder.id, role=MemberRole.MEMBER))
|
session.add(ProjectMember(project_id=project.id, member_id=coder.id, role=MemberRole.MEMBER))
|
||||||
session.add(ProjectMember(project_id=project.id, member_id=architect.id, role=MemberRole.MEMBER))
|
session.add(ProjectMember(project_id=project.id, member_id=architect.id, role=MemberRole.MEMBER))
|
||||||
|
|
||||||
|
# Bridge (Telegram)
|
||||||
|
bridge = Member(
|
||||||
|
name="Telegram Bridge",
|
||||||
|
slug="bridge",
|
||||||
|
type=MemberType.BRIDGE,
|
||||||
|
role=MemberRole.MEMBER,
|
||||||
|
auth_method=AuthMethod.TOKEN,
|
||||||
|
token="tb-bridge-dev-token",
|
||||||
|
status=MemberStatus.OFFLINE,
|
||||||
|
)
|
||||||
|
session.add(bridge)
|
||||||
|
await session.flush()
|
||||||
|
|
||||||
|
session.add(ProjectMember(project_id=project.id, member_id=bridge.id, role=MemberRole.MEMBER))
|
||||||
|
|
||||||
# Lobby chat
|
# Lobby chat
|
||||||
lobby = Chat(kind=ChatKind.LOBBY, project_id=None)
|
lobby = Chat(kind=ChatKind.LOBBY, project_id=None)
|
||||||
session.add(lobby)
|
session.add(lobby)
|
||||||
|
|||||||
@ -122,6 +122,7 @@ class ConnectionManager:
|
|||||||
|
|
||||||
# Humans/bridges get ALL messages
|
# Humans/bridges get ALL messages
|
||||||
if client.member_type in (MemberType.HUMAN, MemberType.BRIDGE):
|
if client.member_type in (MemberType.HUMAN, MemberType.BRIDGE):
|
||||||
|
logger.info("Sending message to %s (%s, type=%s)", client.member_slug, session_id[:8], client.member_type)
|
||||||
await self.send_to_session(session_id, payload)
|
await self.send_to_session(session_id, payload)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user