320 lines
7.1 KiB
C
320 lines
7.1 KiB
C
#ifndef PROCEDUREDATA_H
|
||
#define PROCEDUREDATA_H
|
||
|
||
#include <QString>
|
||
#include <QStringList>
|
||
#include <QVector>
|
||
#include <QList>
|
||
#include <QVariantMap>
|
||
#include <QDateTime>
|
||
#include <QPair>
|
||
|
||
// =====================================================
|
||
// 基本枚舉類型
|
||
// =====================================================
|
||
|
||
// 步驟類型
|
||
enum class StepType
|
||
{
|
||
Manual, // 手動步驟
|
||
Automatic // 自動步驟
|
||
};
|
||
|
||
// 步驟狀態
|
||
enum class StepStatus
|
||
{
|
||
Pending, // 待執行
|
||
InProgress, // 執行中
|
||
Passed, // 已通過
|
||
Failed, // 未通過
|
||
Skipped, // 已跳過
|
||
Confirmed // 已確認(手動)
|
||
};
|
||
|
||
// 活動類型
|
||
enum class ActivityType
|
||
{
|
||
TEST_TASK_GROUP, // 測試任務組
|
||
RESULT_DISPLAY // 結果顯示
|
||
};
|
||
|
||
// 活動步驟
|
||
struct ActivityStep
|
||
{
|
||
ActivityType type = ActivityType::TEST_TASK_GROUP;
|
||
QString ref; // 引用ID
|
||
QString name; // 顯示名稱
|
||
};
|
||
|
||
// =====================================================
|
||
// 表格相關結構
|
||
// =====================================================
|
||
|
||
// 字段定義
|
||
struct FieldDefinition
|
||
{
|
||
QString id;
|
||
QString name;
|
||
QString label;
|
||
QString type; // numeric, text, selection, boolean, datetime, calculated
|
||
QVariant defaultValue;
|
||
QStringList options; // 用於 selection 類型
|
||
QString formula; // 用於 calculated 類型
|
||
QVariantMap validationRules;
|
||
bool isRequired = false;
|
||
bool isReadOnly = false;
|
||
bool editable = false;
|
||
bool visible = true;
|
||
QString unit;
|
||
QString description;
|
||
QString alignment;
|
||
int width = 100;
|
||
int decimals = 2;
|
||
bool uploadImmediately = false;
|
||
QVariantMap layoutConfig;
|
||
};
|
||
|
||
// 靜態單元格
|
||
struct StaticCell
|
||
{
|
||
int row = 0;
|
||
int column = 0;
|
||
QString field; // 字段ID(用於form類型表格)
|
||
QVariant value; // 靜態值
|
||
QString content; // 靜態文本內容
|
||
QString style;
|
||
};
|
||
|
||
// 表格定義
|
||
struct TableDefinition
|
||
{
|
||
QString tableId;
|
||
QString id;
|
||
QString name;
|
||
QString description;
|
||
QString tableType; // grid, form, series
|
||
int rowCount = 0;
|
||
int columnCount = 0;
|
||
QVariantMap layoutConfig;
|
||
bool isShared = false;
|
||
QString uploadStrategy; // immediate, grouped, byRow, onComplete
|
||
QList<QVariantMap> uploadGroups;
|
||
QList<FieldDefinition> columnHeaders; // 用於grid類型表格
|
||
QList<QPair<QString, QString>> rowHeaders; // 用於grid類型表格 (id, name)
|
||
QList<FieldDefinition> fields; // 用於form和series類型表格
|
||
QList<StaticCell> staticCells; // 靜態內容
|
||
};
|
||
|
||
// =====================================================
|
||
// 測試動作相關結構
|
||
// =====================================================
|
||
|
||
// 字段選擇器
|
||
struct FieldSelector
|
||
{
|
||
QString tableRef;
|
||
int row = -1;
|
||
int column = -1;
|
||
QString fieldName;
|
||
QStringList fields; // 用於form類型表格
|
||
QList<QPair<QString, QString>> cells; // 用於grid類型表格 (row, column)
|
||
bool ignore = false;
|
||
};
|
||
|
||
// 測試動作
|
||
struct TestAction
|
||
{
|
||
QString actionId;
|
||
QString id;
|
||
QString name;
|
||
QString actionType;
|
||
QString functionName;
|
||
QString document; // HTML格式的說明文檔
|
||
QString mode; // manual 或 auto
|
||
QString sequence;
|
||
QString functionType; // RESISTANCE_4WIRE, VOLTAGE_V, DATA_ACQUISITION 等
|
||
QString channel; // input1, input2, output1, output2
|
||
QVariantMap params; // 函數參數
|
||
QVariant functionParameters;
|
||
QVariantMap metadata;
|
||
QMap<QString, FieldSelector> inputs;
|
||
QMap<QString, FieldSelector> outputs;
|
||
QList<FieldSelector> dataFields;
|
||
QVariantMap validationCriteria;
|
||
QString uploadStrategy;
|
||
QStringList uploadFields;
|
||
int timeout = 30000;
|
||
int retryCount = 0;
|
||
|
||
// 運行時狀態
|
||
bool isCompleted = false;
|
||
bool isWaitingConfirm = false;
|
||
QVariantList results;
|
||
};
|
||
|
||
// 測試活動組(階段)
|
||
struct TestActivityGroup
|
||
{
|
||
QString groupId;
|
||
QString id;
|
||
QString name;
|
||
QString description;
|
||
QString document;
|
||
QString skipCondition;
|
||
QVariantMap metadata;
|
||
QStringList tableRefs;
|
||
QList<TestAction> actions;
|
||
|
||
// 運行時狀態
|
||
bool isCompleted = false;
|
||
bool isActionsParsed = false;
|
||
};
|
||
|
||
// 測試任務組
|
||
struct TestTaskGroup
|
||
{
|
||
QString taskGroupId;
|
||
QString id;
|
||
QString name;
|
||
QString description;
|
||
QString executionMode;
|
||
int loopCount = 1;
|
||
QVariantMap metadata;
|
||
QStringList tableRefs;
|
||
QList<TestActivityGroup> stages;
|
||
|
||
// 運行時狀態
|
||
bool isCompleted = false;
|
||
bool isParsed = false;
|
||
};
|
||
|
||
// 結果顯示
|
||
struct ResultDisplay
|
||
{
|
||
QString displayId;
|
||
QString id;
|
||
QString name;
|
||
QString displayType;
|
||
QString document;
|
||
QString tableRef;
|
||
QVariantMap passCondition;
|
||
QStringList tableRefs;
|
||
};
|
||
|
||
// =====================================================
|
||
// 程序配置結構
|
||
// =====================================================
|
||
|
||
struct ProcedureConfig
|
||
{
|
||
QString procedureId;
|
||
QString procedureName;
|
||
QString version;
|
||
QString description;
|
||
QString author;
|
||
QString document;
|
||
QVariantMap metadata;
|
||
|
||
// 活動序列 (旧格式,用于 ProcedureEngine)
|
||
QList<ActivityStep> activitySequence;
|
||
|
||
// 活動序列 (新格式,stores QVariant of TestTaskGroup or ResultDisplay,用于新解析器)
|
||
QList<QVariant> activityVariants;
|
||
|
||
// 定義存儲
|
||
QMap<QString, TestTaskGroup> testTaskGroups;
|
||
QMap<QString, TestActivityGroup> testActivityGroups;
|
||
QMap<QString, TestAction> testActions;
|
||
QMap<QString, ResultDisplay> resultDisplays;
|
||
QMap<QString, TableDefinition> tables;
|
||
|
||
// 舊版兼容
|
||
QList<TestTaskGroup> taskGroups;
|
||
};
|
||
|
||
// =====================================================
|
||
// 舊版兼容結構(用於ProcedureManager)
|
||
// =====================================================
|
||
|
||
// 表格字段定義(舊版)
|
||
struct TableField
|
||
{
|
||
QString id;
|
||
QString name;
|
||
QString type; // numeric, text, boolean
|
||
QString unit;
|
||
bool isRequired = false;
|
||
bool isHighlighted = false;
|
||
};
|
||
|
||
// 表格數據(舊版)
|
||
struct TableData
|
||
{
|
||
QString id;
|
||
QString name;
|
||
QString description;
|
||
QVector<TableField> columns;
|
||
QVector<QVariantMap> rows;
|
||
};
|
||
|
||
// 步驟定義(舊版)
|
||
struct StepData
|
||
{
|
||
QString id;
|
||
QString content;
|
||
StepType type = StepType::Manual;
|
||
StepStatus status = StepStatus::Pending;
|
||
QStringList tableRefs;
|
||
QStringList highlightFields;
|
||
QString result;
|
||
QDateTime executedAt;
|
||
QString executedBy;
|
||
QString cancelReason;
|
||
};
|
||
|
||
// 任務組定義(舊版)
|
||
struct TaskGroup
|
||
{
|
||
QString id;
|
||
QString name;
|
||
QVector<StepData> steps;
|
||
};
|
||
|
||
// 程序定義(舊版)
|
||
struct ProcedureData
|
||
{
|
||
QString id;
|
||
QString name;
|
||
QString version;
|
||
QString description;
|
||
QVector<TaskGroup> taskGroups;
|
||
QVector<TableData> tables;
|
||
QString workOrderId;
|
||
int completedSteps = 0;
|
||
int totalSteps = 0;
|
||
};
|
||
|
||
// 程序摘要(用於列表顯示)
|
||
struct ProcedureSummary
|
||
{
|
||
QString id;
|
||
QString name;
|
||
QString version;
|
||
QString description;
|
||
QString filePath;
|
||
};
|
||
|
||
// Qt Meta-Type Declarations for QVariant support
|
||
Q_DECLARE_METATYPE(FieldDefinition)
|
||
Q_DECLARE_METATYPE(StaticCell)
|
||
Q_DECLARE_METATYPE(TableDefinition)
|
||
Q_DECLARE_METATYPE(FieldSelector)
|
||
Q_DECLARE_METATYPE(TestAction)
|
||
Q_DECLARE_METATYPE(TestActivityGroup)
|
||
Q_DECLARE_METATYPE(TestTaskGroup)
|
||
Q_DECLARE_METATYPE(ResultDisplay)
|
||
Q_DECLARE_METATYPE(ProcedureConfig)
|
||
Q_DECLARE_METATYPE(ActivityStep)
|
||
|
||
#endif // PROCEDUREDATA_H
|