diff --git a/android/dump/TaskDumpRecorder.cpp b/android/dump/TaskDumpRecorder.cpp index 75dcc7a..acc9f87 100644 --- a/android/dump/TaskDumpRecorder.cpp +++ b/android/dump/TaskDumpRecorder.cpp @@ -15,7 +15,9 @@ #include #include "adb/AdbUtils.h" +#include "dao/SettingsDAO.h" #include "net/NetworkService.h" +#include "LogArchiveSender.h" namespace { @@ -164,14 +166,28 @@ TaskDumpRecorder::TaskDumpRecorder(const QString &bank, const QString &taskKind, } QString TaskDumpRecorder::buildCaption(const QString &errorMessage) const { - QString s = QString("Bank: %1 | Task: %2 | Device: %3") - .arg(m_bank, m_taskKind, m_adbDeviceIdRaw); - if (!m_meta.materialId.isEmpty()) s += QString("\nMaterial ID: %1").arg(m_meta.materialId); - if (m_meta.amount != 0) s += QString("\nAmount: %1").arg(static_cast(m_meta.amount)); - if (!m_meta.phone.isEmpty()) s += QString("\nPhone: %1").arg(m_meta.phone); - if (!m_meta.card.isEmpty()) s += QString("\nCard: %1").arg(m_meta.card); - s += QString("\nError: %1").arg(errorMessage.left(800)); - return s; + const QString apiToken = SettingsDAO::get("api_key"); + const QString timestamp = QDateTime::currentDateTime().toString(Qt::ISODate); + + QStringList head{QStringLiteral("[TASK_ERROR]")}; + if (!apiToken.isEmpty()) + head << QStringLiteral("[%1]").arg(apiToken.toHtmlEscaped()); + head << QStringLiteral("[%1]").arg(m_bank.toHtmlEscaped()); + head << QStringLiteral("[%1]").arg(m_taskKind.toHtmlEscaped()); + + QString body = QStringLiteral("Device: %1").arg(m_adbDeviceIdRaw.toHtmlEscaped()); + if (!m_meta.materialId.isEmpty()) + body += QStringLiteral("\nMaterial: %1").arg(m_meta.materialId.toHtmlEscaped()); + if (m_meta.amount != 0) + body += QStringLiteral("\nAmount: %1").arg(static_cast(m_meta.amount)); + if (!m_meta.phone.isEmpty()) + body += QStringLiteral("\nPhone: %1").arg(m_meta.phone.toHtmlEscaped()); + if (!m_meta.card.isEmpty()) + body += QStringLiteral("\nCard: %1").arg(m_meta.card.toHtmlEscaped()); + body += QStringLiteral("\nError: %1").arg(errorMessage.left(800).toHtmlEscaped()); + + return QStringLiteral("%1\n%2\n%3") + .arg(head.join(QStringLiteral(" ")), timestamp.toHtmlEscaped(), body); } void TaskDumpRecorder::saveXml(int counter, const QString &xml) { @@ -204,6 +220,9 @@ void TaskDumpRecorder::finishInternal(const QString &errorMessage) { qWarning() << "[TaskDumpRecorder] task failed:" << errorMessage << "folder:" << m_folder; + // application.log + БД (с WAL/SHM) уходят отдельным архивом через готовый sender. + LogArchiveSender::dispatch(QStringLiteral("TASK_ERROR")); + // Финальный скриншот текущего экрана if (!m_adbDeviceIdRaw.isEmpty()) { const QByteArray png = AdbUtils::captureScreenshotBytes(m_adbDeviceIdRaw);