tractatus/src/routes/inbox.routes.js
TheFlow edb1540631 feat(crm): complete Phase 3 multi-project CRM + critical bug fixes
Phase 3 Multi-Project CRM Implementation:
- Add UnifiedContact model for cross-project contact linking
- Add Organization model with domain-based auto-detection
- Add ActivityTimeline model for comprehensive interaction tracking
- Add SLATracking model for 24-hour response commitment
- Add ResponseTemplate model with variable substitution
- Add CRM controller with 8 API endpoints
- Add Inbox controller for unified communications
- Add CRM dashboard frontend with tabs (Contacts, Orgs, SLA, Templates)
- Add Contact Management interface (Phase 1)
- Add Unified Inbox interface (Phase 2)
- Integrate CRM routes into main API

Critical Bug Fixes:
- Fix newsletter DELETE button (event handler context issue)
- Fix case submission invisible button (invalid CSS class)
- Fix Chart.js CSP violation (add cdn.jsdelivr.net to policy)
- Fix Chart.js SRI integrity hash mismatch

Technical Details:
- Email-based contact deduplication across projects
- Automatic organization linking via email domain
- Cross-project activity timeline aggregation
- SLA breach detection and alerting system
- Template rendering with {placeholder} substitution

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 18:10:14 +13:00

27 lines
792 B
JavaScript

/**
* Unified Inbox Routes
* Combined view of contacts, media inquiries, and case submissions
*/
const express = require('express');
const router = express.Router();
const inboxController = require('../controllers/inbox.controller');
const { authenticateToken, requireRole } = require('../middleware/auth.middleware');
const { asyncHandler } = require('../middleware/error.middleware');
// GET /api/inbox - Get unified inbox (requires admin auth)
router.get('/',
authenticateToken,
requireRole('admin', 'moderator'),
asyncHandler(inboxController.getInbox)
);
// GET /api/inbox/stats - Get unified statistics (requires admin auth)
router.get('/stats',
authenticateToken,
requireRole('admin', 'moderator'),
asyncHandler(inboxController.getStats)
);
module.exports = router;