first commit
This commit is contained in:
319
procedure/proceduredata.h
Normal file
319
procedure/proceduredata.h
Normal file
@@ -0,0 +1,319 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user