/** * plan-next.js - 规划下一步功能的AI工具脚本 * * 此脚本描述MetaCraft的规划下一步功能逻辑,供AI参考使用。 * 实际执行由外部AI工具完成,本项目不包含执行环境。 * * 功能描述: * 1. 分析当前项目状态(待办任务、已完成任务) * 2. 根据优先级推荐下一个要完成的任务 * 3. 生成对应的prompt文件或下一步文档 * * 输入:无(读取meta/todo.md) * 输出:推荐的任务、生成的prompt文件或规划文档 * * 伪代码逻辑: */ // 任务优先级映射 const PRIORITY_MAP = { '核心功能开发': 'high', '基础设施': 'medium', '文档': 'medium', '测试与质量': 'medium', '未来功能': 'low' }; // 主函数:规划下一步流程 // 返回:推荐的任务信息和生成的文件信息 function planNextStep() { // 步骤1:读取待办任务文件 // 读取meta/todo.md内容 // 步骤2:解析任务 // 调用parseTodo函数解析任务列表 // 步骤3:推荐下一个任务 // 调用recommendNextTask函数,根据优先级和类别推荐任务 // 输出推荐结果和项目统计信息 // 步骤4:询问用户操作 // 提供选项: // 1. 为推荐任务生成prompt文件 // 2. 生成下一步规划文档 // 3. 两者都生成 // 4. 只显示推荐,不生成文件 // 步骤5:根据选择生成文件 // 如果选择1或3,调用generatePromptForTask生成prompt文件 // 如果选择2或3,调用generateNextStepDocument生成规划文档 // 步骤6:输出生成结果和后续建议 // 注意:此函数为伪代码描述,实际实现由外部AI工具完成 } // 辅助函数:解析待办任务内容 // 参数:todoContent - 待办任务文件的文本内容 // 返回:任务对象数组,每个对象包含category, description, checked, priority, raw等属性 function parseTodo(todoContent) { // 按行分割内容 // 遍历每一行,识别分类标题(## 分类名) // 识别任务项(- [ ] 任务描述 或 - [x] 任务描述) // 根据PRIORITY_MAP映射设置任务优先级 // 构建任务对象并添加到数组 // 返回任务数组 } // 辅助函数:分析项目状态并推荐下一个任务 // 参数:tasks - 任务对象数组 // 返回:包含recommended任务对象、stats统计数据和message推荐信息的对象 function recommendNextTask(tasks) { // 筛选未完成的任务(checked为false) // 如果所有任务都已完成,返回null推荐和信息 // 按优先级排序:high > medium > low // 使用priorityOrder映射(high:1, medium:2, low:3) // 同优先级按类别排序:核心功能开发 > 基础设施 > 文档 > 测试与质量 > 未来功能 // 选择排序后的第一个任务作为推荐任务 // 计算统计数据: // - totalTasks: 总任务数 // - completedTasks: 已完成任务数 // - pendingTasks: 待完成任务数 // - completionRate: 完成率百分比 // - pendingByCategory: 按类别统计的待完成任务数 // 返回包含推荐任务、统计数据和消息的对象 } // 辅助函数:为推荐的任务生成prompt文件 // 参数:task - 任务对象 // 返回:包含filePath, fileName, promptContent的对象或null function generatePromptForTask(task) { // 如果task为null,返回null // 生成文件名: // - 将任务描述转换为小写 // - 保留中文字符、英文字母、数字、空格 // - 移除其他特殊字符 // - 将连续空格替换为单个空格 // - 将空格替换为连字符(kebab-case) // - 移除开头的implement-前缀(如果存在) // - 添加.md扩展名 // 生成prompt内容: // - 包含任务标题 // - 元数据注释:target, priority, category // - 描述、要求、上下文、输出、约束等部分 // 确保prompts目录存在 // 写入文件 // 返回文件信息和内容 } // 辅助函数:生成下一步文档 // 参数:task - 任务对象,stats - 统计信息对象 // 返回:包含docFilePath, docFileName, docContent的对象或null function generateNextStepDocument(task, stats) { // 如果task为null,返回null // 确保输出目录docs/next-steps存在 // 生成文档文件名:next-step-YYYY-MM-DD.md // 生成文档内容: // - 标题:下一步规划:任务描述 // - 生成时间 // - 项目状态概览(总任务数、已完成、待完成、完成率) // - 按类别待完成任务列表 // - 推荐的下一个任务详情 // - 任务分析(为什么选择、预期影响) // - 详细需求(功能要求、技术实现考虑) // - 验收标准(复选框列表) // - 时间规划建议(阶段划分) // - 风险与缓解(技术风险、缓解措施) // - 后续任务建议 // 写入文件 // 返回文档信息和内容 } // 导出函数供AI参考 // 注意:这些函数不会实际执行,仅作为文档说明