diff --git a/backend/src/routes/tickets.js b/backend/src/routes/tickets.js
index c02c44a..256eafe 100644
--- a/backend/src/routes/tickets.js
+++ b/backend/src/routes/tickets.js
@@ -78,11 +78,12 @@ router.get('/', (req, res) => {
ORDER BY t.updated_at DESC
`).all()
: db.prepare(`
- SELECT t.*,
+ SELECT t.*, u.display_name as user_name, u.email as user_email,
(SELECT COUNT(*) FROM ticket_messages WHERE ticket_id = t.id) as message_count,
(SELECT body FROM ticket_messages WHERE ticket_id = t.id ORDER BY created_at DESC LIMIT 1) as last_body,
(SELECT created_at FROM ticket_messages WHERE ticket_id = t.id ORDER BY created_at DESC LIMIT 1) as last_message_at
FROM tickets t
+ JOIN users u ON u.id = t.user_id
WHERE t.user_id = ?
ORDER BY t.updated_at DESC
`).all(userId);
diff --git a/frontend/src/pages/Communication.jsx b/frontend/src/pages/Communication.jsx
index c9c7de9..f6f8d92 100644
--- a/frontend/src/pages/Communication.jsx
+++ b/frontend/src/pages/Communication.jsx
@@ -24,7 +24,9 @@ function fmtSize(bytes) {
function initials(name) {
if (!name) return '?';
- return name.split(' ').map(w => w[0]).join('').toUpperCase().slice(0, 2);
+ // Si c'est un email, prendre les 2 premières lettres avant le @
+ if (name.includes('@')) return name.split('@')[0].slice(0, 2).toUpperCase();
+ return name.split(' ').filter(Boolean).map(w => w[0]).join('').toUpperCase().slice(0, 2);
}
// ── Avatar lettres ─────────────────────────────────────────────────────────
@@ -927,7 +929,7 @@ export default function Communication() {
className={`comm-list-row${selectedTicket === t.id ? ' selected' : ''}`}
onClick={() => openTicket(t.id)}
>
-