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