first commit

This commit is contained in:
2026-01-02 19:20:35 +09:00
commit a10cb30c4a
94 changed files with 28609 additions and 0 deletions

319
procedure/proceduredata.h Normal file
View 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