1
0
forked from BRT/arc

Refactor buildCaption in TaskDumpRecorder to improve HTML-escaped formatting, include additional metadata, and integrate LogArchiveSender for automatic error archive dispatch.

This commit is contained in:
slava 2026-05-21 14:48:54 +05:00
parent 4ab46b8b49
commit 0045c37d64

View File

@ -15,7 +15,9 @@
#include <qDebug>
#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<qint64>(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<qint64>(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("<b>%1</b>\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);