7/include/project_milestone.hpp

62 lines
1.9 KiB
C++
Raw 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_PROJECT_MILESTONE_HPP
#define ODF_MANAGEMENT_PROJECT_MILESTONE_HPP
#include <string>
#include <cstdint>
/// @brief 里程碑阶段枚举
enum class MilestoneStage : uint8_t {
Requirements = 0, ///< 需求确认
DesignReview = 1, ///< 设计评审
Prototype = 2, ///< 样机测试
Verification = 3, ///< 验证测试
Delivery = 4 ///< 批量交付
};
/**
* @brief 项目里程碑信息
*
* 记录 ODF 项目各关键节点的计划时间、负责人与完成状态。
* 约束:样机测试不得晚于第 6 周,最终交付不迟于第 12 周。
*/
struct ProjectMilestone {
MilestoneStage stage; ///< 阶段名称
uint32_t weekStart; ///< 计划开始周(从项目启动算起,第 1 周起)
uint32_t weekEnd; ///< 计划结束周
std::string owner; ///< 负责人
bool completed; ///< 完成状态true 已完成)
/**
* @brief 构造项目里程碑
* @param stage 阶段
* @param weekStart 计划开始周
* @param weekEnd 计划结束周
* @param owner 负责人
* @param completed 是否完成
*/
ProjectMilestone(MilestoneStage stage,
uint32_t weekStart,
uint32_t weekEnd,
std::string owner,
bool completed);
/// @brief 默认构造函数
ProjectMilestone() = default;
/// @brief 阶段名称字符串
[[nodiscard]] std::string stageString() const;
/// @brief 返回里程碑摘要
[[nodiscard]] std::string summary() const;
/**
* @brief 检查时间约束是否满足
* @return 满足返回 true
*
* 规则:样机测试(Prototype)结束周 ≤ 6交付(Delivery)结束周 ≤ 12
*/
[[nodiscard]] bool checkTimeConstraint() const;
};
#endif // ODF_MANAGEMENT_PROJECT_MILESTONE_HPP