7/include/app.hpp

110 lines
3.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef ODF_MANAGEMENT_APP_HPP
#define ODF_MANAGEMENT_APP_HPP
#include "odf_unit.hpp"
#include "adapter_interface.hpp"
#include "naming_helper.hpp"
#include "config_template.hpp"
#include "project_milestone.hpp"
#include <string>
#include <vector>
/**
* @brief ODF 管理应用入口
*
* 提供顶层功能调度:创建 ODF 单元、管理适配器接口、
* 命名生成与校验、典型配置模板查询及项目里程碑跟踪。
*/
class App {
public:
/// @brief 构造函数
App();
// ==================== ODF 单元管理 ====================
/**
* @brief 添加一个 ODF 单元
* @param unit 单元信息
*/
void addOdfUnit(const OdfUnit& unit);
/// @brief 列出所有 ODF 单元摘要
[[nodiscard]] std::string listOdfUnits() const;
// ==================== 适配器接口管理 ====================
/**
* @brief 添加适配器接口规格
* @param iface 适配器接口信息
*/
void addAdapterInterface(const AdapterInterface& iface);
/// @brief 列出所有适配器接口
[[nodiscard]] std::string listAdapterInterfaces() const;
// ==================== 命名工具 ====================
/**
* @brief 校验编号格式
* @param code 编号字符串
* @return 校验结果说明
*/
[[nodiscard]] static std::string validateNamingFormat(const std::string& code);
/**
* @brief 生成示例编号
* @return 示例编号字符串
*/
[[nodiscard]] static std::string generateSampleNaming();
// ==================== 端口密度计算 ====================
/**
* @brief 计算单位高度1U端口密度
* @param rackHeightU 机柜高度U 为单位)
* @param totalPorts 总端口数
* @return 每 U 端口密度(端口数/U向下取整
*/
[[nodiscard]] static uint32_t calculatePortDensity(uint32_t rackHeightU,
uint32_t totalPorts);
// ==================== 配置模板 ====================
/// @brief 获取所有内置模板摘要
[[nodiscard]] std::string listTemplates() const;
/**
* @brief 根据机柜数量生成 BOM
* @param templateIndex 模板索引
* @param cabinetCount 机柜数量
* @return BOM 摘要字符串
*/
[[nodiscard]] std::string generateBom(size_t templateIndex, uint32_t cabinetCount) const;
// ==================== 项目里程碑 ====================
/**
* @brief 添加项目里程碑
* @param ms 里程碑信息
*/
void addMilestone(const ProjectMilestone& ms);
/// @brief 列出所有里程碑
[[nodiscard]] std::string listMilestones() const;
/**
* @brief 检查所有里程碑时间约束
* @return 约束检查结果说明
*/
[[nodiscard]] std::string checkMilestonesConstraint() const;
private:
std::vector<OdfUnit> units_;
std::vector<AdapterInterface> adapters_;
std::vector<ProjectMilestone> milestones_;
std::vector<ConfigTemplate> templates_;
};
#endif // ODF_MANAGEMENT_APP_HPP