task_plan/include/task_template_manager.hpp

148 lines
4.3 KiB
C++
Raw Normal View History

2026-05-21 07:09:58 +00:00
#ifndef ETMS_TASK_TEMPLATE_MANAGER_HPP
#define ETMS_TASK_TEMPLATE_MANAGER_HPP
#include <string>
#include <vector>
#include <cstdint>
/**
* @brief
*
* t_task_template
* MinIO
*/
struct TaskTemplate {
std::string templateId; ///< 模板唯一标识
std::string name; ///< 模板名称
std::string version; ///< 版本号
std::string contentPath; ///< MinIO 对象存储路径
std::string metadata; ///< 元数据JSON 字符串)
int64_t createTime; ///< 创建时间戳 (毫秒)
uint64_t usageCount; ///< 使用频率计数
};
/**
* @brief
*
* t_kb_version
*/
struct KbVersion {
std::string versionId; ///< 版本标识
int64_t releaseDate; ///< 发布日期 (毫秒时间戳)
std::string description; ///< 版本描述
bool isActive; ///< 是否为当前活跃版本
};
/**
* @brief
*
*
* /使
*/
class TaskTemplateManager {
public:
/// @brief 默认构造函数
TaskTemplateManager();
/// @brief 虚析构函数
virtual ~TaskTemplateManager();
/// @brief 禁止拷贝
TaskTemplateManager(const TaskTemplateManager&) = delete;
TaskTemplateManager& operator=(const TaskTemplateManager&) = delete;
/// @brief 允许移动
TaskTemplateManager(TaskTemplateManager&&) noexcept;
TaskTemplateManager& operator=(TaskTemplateManager&&) noexcept;
/**
* @brief
*
* templateId
*
* @param tmpl
* @return true
*/
bool upsertTemplate(const TaskTemplate& tmpl);
/**
* @brief ID
* @param templateId
* @return true false
*/
bool removeTemplate(const std::string& templateId);
/**
* @brief ID
* @param templateId
* @return const TaskTemplate* nullptr
*/
const TaskTemplate* findTemplate(const std::string& templateId) const;
/**
* @brief
* @return const std::vector<TaskTemplate>&
*/
const std::vector<TaskTemplate>& getAllTemplates() const;
/**
* @brief
* @param ascending true: , false:
* @return std::vector<TaskTemplate>
*/
std::vector<TaskTemplate> getTemplatesSortedByName(bool ascending = true) const;
/**
* @brief 使
* @param ascending true: , false:
* @return std::vector<TaskTemplate>
*/
std::vector<TaskTemplate> getTemplatesSortedByUsage(bool ascending = false) const;
// ---- 知识库版本管理 ----
/**
* @brief
* @param version
* @return true
*/
bool addKbVersion(const KbVersion& version);
/**
* @brief
* @return const std::vector<KbVersion>&
*/
const std::vector<KbVersion>& getAllKbVersions() const;
/**
* @brief
* @param versionId
* @return true false
*/
bool activateKbVersion(const std::string& versionId);
/**
* @brief
* @return const KbVersion* nullptr
*/
const KbVersion* getActiveKbVersion() const;
/**
* @brief
* @return size_t
*/
size_t totalTemplates() const;
private:
std::vector<TaskTemplate> m_templates; ///< 模板存储容器(模拟 t_task_template 表)
std::vector<KbVersion> m_kbVersions; ///< 知识库版本存储(模拟 t_kb_version 表)
/**
* @brief
* @return int64_t
*/
static int64_t nowMs() noexcept;
};
#endif // ETMS_TASK_TEMPLATE_MANAGER_HPP