fix: data-action buttons, sources enabled, email notify, ticket detail single-page

- app.js: mount page objects via inline script (CSP blocks eval → data-action buttons dead)
- app.js: add tickets list entry to sidebar nav (admin could not find claimed tickets)
- sources: GET /sources?manage=1 returns enabled field for admin view
- mailer: sendNotifyEmail consumes email-type notification_configs (webhook_url = recipients)
- tickets: trigger notify on created/claimed/transferred/updated/status-change
- notifications: email type shows recipient field, validates email list
- ticket-detail: single-page chat flow (player/staff bubbles) + processing log timeline
- css: chat bubble styles
This commit is contained in:
2026-08-22 20:00:12 +08:00
parent e5a1d693f1
commit c5ceba7cf0
9 changed files with 120 additions and 37 deletions

View File

@@ -259,6 +259,19 @@ tbody tr:last-child td{border-bottom:none}
font-size:13.5px;line-height:1.7;white-space:pre-wrap;border:1px solid var(--g2);
}
.timeline-item.staff .tc{background:var(--pl);border-color:rgba(99,102,241,.2)}
/* 对话流(工单详情单页) */
.chat-flow{display:flex;flex-direction:column;gap:12px;max-height:520px;overflow-y:auto;padding:4px 2px}
.chat-row{display:flex}
.chat-row.user{justify-content:flex-start}
.chat-row.staff{justify-content:flex-end}
.chat-bubble{max-width:78%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6}
.chat-row.user .chat-bubble{background:var(--g1);border:1px solid var(--g2);border-top-left-radius:2px}
.chat-row.staff .chat-bubble{background:var(--pl);border:1px solid rgba(99,102,241,.25);border-top-right-radius:2px;color:var(--g8)}
.chat-meta{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:11px}
.chat-row.user .chat-meta{flex-direction:row}
.chat-row.staff .chat-meta{flex-direction:row-reverse}
.chat-name{font-weight:600}
.chat-text{word-break:break-word}
/* ===== Empty / Loading / Alert ===== */
.empty{text-align:center;padding:60px 24px;color:var(--g5)}