|
OmniStacksStaticModules 2.0.0
|
Stacks 2 任务业务模块。 More...
Classes | |
| struct | TaskManager::TargetId |
| 可创建任务的看板目标 ID。 More... | |
| struct | TaskManager::TaskId |
| 已校验任务 ID;作为所有任务读写接口的稳定主键。 More... | |
| struct | TaskManager::TaskTitle |
| 任务标题;create/update 时仍会执行 trim 与空值校验。 More... | |
| struct | TaskManager::TaskDescription |
| 任务描述;允许空字符串,不改写 Markdown/HTML 内容。 More... | |
| struct | TaskManager::DatabasePaths |
| 三个运行数据库路径;一次传参避免同类 path 参数顺序错误。 More... | |
| struct | TaskManager::CreateTaskOptions |
| 创建任务所需的数据库与 Inbox 默认工作区。 More... | |
| struct | TaskManager::TaskInput |
| 创建任务输入;日期保留用户文本,由 normalize_date 在业务层校验。 More... | |
| struct | TaskManager::TaskPatch |
| 部分更新任务;optional 表示“未提供”,clear_* 表示“显式清空”。 More... | |
| struct | TaskManager::TaskListOptions |
| 任务列表的过滤条件;默认保留已完成任务、排除已归档任务。 More... | |
| struct | TaskManager::BoardTarget |
| 项目或清单的统一展示目标;WorkflowUI 用它构造 Alfred 条目。 More... | |
| struct | TaskManager::TaskRecord |
| 跨模块使用的任务只读快照;字段名对应 Stacks 文件与 UI 展示语义。 More... | |
| struct | TaskManager::TaskResult |
| 创建任务的稳定结果,不返回可被后续修改的内部 JSON。 More... | |
| struct | TaskManager::TimerRecord |
| Timers.json 中的运行中计时快照。 More... | |
| struct | TaskManager::StopTimerResult |
| 停止计时结果;timelog_id 可在任务文件中定位新记录。 More... | |
| struct | TaskManager::DeleteResult |
| 可恢复删除结果;trash_file 指向 tasks/.trash 中的副本。 More... | |
| struct | TaskManager::WeekBounds |
| 周一至周日的 ISO 日期区间。 More... | |
Functions | |
| TaskId | TaskManager::generate_id () |
| 生成线程安全的 20 字符任务 ID。 | |
| std::expected< TaskResult, TaskError > | TaskManager::create_task (TargetId target_id, TaskInput input, const CreateTaskOptions &options) |
| 在项目或清单下创建任务,并回滚“任务已写、项目未写”的半成功状态。 | |
| std::expected< TaskResult, TaskError > | TaskManager::create_inbox_task (TaskInput input, const CreateTaskOptions &options) |
| 在指定/默认工作区创建 Stacks project=inbox 任务。 | |
| std::expected< std::vector< BoardTarget >, TaskError > | TaskManager::list_boards (const DatabasePaths &paths) |
| 按项目名排序加载项目与清单的扁平列表。 | |
| std::expected< std::vector< TaskRecord >, TaskError > | TaskManager::list_tasks (const DatabasePaths &paths, const TaskListOptions &options={}) |
| 扫描所有工作区任务并按目标、完成状态、归档状态和关键词过滤。 | |
| std::expected< std::vector< TaskRecord >, TaskError > | TaskManager::list_week_due (const DatabasePaths &paths, std::optional< std::string > anchor_date=std::nullopt) |
| 返回指定自然周内未完成、未归档且有截止日期的任务。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::get_task (TaskId task_id, const DatabasePaths &paths) |
| 以任务 ID 在工作区索引中定位并读取任务快照。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::update_task (TaskId task_id, const TaskPatch &patch, const DatabasePaths &paths) |
| 应用部分更新;修改前后都会验证日期区间与优先级。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::set_due_date (TaskId task_id, std::string due_date, const DatabasePaths &paths) |
| 仅更新截止日期;内部复用 update_task。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::set_start_date (TaskId task_id, std::string start_date, const DatabasePaths &paths) |
| 仅更新开始日期;内部复用 update_task。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::set_schedule (TaskId task_id, std::string start_date, std::string due_date, const DatabasePaths &paths) |
| 同时更新开始与截止日期,并校验区间顺序。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::set_task_done (TaskId task_id, bool done, const DatabasePaths &paths) |
| 写入 Stacks 完成字段或清空完成状态。 | |
| std::expected< TaskRecord, TaskError > | TaskManager::archive_task (TaskId task_id, const DatabasePaths &paths) |
| 写入 archived 时间,保留任务文件供后续恢复。 | |
| std::expected< DeleteResult, TaskError > | TaskManager::delete_task (TaskId task_id, const DatabasePaths &paths) |
| 从所有项目引用移除任务,并把 .task 移入可恢复 .trash。 | |
| std::expected< TimerRecord, TaskError > | TaskManager::start_timer (TaskId task_id, const DatabasePaths &paths) |
| 在 Timers.json 中登记运行中计时;重复启动返回分类错误。 | |
| std::expected< StopTimerResult, TaskError > | TaskManager::stop_timer (TaskId task_id, const DatabasePaths &paths) |
| 停止计时、写 Stacks timelog,并在第二步失败时回滚任务文件。 | |
| std::expected< std::vector< TimerRecord >, TaskError > | TaskManager::list_timers (const DatabasePaths &paths) |
| 列出 Timers.json 中的运行中计时快照。 | |
| std::expected< std::string, TaskError > | TaskManager::normalize_date (std::string_view value, std::optional< std::string > anchor_date=std::nullopt) |
| 将 YYYY-MM-DD、today、tomorrow、+Nd 或英文星期解析为 ISO 日期。 | |
| WeekBounds | TaskManager::week_bounds (std::optional< std::string > anchor_date=std::nullopt) |
| 计算锚点日期所在周的周一/周日边界。 | |
| std::string_view | TaskManager::task_error_message (TaskError error) noexcept |
| 将 TaskError 映射为稳定的 CLI/Alfred 文本。 | |
| template<std::invocable< std::string_view > Visitor> | |
| std::expected< std::size_t, TaskError > | TaskManager::for_each_backlog_id (const std::filesystem::path &project_file, Visitor &&visitor) |
| 以函数对象遍历项目 backlog ID。 | |
Variables | |
| constexpr std::size_t | TaskManager::kTaskIdLength = 20 |
| 任务 ID 固定为 20 字符,变异测试会硬编码检查此协议。 | |
Stacks 2 任务业务模块。
职责边界:
所有写操作都通过同目录临时文件 + rename(2) 原子替换。需要同时更新 .task 和 .project 的创建操作带失败回滚;删除操作移动到 tasks/.trash。
实现边界:
Files | |
| file | /Users/runner/work/CXX-CMake-template/CXX-CMake-template/single-exe-static-modules/modules/task_manager/include/TaskManager.cppm |