feat: новая функция
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
# This software is proprietary and confidential.
|
||||
# For licensing inquiries: info@hb3-accelerator.com
|
||||
|
||||
FROM node:20-alpine
|
||||
FROM node:20-slim
|
||||
|
||||
# Добавляем метки для авторских прав
|
||||
LABEL maintainer="Тарабанов Александр Викторович <info@hb3-accelerator.com>"
|
||||
@@ -18,8 +18,12 @@ LABEL website="https://hb3-accelerator.com"
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Устанавливаем дополнительные зависимости
|
||||
RUN apk add --no-cache python3 make g++
|
||||
# Устанавливаем системные зависимости для компиляции нативных модулей
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3 \
|
||||
make \
|
||||
g++ \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Копируем package.json и yarn.lock для установки зависимостей
|
||||
COPY package.json yarn.lock ./
|
||||
|
||||
@@ -23,8 +23,8 @@ RUN apk add --no-cache curl
|
||||
# Копируем собранный frontend из первого этапа
|
||||
COPY --from=frontend-builder /app/dist/ /usr/share/nginx/html/
|
||||
|
||||
# Копируем конфигурацию nginx
|
||||
COPY nginx-simple.conf /etc/nginx/nginx.conf.template
|
||||
# Копируем конфигурацию nginx (используем dev версию для локальной разработки)
|
||||
COPY nginx-dev.conf /etc/nginx/nginx.conf.template
|
||||
|
||||
# Копируем скрипт запуска
|
||||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
@@ -491,7 +491,12 @@ async function handleAiReply() {
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Ошибка генерации ответа ИИ:', e);
|
||||
alert('Ошибка генерации ответа ИИ');
|
||||
// Используем более дружелюбное уведомление вместо alert
|
||||
emit('error', {
|
||||
type: 'ai-generation-error',
|
||||
message: 'Не удалось сгенерировать ответ ИИ. Попробуйте еще раз.',
|
||||
details: e.message
|
||||
});
|
||||
} finally {
|
||||
isAiLoading.value = false;
|
||||
}
|
||||
|
||||
@@ -431,7 +431,7 @@ async function handleSendMessage({ message, attachments }) {
|
||||
if (typeof ElMessageBox === 'function') {
|
||||
ElMessageBox.alert('Пользователь заблокирован. Отправка сообщений невозможна.', 'Ошибка', { type: 'error' });
|
||||
} else {
|
||||
alert('Пользователь заблокирован. Отправка сообщений невозможна.');
|
||||
console.error('Пользователь заблокирован. Отправка сообщений невозможна.');
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -441,7 +441,7 @@ async function handleSendMessage({ message, attachments }) {
|
||||
if (typeof ElMessageBox === 'function') {
|
||||
ElMessageBox.alert('У пользователя нет ни одного идентификатора (email, telegram, wallet). Сообщение не может быть отправлено.', 'Ошибка', { type: 'warning' });
|
||||
} else {
|
||||
alert('У пользователя нет ни одного идентификатора (email, telegram, wallet). Сообщение не может быть отправлено.');
|
||||
console.error('У пользователя нет ни одного идентификатора (email, telegram, wallet). Сообщение не может быть отправлено.');
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -464,14 +464,14 @@ async function handleSendMessage({ message, attachments }) {
|
||||
if (typeof ElMessageBox === 'function') {
|
||||
ElMessageBox.alert(resultText, 'Результат рассылки', { type: 'info' });
|
||||
} else {
|
||||
alert(resultText);
|
||||
console.log('Результат рассылки:', resultText);
|
||||
}
|
||||
await loadMessages();
|
||||
} catch (e) {
|
||||
if (typeof ElMessageBox === 'function') {
|
||||
ElMessageBox.alert('Ошибка отправки: ' + (e?.response?.data?.error || e?.message || e), 'Ошибка', { type: 'error' });
|
||||
} else {
|
||||
alert('Ошибка отправки: ' + (e?.response?.data?.error || e?.message || e));
|
||||
console.error('Ошибка отправки:', e?.response?.data?.error || e?.message || e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user