Yaojia Wang
9ccd3284fb
feat(backend): Implement SignalR Real-Time Notifications for MCP - Story 5.12
Implemented comprehensive real-time notification system using SignalR to notify
AI agents and users about PendingChange status updates.
Key Features Implemented:
- McpNotificationHub with Subscribe/Unsubscribe methods
- Real-time notifications for all PendingChange lifecycle events
- Tenant-based isolation for multi-tenancy security
- Notification DTOs for structured message formats
- Domain event handlers for automatic notification sending
- Comprehensive unit tests for notification service and handlers
- Client integration guide with examples for TypeScript, React, and Python
Components Created:
1. SignalR Hub:
- McpNotificationHub.cs - Central hub for MCP notifications
2. Notification DTOs:
- PendingChangeNotification.cs (base class)
- PendingChangeCreatedNotification.cs
- PendingChangeApprovedNotification.cs
- PendingChangeRejectedNotification.cs
- PendingChangeAppliedNotification.cs
- PendingChangeExpiredNotification.cs
3. Notification Service:
- IMcpNotificationService.cs (interface)
- McpNotificationService.cs (implementation using SignalR)
4. Event Handlers (send notifications):
- PendingChangeCreatedNotificationHandler.cs
- PendingChangeApprovedNotificationHandler.cs
- PendingChangeRejectedNotificationHandler.cs
- PendingChangeAppliedNotificationHandler.cs
- PendingChangeExpiredNotificationHandler.cs
5. Tests:
- McpNotificationServiceTests.cs - Unit tests for notification service
- PendingChangeCreatedNotificationHandlerTests.cs
- PendingChangeApprovedNotificationHandlerTests.cs
6. Documentation:
- signalr-mcp-client-guide.md - Comprehensive client integration guide
Technical Details:
- Hub endpoint: /hubs/mcp-notifications
- Authentication: JWT token via query string (?access_token=xxx)
- Tenant isolation: Automatic group joining based on tenant ID
- Group subscriptions: Per-pending-change and per-tenant groups
- Notification delivery: < 1 second (real-time)
- Fallback strategy: Polling if WebSocket unavailable
Architecture Benefits:
- Decoupled design using domain events
- Notification failures don't break main flow
- Scalable (supports Redis backplane for multi-instance)
- Type-safe notification payloads
- Tenant isolation built-in
Story: Phase 3 - Tools & Diff Preview
Priority: P0 CRITICAL
Story Points: 3
Completion: 100%
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:21:08 +01:00
..
2025-11-04 20:45:10 +01:00
2025-11-08 18:13:48 +01:00
2025-11-03 11:51:02 +01:00
2025-11-08 18:13:48 +01:00
2025-11-04 23:28:56 +01:00
2025-11-03 11:51:02 +01:00
2025-11-09 18:21:08 +01:00
2025-11-08 18:13:48 +01:00
2025-11-05 00:25:23 +01:00
2025-11-08 18:13:48 +01:00
2025-11-09 18:21:08 +01:00
2025-11-04 23:28:56 +01:00
2025-11-04 23:43:43 +01:00
2025-11-02 23:55:18 +01:00
2025-11-08 18:13:48 +01:00
2025-11-02 23:55:18 +01:00
2025-11-02 23:55:18 +01:00