MetaCraft/scripts/plan-next.js

146 lines
4.9 KiB
JavaScript
Raw Permalink Normal View History

/**
* 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参考
// 注意:这些函数不会实际执行,仅作为文档说明