- Add TaskDumpRecorder to save task-related XML dumps and upload failure info to Telegram. - Integrate TaskDumpRecorder into `PayByPhoneScript` and `PayByCardScript` for Dushanbe and Ozon banks. - Extend ADB utilities to record XML dumps with TaskDumpRecorder and refine keyboard dismissal logic. - Enhance freeze detection with consecutive dump checks in CommonScript and payment scripts. - Update mock server profiles and scenario configurations with new material IDs.
55 lines
2.1 KiB
C++
55 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <QString>
|
|
|
|
// Мета-поля задачи. Пустые/нулевые значения не попадают в caption Telegram
|
|
// и в имя папки — выводятся только те, что релевантны конкретному типу задачи.
|
|
struct TaskDumpMeta {
|
|
QString materialId;
|
|
double amount = 0; // 0 = нет
|
|
QString phone; // пусто = нет
|
|
QString card; // пусто = нет
|
|
};
|
|
|
|
class TaskDumpRecorder {
|
|
public:
|
|
// Возвращает рекордер текущего потока (nullptr если задача не начата).
|
|
static TaskDumpRecorder* current();
|
|
|
|
// RAII-скоуп: при создании регистрирует рекордер на текущий поток,
|
|
// при разрушении — финализирует (успех/ошибка определяются по errorPtr).
|
|
class Scope {
|
|
public:
|
|
Scope(const QString &bank, const QString &taskKind,
|
|
const QString &adbDeviceId, const TaskDumpMeta &meta,
|
|
const QString *errorPtr);
|
|
~Scope();
|
|
Scope(const Scope &) = delete;
|
|
Scope &operator=(const Scope &) = delete;
|
|
private:
|
|
const QString *m_errorPtr;
|
|
};
|
|
|
|
// Сохраняет XML-дамп в папку задачи. Имя файла: NNNN_<screenTag>.xml.
|
|
void saveXml(int counter, const QString &xml);
|
|
|
|
private:
|
|
TaskDumpRecorder(const QString &bank, const QString &taskKind,
|
|
const QString &adbDeviceId, const TaskDumpMeta &meta);
|
|
|
|
static void begin(const QString &bank, const QString &taskKind,
|
|
const QString &adbDeviceId, const TaskDumpMeta &meta);
|
|
static void finish(const QString &errorMessage);
|
|
|
|
void finishInternal(const QString &errorMessage);
|
|
QString buildCaption(const QString &errorMessage) const;
|
|
|
|
QString m_folder;
|
|
QString m_bank;
|
|
QString m_taskKind;
|
|
QString m_adbDeviceIdRaw;
|
|
QString m_adbDeviceIdSafe;
|
|
TaskDumpMeta m_meta;
|
|
bool m_finished = false;
|
|
};
|