feat(chat): скрытие и плановое удаление диалогов
Админ может скрыть диалог тьютора (мягкое удаление), снять скрытие, отменить плановое удаление или удалить диалог физически через TTL общей настройки корзины. - chat_threads: deleted_at, purge_at (init.sql, migration.sql, ensureChatTables) - маршруты hide / restore / unschedule / permanent под requireAdmin + аудит - purgeScheduledDeletions() + hardDeleteChatThread() с safeUnlink по вложениям - скрытые диалоги видны тьютору как обычно; новое сообщение тьютора авто-возвращает диалог в список (thread_update по SSE) - UI: кнопка «Скрытые» с бейджем и действия в карточке треда - бэкап: deleted_at/purge_at в normalizeRestoreData
This commit is contained in:
@@ -478,6 +478,8 @@ function normalizeRestoreData(data) {
|
||||
last_message_text: optStr(x.last_message_text, 300),
|
||||
tutor_unread: optInt(x.tutor_unread, 0, 2147483647) ?? 0,
|
||||
admin_unread: optInt(x.admin_unread, 0, 2147483647) ?? 0,
|
||||
deleted_at: optTs(x.deleted_at),
|
||||
purge_at: optTs(x.purge_at),
|
||||
created_at: optTs(x.created_at),
|
||||
}));
|
||||
const chat_messages = (data.chat_messages || []).map(x => ({
|
||||
|
||||
Reference in New Issue
Block a user