Merge branch release/22.0.beta of zentao/zentaopms (#13365)
This commit is contained in:
@@ -628,9 +628,9 @@ define('TABLE_SPACE', '`' . $config->db->prefix . 'space`');
|
||||
define('TABLE_INSTANCE', '`' . $config->db->prefix . 'instance`');
|
||||
define('TABLE_ARTIFACTREPO', '`' . $config->db->prefix . 'artifactrepo`');
|
||||
|
||||
define('TABLE_AI_PROMPT', '`' . $config->db->prefix . 'ai_prompt`');
|
||||
define('TABLE_AI_PROMPTFIELD', '`' . $config->db->prefix . 'ai_promptfield`');
|
||||
define('TABLE_AI_PROMPTROLE', '`' . $config->db->prefix . 'ai_promptrole`');
|
||||
define('TABLE_AI_AGENT', '`' . $config->db->prefix . 'ai_agent`');
|
||||
define('TABLE_AI_AGENTFIELD', '`' . $config->db->prefix . 'ai_agentfield`');
|
||||
define('TABLE_AI_AGENTROLE', '`' . $config->db->prefix . 'ai_agentrole`');
|
||||
define('TABLE_AI_MINIPROGRAM', '`' . $config->db->prefix . 'ai_miniprogram`');
|
||||
define('TABLE_AI_MINIPROGRAMFIELD', '`' . $config->db->prefix . 'ai_miniprogramfield`');
|
||||
define('TABLE_AI_MINIPROGRAMSTAR', '`' . $config->db->prefix . 'ai_miniprogramstar`');
|
||||
@@ -734,7 +734,7 @@ $config->objectTables['lang'] = TABLE_LANG;
|
||||
$config->objectTables['review'] = TABLE_REVIEW;
|
||||
$config->objectTables['effort'] = TABLE_EFFORT;
|
||||
$config->objectTables['design'] = TABLE_DESIGN;
|
||||
$config->objectTables['prompt'] = TABLE_AI_PROMPT;
|
||||
$config->objectTables['prompt'] = TABLE_AI_AGENT;
|
||||
$config->objectTables['aiapp'] = TABLE_AI_MINIPROGRAM;
|
||||
$config->objectTables['miniprogram'] = TABLE_AI_MINIPROGRAM;
|
||||
$config->objectTables['roadmap'] = TABLE_ROADMAP;
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
RENAME TABLE `zt_ai_prompt` TO `zt_ai_agent`;
|
||||
RENAME TABLE `zt_ai_promptrole` TO `zt_ai_agentrole`;
|
||||
RENAME TABLE `zt_ai_promptfield` TO `zt_ai_agentfield`;
|
||||
|
||||
ALTER TABLE `zt_ai_agent`
|
||||
ADD COLUMN `code` varchar(30) NOT NULL DEFAULT '' COMMENT '内部 code'
|
||||
AFTER `id`;
|
||||
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_story_polishing'
|
||||
WHERE `name` = '需求润色' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_story_to_testcase'
|
||||
WHERE `name` = '一键拆用例' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_task_polishing'
|
||||
WHERE `name` = '任务润色' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_story_to_task'
|
||||
WHERE `name` = '需求转任务' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_bug_polishing'
|
||||
WHERE `name` = 'Bug润色' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_doc_polishing'
|
||||
WHERE `name` = '文档润色' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_bug_to_story'
|
||||
WHERE `name` = 'Bug转需求' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_split_productplan'
|
||||
WHERE `name` = '拆分一个子计划' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_story_review'
|
||||
WHERE `name` = '需求评审' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_create_doc'
|
||||
WHERE `name` = '编写开发设计文档智能体' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_story_prototype'
|
||||
WHERE `name` = '绘制需求原型图智能体' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_release_newsletter'
|
||||
WHERE `name` = '编写发布新闻稿' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_project_proposal'
|
||||
WHERE `name` = '编写立项报告' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_project_finalreport'
|
||||
WHERE `name` = '编写结项报告' AND `createdBy` = 'system';
|
||||
UPDATE `zt_ai_agent`
|
||||
SET `code` = 'zt_automatic_test'
|
||||
WHERE `name` = '编写自动化测试脚本' AND `createdBy` = 'system';
|
||||
+34
-28
@@ -15286,9 +15286,10 @@ CREATE TABLE IF NOT EXISTS `zt_ai_model` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_ai_prompt`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_ai_prompt` (
|
||||
-- DROP TABLE IF EXISTS `zt_ai_agent`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_ai_agent` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`code` varchar(30) NOT NULL DEFAULT '' COMMENT '内部 code',
|
||||
`name` varchar(20) NOT NULL DEFAULT '',
|
||||
`desc` text DEFAULT NULL,
|
||||
`model` varchar(255) NOT NULL DEFAULT '',
|
||||
@@ -15309,29 +15310,27 @@ CREATE TABLE IF NOT EXISTS `zt_ai_prompt` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO `zt_ai_prompt` (`id`, `name`, `desc`, `model`, `module`, `source`, `targetForm`, `purpose`, `elaboration`, `role`, `characterization`, `createdBy`, `createdDate`, `status`) VALUES
|
||||
(1, '需求润色', '优化需求中标题、描述和验收标准等字段,使表述清晰准确。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'story.change', '帮忙优化其中各字段的表述,使表述清晰准确。必要时可以修改需求使其更加合理。', '需求描述格式建议使用:作为一名<某种类型的用户>,我希望<达成某些目的>,这样可以<开发的价值>。验收标准建议列举多条。直接给出你的润色结果,无需建议。', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(2, '一键拆用例', '为需求生成一个或多个对应的测试用例。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'story.testcasecreate', '为这个需求生成一个或多个对应的测试用例。', '', '作为一名资深的测试工程师。', '熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。开发工程师应该是专业且严谨的。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(3, '任务润色', '优化任务中标题、描述等字段的表述,使任务表述更清晰准确。', 0, 'task', ',task.name,task.desc,task.pri,task.status,task.estimate,task.consumed,task.left,task.progress,task.estStarted,task.realStarted,', 'task.edit', '优化其中各字段的表述,使表述清晰准确,明确任务目标。', '必要时指出任务的风险点。', '你是一名经验丰富的开发工程师。', '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(4, '需求转任务', '根据需求的标题、描述和验收标准等,将需求转化为对应的可实施的开发任务。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'story.totask', '将需求转化为对应的开发任务要求。', '', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。同时精通多种编程语言和框架、熟悉前后端技术。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(5, 'Bug润色', '优化需求中标题、描述和验收标准等字段,使表述清晰准确。', 0, 'bug', ',bug.title,bug.steps,bug.severity,bug.pri,bug.status,bug.confirmed,bug.type,', 'bug.edit', '优化其中各字段的表述,使表述清晰准确。', 'Bug描述格式建议使用:[步骤]<一步一步复现Bug的步骤>[结果]<Bug导致的结果描述>[期望]<Bug修复后期望的描述>', '作为一名资深的测试工程师。', '熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。开发工程师应该是专业且严谨的。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(6, '文档润色', '优化任务中标题、描述等字段的表述,使任务表述更清晰准确。', 0, 'doc', ',doc.content,doc.title,', 'doc.edit', '我希望你能帮我润色标题和文档正文。', '要求语句要通顺,逻辑要清晰,没有错别字且更具结构化。', '你是一名文章写得很好的文案编辑。', '文笔流畅、条理清晰。精通广告文案写作和编辑,擅长创意思维和品牌策略,能够进行市场调研和竞品分析,具有敏锐的审美和语言表达能力,能够协调多部门合作和项目管理,具有良好的沟通和协调能力。', 'system', '2023-08-31 15:54:57', 'active'),
|
||||
(7, 'Bug转需求', '根据Bug数据转化为相应的研发需求。', 0, 'bug', ',bug.title,bug.steps,bug.severity,bug.pri,bug.status,bug.confirmed,bug.type,', 'story.create', '请将Bug转化为相应的研发需求。', '分条编写需求描述,分条编写验收标准,需求逻辑条理清晰。', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2023-11-17 12:00:00', 'active'),
|
||||
(8, '拆分一个子计划', '优化需求中标题、描述和验收标准等字段,使表述清晰准确。', 0, 'productplan', ',productplan.title,productplan.desc,productplan.begin,productplan.end,', 'productplan.create', '根据给定计划名称、描述、计划开始时间和计划结束时间,将给定计划明确为其小范围的子计划。拆分出来的子计划可以更专注于给定计划中的某一类工作。 ', '要求子计划的时间不能超出计划开始时间和计划结束时间,并且名称不能与原计划名称相同。润色子计划的描述。', '请你扮演一名资深的产品经理。', '负责产品计划、设计、用户体验等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2023-11-17 12:00:00', 'active'),
|
||||
(9, '需求评审', '对需求进行结构完整性、逻辑一致性和标准符合性评审,并输出优化改进建议。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'empty.empty', '## 核心专业能力\n\n- 结构完整性分析(角色、动作、目标、约束要素)\n- 逻辑一致性分析(单条及多条需求之间的合理性)\n- 评审标准适配(INVEST、SMART或自定义标准)\n- 优先级归类评审建议(突出最关键问题,辅助次要优化)\n- 正式、清晰、专业的输出风格(无emoji,注重结构)\n\n## 工作风格\n\n- 一轮输出,结构化归类\n- 引导用户先聚焦最关键问题\n- 提供清晰、专业、可操作的完善方向\n- 语言正式、客观,保持体验流畅且不压迫\n\n\n## 评审交互流程\n\n1. 接收需求文本(来源于需求详情点击或输入)\n2. 进行结构与逻辑完整性检查\n3. 按重要性将评审建议归为两大类:\n- 核心优先改进项(必须优先处理)\n- 次要优化建议(在有时间或资源时进一步完善)\n4. 一次性输出完整评审结果,不进行多轮追问\n5. 引导用户先集中处理核心问题,如有余力再逐步优化次要问题\n\n## 输出结构要求\n\n- 统一使用正式Markdown结构,分清主次\n- 首先输出【评审总结】,概述整体需求状态\n- 然后分为两个部分输出:\n- 第一部分:核心优先改进项\n- 第二部分:次要优化建议\n- 每个建议应简明扼要,突出问题与优化方向\n- 不使用emoji或花哨符号,保持专业正式风格\n\n## 输出示范结构\n\n## 需求评审结果总结\n\n本次评审分析显示,需求整体情况如下:\n- 结构完整性:基本完整/存在缺失\n- 逻辑一致性:连贯/存在冲突\n- 标准符合性(如INVEST):符合/部分符合/存在明显缺口\n\n## 核心优先改进项\n\n以下问题建议优先处理,以保证需求的可实现性与后续交付质量:\n\n1. (最重要问题简述)\n2. (次重要问题简述)\n3. (其他关键问题简述)\n\n## 次要优化建议\n\n在核心问题处理完毕后,可进一步关注以下细节优化:\n\n1. (次要问题简述)\n2. (细节补充建议)\n3. (未来增强方向提示)\n\n## 小结\n\n根据用户本次的改进项目,给出总结。', '## 附加控制策略\n- 若检测到需求长度或复杂度超出正常范围,可适度缩减次要优化建议,只列出最相关的补充方向。\n- 若累计对话Token数接近10000时,友好提示建议保存成果并新开对话,避免性能下降。', '你是一位资深的需求评审专家,专注于帮助项目管理团队提升需求条目的完整性、逻辑性与可实现性。', '你的职责是基于专业评审方法,在一次完整分析中,系统性提出归类清晰、重点突出的评审建议,引导用户高效完善需求。如果用户问询需求评审以外的问题,可以给与简单响应后,拉回需求评审中。', 'system', '2025-10-31 12:00:00', 'active'),
|
||||
(10, '编写开发设计文档智能体', '根据任务的名称、描述、设计类型、后端框架、前端框架和数据库类型等信息生成一篇开发设计文档。', 0, 'task', ',task.name,task.desc,task.pri,task.status,task.estimate,task.consumed,task.left,task.progress,task.estStarted,task.realStarted,task.story,', 'doc.create', '请根据任务数据、 <设计类型> 、 <后端框架> 、 <前端框架> 和 <数据库类型> 生成一篇开发设计文档。', '', '你是一名经验丰富的开发工程师。', '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。', 'system', '2025-11-30 12:00:00', 'active'),
|
||||
(11, '绘制需求原型图智能体', '根据输入的需求信息, 生成一个HTML格式的原型图示例。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'empty.empty', '根据输入的需求信息,生成一个HTML格式的原型图示例。原型图应包含以下部分:
|
||||
1. 标题
|
||||
2. 整体结构框架(如导航栏、侧边栏、主要内容区)
|
||||
3. 各功能模块的简要设计(如按钮、表单、图表等)
|
||||
4. 交互设计提示(如如何进行用户操作)
|
||||
5. 请生成完整的 HTML5 页面代码,包括开始的 `<!DOCTYPE html>` 和 结束的 `</html>`,使用 markdown html 代码块表示,如果有多个页面请使用多个代码块表示。
|
||||
6. 如果页面有 CSS,应该直接在 HTML 页面内使用内联样式`<style>`表示,而不是链接单独的 CSS 文件。', '', '请你扮演一名资深的产品经理。', '负责绘制需求原型图的过程。您将需求转化为可视化的原型图,同时确保其符合需求描述和需求验收标准。', 'system', '2025-11-30 12:00:00', 'active');
|
||||
INSERT INTO `zt_ai_agent` (`id`, `code`, `name`, `desc`, `model`, `module`, `source`, `targetForm`, `purpose`, `elaboration`, `role`, `characterization`, `createdBy`, `createdDate`, `status`) VALUES
|
||||
(1, 'zt_story_polishing', '需求润色', '优化需求中标题、描述和验收标准等字段,使表述清晰准确。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'story.change', '帮忙优化其中各字段的表述,使表述清晰准确。必要时可以修改需求使其更加合理。', '需求描述格式建议使用:作为一名<某种类型的用户>,我希望<达成某些目的>,这样可以<开发的价值>。验收标准建议列举多条。直接给出你的润色结果,无需建议。', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(2, 'zt_story_to_testcase', '一键拆用例', '为需求生成一个或多个对应的测试用例。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'story.testcasecreate', '为这个需求生成一个或多个对应的测试用例。', '', '作为一名资深的测试工程师。', '熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。开发工程师应该是专业且严谨的。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(3, 'zt_task_polishing', '任务润色', '优化任务中标题、描述等字段的表述,使任务表述更清晰准确。', 0, 'task', ',task.name,task.desc,task.pri,task.status,task.estimate,task.consumed,task.left,task.progress,task.estStarted,task.realStarted,', 'task.edit', '优化其中各字段的表述,使表述清晰准确,明确任务目标。', '必要时指出任务的风险点。', '你是一名经验丰富的开发工程师。', '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(4, 'zt_story_to_task', '需求转任务', '根据需求的标题、描述和验收标准等,将需求转化为对应的可实施的开发任务。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'story.totask', '将需求转化为对应的开发任务要求。', '', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。同时精通多种编程语言和框架、熟悉前后端技术。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(5, 'zt_bug_polishing', 'Bug润色', '优化需求中标题、描述和验收标准等字段,使表述清晰准确。', 0, 'bug', ',bug.title,bug.steps,bug.severity,bug.pri,bug.status,bug.confirmed,bug.type,', 'bug.edit', '优化其中各字段的表述,使表述清晰准确。', 'Bug描述格式建议使用:[步骤]<一步一步复现Bug的步骤>[结果]<Bug导致的结果描述>[期望]<Bug修复后期望的描述>', '作为一名资深的测试工程师。', '熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。开发工程师应该是专业且严谨的。', 'system', '2023-08-10 13:24:14', 'active'),
|
||||
(6, 'zt_doc_polishing', '文档润色', '优化任务中标题、描述等字段的表述,使任务表述更清晰准确。', 0, 'doc', ',doc.content,doc.title,', 'doc.edit', '我希望你能帮我润色标题和文档正文。', '要求语句要通顺,逻辑要清晰,没有错别字且更具结构化。', '你是一名文章写得很好的文案编辑。', '文笔流畅、条理清晰。精通广告文案写作和编辑,擅长创意思维和品牌策略,能够进行市场调研和竞品分析,具有敏锐的审美和语言表达能力,能够协调多部门合作和项目管理,具有良好的沟通和协调能力。', 'system', '2023-08-31 15:54:57', 'active'),
|
||||
(7, 'zt_bug_to_story', 'Bug转需求', '根据Bug数据转化为相应的研发需求。', 0, 'bug', ',bug.title,bug.steps,bug.severity,bug.pri,bug.status,bug.confirmed,bug.type,', 'story.create', '请将Bug转化为相应的研发需求。', '分条编写需求描述,分条编写验收标准,需求逻辑条理清晰。', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2023-11-17 12:00:00', 'active'),
|
||||
(8, 'zt_split_productplan', '拆分一个子计划', '优化需求中标题、描述和验收标准等字段,使表述清晰准确。', 0, 'productplan', ',productplan.title,productplan.desc,productplan.begin,productplan.end,', 'productplan.create', '根据给定计划名称、描述、计划开始时间和计划结束时间,将给定计划明确为其小范围的子计划。拆分出来的子计划可以更专注于给定计划中的某一类工作。 ', '要求子计划的时间不能超出计划开始时间和计划结束时间,并且名称不能与原计划名称相同。润色子计划的描述。', '请你扮演一名资深的产品经理。', '负责产品计划、设计、用户体验等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2023-11-17 12:00:00', 'active'),
|
||||
(9, 'zt_story_review', '需求评审', '对需求进行结构完整性、逻辑一致性和标准符合性评审,并输出优化改进建议。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'empty.empty', '## 核心专业能力\n\n- 结构完整性分析(角色、动作、目标、约束要素)\n- 逻辑一致性分析(单条及多条需求之间的合理性)\n- 评审标准适配(INVEST、SMART或自定义标准)\n- 优先级归类评审建议(突出最关键问题,辅助次要优化)\n- 正式、清晰、专业的输出风格(无emoji,注重结构)\n\n## 工作风格\n\n- 一轮输出,结构化归类\n- 引导用户先聚焦最关键问题\n- 提供清晰、专业、可操作的完善方向\n- 语言正式、客观,保持体验流畅且不压迫\n\n\n## 评审交互流程\n\n1. 接收需求文本(来源于需求详情点击或输入)\n2. 进行结构与逻辑完整性检查\n3. 按重要性将评审建议归为两大类:\n- 核心优先改进项(必须优先处理)\n- 次要优化建议(在有时间或资源时进一步完善)\n4. 一次性输出完整评审结果,不进行多轮追问\n5. 引导用户先集中处理核心问题,如有余力再逐步优化次要问题\n\n## 输出结构要求\n\n- 统一使用正式Markdown结构,分清主次\n- 首先输出【评审总结】,概述整体需求状态\n- 然后分为两个部分输出:\n- 第一部分:核心优先改进项\n- 第二部分:次要优化建议\n- 每个建议应简明扼要,突出问题与优化方向\n- 不使用emoji或花哨符号,保持专业正式风格\n\n## 输出示范结构\n\n## 需求评审结果总结\n\n本次评审分析显示,需求整体情况如下:\n- 结构完整性:基本完整/存在缺失\n- 逻辑一致性:连贯/存在冲突\n- 标准符合性(如INVEST):符合/部分符合/存在明显缺口\n\n## 核心优先改进项\n\n以下问题建议优先处理,以保证需求的可实现性与后续交付质量:\n\n1. (最重要问题简述)\n2. (次重要问题简述)\n3. (其他关键问题简述)\n\n## 次要优化建议\n\n在核心问题处理完毕后,可进一步关注以下细节优化:\n\n1. (次要问题简述)\n2. (细节补充建议)\n3. (未来增强方向提示)\n\n## 小结\n\n根据用户本次的改进项目,给出总结。', '## 附加控制策略\n- 若检测到需求长度或复杂度超出正常范围,可适度缩减次要优化建议,只列出最相关的补充方向。\n- 若累计对话Token数接近10000时,友好提示建议保存成果并新开对话,避免性能下降。', '你是一位资深的需求评审专家,专注于帮助项目管理团队提升需求条目的完整性、逻辑性与可实现性。', '你的职责是基于专业评审方法,在一次完整分析中,系统性提出归类清晰、重点突出的评审建议,引导用户高效完善需求。如果用户问询需求评审以外的问题,可以给与简单响应后,拉回需求评审中。', 'system', '2025-10-31 12:00:00', 'active'),
|
||||
(10, 'zt_create_doc', '编写开发设计文档智能体', '根据任务的名称、描述、设计类型、后端框架、前端框架和数据库类型等信息生成一篇开发设计文档。', 0, 'task', ',task.name,task.desc,task.pri,task.status,task.estimate,task.consumed,task.left,task.progress,task.estStarted,task.realStarted,task.story,', 'doc.create', '请根据任务数据、 <设计类型> 、 <后端框架> 、 <前端框架> 和 <数据库类型> 生成一篇开发设计文档。', '', '你是一名经验丰富的开发工程师。', '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。', 'system', '2025-11-30 12:00:00', 'active'),
|
||||
(11, 'zt_story_prototype', '绘制需求原型图智能体', '根据输入的需求信息, 生成一个HTML格式的原型图示例。', 0, 'story', ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'empty.empty', '根据输入的需求信息,生成一个HTML格式的原型图示例。原型图应包含以下部分:\n1. 标题\n2. 整体结构框架(如导航栏、侧边栏、主要内容区)\n3. 各功能模块的简要设计(如按钮、表单、图表等)\n4. 交互设计提示(如如何进行用户操作)\n5. 请生成完整的 HTML5 页面代码,包括开始的 \\`<!DOCTYPE html>\\` 和 结束的 \\`</html>\\`,使用 markdown html 代码块表示,如果有多个页面请使用多个代码块表示。\n6. 如果页面有 CSS,应该直接在 HTML 页面内使用内联样式\\`<style>\\`表示,而不是链接单独的 CSS 文件。', '', '请你扮演一名资深的产品经理。', '负责绘制需求原型图的过程。您将需求转化为可视化的原型图,同时确保其符合需求描述和需求验收标准。', 'system', '2025-11-30 12:00:00', 'active'),
|
||||
(12, 'zt_release_newsletter', '编写发布新闻稿', '根据发布详情信息、需求列表和Bug列表生成符合模板规范的新闻稿。', 0, 'release', ',release.product,release.name,release.desc,release.date,stories.title,stories.estimate,bugs.title,', 'doc.create', '请根据发布信息以及发布中关联的需求和Bug编写发布新闻稿。\n要求: 1.新闻稿格式严格参考产品**新闻稿通用模板**:\n#### **新闻标题** **\\[产品名称\\] \\[版本号\\] 正式发布,新增\\[亮点功能\\]!**\n#### **新闻导语** 大家好, 我们很高兴地宣布,**\\[产品名称\\] \\[版本号\\] 正式发布!** **本次发布新增了\\[核心功能名称\\]!** 该功能支持\\[简要功能描述\\],帮助用户\\[解决什么问题\\],提升\\[具体价值\\]。 同时,我们优化了\\[其他方面\\],安装更简单,修复了已知Bug。\n#### **新增功能亮点**\n**本版本主要新增功能包括:**\n- **\\[功能模块1\\]**:\\[具体功能点\\]\n- **\\[功能模块2\\]**:\\[具体功能点\\]\n- **\\[优化改进\\]**:\\[具体优化点\\]\n#### **功能详细说明**\n- **跨\\[产品/项目\\]协作**\n- 支持\\[具体应用场景\\]\n- 解决\\[用户痛点\\]\n- **安装与部署优化**\n- 安装向导简化\n- 解压/安装速度提升\n- **界面与体验改进**\n- 用户界面升级\n- 操作流程优化\n#### **下载与安装** 我们提供多种安装方式:\n- **Windows版** - \\[安装版下载\\]\n- \\[免安装版下载\\] - **Linux版**\n- \\[安装版下载\\]\n- \\[免安装版下载\\]\n- **源码版** - \\[PHP 7.x版\\]\n- \\[PHP 8.x版\\]\n- **Docker镜像**\n- \\[Docker Hub地址\\]\n#### **文档支持** - 安装指南:\\[链接\\] - 升级指南:\\[链接\\] - 使用手册:\\[链接\\] - 常见问题解答:\\[链接\\]\n#### **结语** 新版本将为用户带来更好的使用体验和更高的工作效率,感谢大家一直以来的支持与反馈!我们将继续努力,提供更优秀的产品和服务! 2.新闻稿通用模板中的功能亮点需要对需求列表中的需求进行总结,在功能详细说明里面描述清楚。\n3.将markdown格式渲染出来', '', '请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'system', '2025-12-30 12:00:00', 'active'),
|
||||
(13, 'zt_project_proposal', '编写立项报告', '根据项目基本信息、阶段或迭代信息生成项目立项报告。', 0, 'project', ',project.name,project.type,project.desc,project.begin,project.end,project.estimate,programplans.name,programplans.desc,programplans.status,programplans.begin,programplans.end,programplans.realBegan,programplans.realEnd,programplans.progress,programplans.estimate,programplans.consumed,programplans.left,executions.name,executions.desc,executions.status,executions.begin,executions.end,executions.realBegan,executions.realEnd,executions.estimate,executions.consumed,executions.progress,', 'doc.create', '请根据项目信息、阶段或迭代信息生成一份项目立项报告。\n要求: 1.严格参考项目立项报告模板:\n## 一、项目基本信息\n| 项目名称 | 项目代号 | 所属部门 | 项目负责人 | 开始日期 | 结束日期 | 预计周期 | 项目类型 | 项目阶段 |\n|----------|----------|----------|------------|----------|----------|-----------|-----------|-----------|\n| | | | | | | | | |\n## 二、项目背景与立项目的\n### 1. 项目背景 简要说明项目产生的背景、市场或业务需求,以及项目的必要性。\n### 2. 立项目的 明确项目的目标,以及希望通过本项目实现的战略或业务目标。\n## 三、项目目标与关键指标(OKR)\n| 目标 | 关键结果(KR) | 责任人 | 完成时间 |\n|------|----------------|--------|----------|\n| | | | | | | | | |\n## 四、项目范围与内容\n### 1. 项目范围 简要说明本项目的开发范围,包括产品功能、技术实现、市场定位等。\n### 2. 主要功能/产品特性 列出产品的核心功能或主要特性,说明其市场价值与竞争优势。\n### 3. 目标用户群 明确产品的目标用户群体,包括年龄、性别、使用场景等信息。\n## 五、市场与竞争分析\n### 1. 市场需求 分析当前市场对本产品的需求情况,包括市场规模、增长率、用户痛点等。\n### 2. 竞争分析 简述主要竞争对手的产品情况、市场占有率、优势与劣势。\n### 3. 项目差异化优势 说明本项目相较于竞品的差异化优势。\n## 六、项目资源计划\n### 1. 人力资源 列出主要项目成员及分工,包括项目经理、研发人员、测试人员、市场人员等。\n### 2. 技术资源 说明所需的技术平台、开发工具、测试设备等资源。\n### 3. 资金预算 列出项目的总预算、分项支出及资金来源。\n## 七、项目实施计划(甘特图或阶段划分)\n### 1. 项目阶段划分 将项目划分为几个主要阶段,并简要说明每个阶段的目标和交付物。\n## 八、风险评估与应对策略\n| 风险 | 影响 | 可能性 | 应对措施 |\n|------|------|--------|----------|\n## 九、项目收益与预期成果\n### 1. 项目收益 说明项目成功后的预期收益,包括财务、市场、品牌等层面。\n### 2. 项目成果 列出项目完成后的主要成果,包括产品、文档、知识产权等。', '', '请你扮演一名经验丰富的项目经理。', '具备项目计划制定、进度管理、成本控制、团队管理、沟通协调、风险管理、质量控制、敏捷开发、互联网技术和数据分析等多方面的技能和能力。', 'system', '2025-12-30 12:00:00', 'active'),
|
||||
(14, 'zt_project_finalreport', '编写结项报告', '根据项目基本信息、阶段或迭代信息生成项目结项报告。', 0, 'project', ',project.name,project.type,project.desc,project.begin,project.end,project.estimate,programplans.name,programplans.desc,programplans.status,programplans.begin,programplans.end,programplans.realBegan,programplans.realEnd,programplans.progress,programplans.estimate,programplans.consumed,programplans.left,executions.name,executions.desc,executions.status,executions.begin,executions.end,executions.realBegan,executions.realEnd,executions.estimate,executions.consumed,executions.progress,', 'doc.create', '请根据项目信息、阶段或迭代信息生成一份项目结项报告。\n要求: 1.严格参考项目结项报告模板:\n## 一、项目基本信息\n| 项目名称 | 项目代号 | 所属部门 | 项目负责人 | 项目周期 | 开始日期 | 结束日期 | 项目类型 | 项目阶段 |\n|----------|----------|----------|------------|----------|----------|----------|-----------|-----------|\n| | | | | | | | | |\n## 二、项目概况\n### 1. 项目背景\n简要回顾项目立项时的背景、目标及意义。\n### 2. 项目目标\n总结项目初期设定的目标及关键绩效指标(KPI)。\n## 三、项目实施过程\n### 1. 项目阶段回顾\n按照项目阶段划分,简要说明各阶段的完成情况。\n### 2. 关键里程碑\n列出项目中的关键里程碑及完成时间。\n## 四、项目成果与交付物\n### 1. 项目成果\n列出项目完成后的主要成果。\n### 2. 项目交付物\n列出项目交付的成果物。\n> 示例:\n| 交付物 | 类型 | 状态 |\n|--------|------|------|\n| 需求文档 | 文档类 | 已完成 |\n| 系统设计文档 | 文档类 | 已完成 |\n| 产品原型 | 硬件/软件 | 已交付 |\n| 测试报告 | 文档类 | 已完成 |\n| 用户手册 | 文档类 | 已完成 |\n## 五、项目质量与测试\n### 1. 质量管理\n简要说明项目中采用的质量管理方法与工具。\n> 示例:采用ISO 9001质量管理体系,结合敏捷开发与测试驱动开发(TDD)进行质量控制。\n### 2. 测试结果\n列出关键测试的执行情况及结果。\n## 六、项目成本与预算执行情况\n## 七、项目风险与问题回顾\n### 1. 风险回顾\n总结项目实施过程中出现的风险及应对措施。\n### 2. 项目问题及处理\n列出项目中遇到的问题及其解决方案。\n## 八、项目收益与价值\n### 1. 项目收益\n说明项目完成后的实际收益,包括财务、市场、品牌等方面。\n### 2. 项目价值\n总结项目对团队、公司及行业的价值。\n## 九、项目经验与教训\n### 1. 成功经验\n总结项目实施过程中的成功做法与经验。\n### 2. 存在问题\n总结项目中存在的问题及改进建议。', '', '请你扮演一名经验丰富的项目经理。', '具备项目计划制定、进度管理、成本控制、团队管理、沟通协调、风险管理、质量控制、敏捷开发、互联网技术和数据分析等多方面的技能和能力。', 'system', '2025-12-30 12:00:00', 'active'),
|
||||
(15, 'zt_automatic_test', '编写自动化测试脚本', '根据用例的基本信息、步骤描述、预期结果和补充信息生成自动化测试脚本。', 0, 'case', ',case.title,case.precondition,case.scene,case.product,case.module,case.pri,case.type,case.lastRunResult,case.status,steps.desc,steps.expect,', 'empty.empty', '请根据用例信息、 <系统类型> <后端框架> <前端框架> <测试类型> 和 <其他信息> 生成自动化测试脚本。', '', '作为一名资深的测试工程师。', '测试工程师应该是专业且严谨的。熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。', 'system', '2025-12-30 12:00:00', 'active');
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_ai_promptfield`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_ai_promptfield` (
|
||||
-- DROP TABLE IF EXISTS `zt_ai_agentfield`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_ai_agentfield` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`appID` int unsigned NOT NULL COMMENT '所属 Prompt 的 ID,对应 zt_ai_prompt.id',
|
||||
`appID` int unsigned NOT NULL COMMENT '所属 Prompt 的 ID,对应 zt_ai_agent.id',
|
||||
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '字段名称',
|
||||
`type` varchar(20) NOT NULL DEFAULT 'text' COMMENT '字段类型',
|
||||
`placeholder` text DEFAULT NULL COMMENT '输入提示',
|
||||
@@ -15340,14 +15339,21 @@ CREATE TABLE IF NOT EXISTS `zt_ai_promptfield` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO `zt_ai_promptfield` (`appID`, `name`, `type`, `placeholder`, `options`, `required`) VALUES
|
||||
INSERT INTO `zt_ai_agentfield` (`appID`, `name`, `type`, `placeholder`, `options`, `required`) VALUES
|
||||
(10, '设计类型', 'radio', '', '系统设计,架构设计,接口设计,数据库设计', 0),
|
||||
(10, '后端框架', 'radio', '', 'PHP,Go,Java,Python,Node.js,其他', 0),
|
||||
(10, '前端框架', 'radio', '', 'JavaScript,Vue,React,Angular,其他', 0),
|
||||
(10, '数据库类型', 'radio', '', 'MySQL,PostgreSQL,Oracle Database,Microsoft SQL Server,非关系型数据库', 0);
|
||||
(10, '数据库类型', 'radio', '', 'MySQL,PostgreSQL,Oracle Database,Microsoft SQL Server,非关系型数据库', 0),
|
||||
(14, '潜在风险', 'textarea', '', NULL, 0),
|
||||
(14, '预期收益', 'textarea', '', NULL, 0),
|
||||
(15, '系统类型', 'checkbox', '', 'Web,APP,API', 1),
|
||||
(15, '后端框架', 'radio', '', 'PHP,GO,Java,Python,Node.js,其他', 1),
|
||||
(15, '前端框架', 'radio', '', 'JavaScript,Vue,React,Angular,其他', 1),
|
||||
(15, '测试类型', 'radio', '', '单元测试,接口测试,UI测试', 1),
|
||||
(15, '其他信息', 'textarea', '', NULL, 0);
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_ai_promptrole`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_ai_promptrole` (
|
||||
-- DROP TABLE IF EXISTS `zt_ai_agentrole`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_ai_agentrole` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(30) NOT NULL DEFAULT '',
|
||||
`desc` text DEFAULT NULL,
|
||||
@@ -15358,7 +15364,7 @@ CREATE TABLE IF NOT EXISTS `zt_ai_promptrole` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO `zt_ai_promptrole` (`role`, `characterization`) VALUES
|
||||
INSERT INTO `zt_ai_agentrole` (`role`, `characterization`) VALUES
|
||||
('请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。'),
|
||||
('你是一名经验丰富的开发工程师。', '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。'),
|
||||
('作为一名资深的测试工程师。', '测试工程师应该是专业且严谨的。熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。'),
|
||||
|
||||
@@ -1,17 +1,31 @@
|
||||
<?php
|
||||
$config->ai->initAIPrompts = array();
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 1, 'name' => '编写开发设计文档智能体', 'model' => 0, 'desc' => '根据任务的名称、描述、设计类型、后端框架、前端框架和数据库类型等信息生成一篇开发设计文档。', 'module' => 'task', 'source' => ',task.name,task.desc,task.pri,task.status,task.estimate,task.consumed,task.left,task.progress,task.estStarted,task.realStarted,task.story,', 'targetForm' => 'doc.create', 'purpose' => '请根据任务数据、 <设计类型> 、 <后端框架> 、 <前端框架> 和 <数据库类型> 生成一篇开发设计文档。', 'elaboration' => '', 'role' => '你是一名经验丰富的开发工程师。', 'characterization' => '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 2, 'name' => '绘制需求原型图智能体', 'model' => 0, 'desc' => '根据输入的需求信息, 生成一个HTML格式的原型图示例。', 'module' => 'story', 'source' => ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'targetForm' => 'empty.empty', 'purpose' => '根据输入的需求信息,生成一个HTML格式的原型图示例。原型图应包含以下部分:
|
||||
1. 标题
|
||||
2. 整体结构框架(如导航栏、侧边栏、主要内容区)
|
||||
3. 各功能模块的简要设计(如按钮、表单、图表等)
|
||||
4. 交互设计提示(如如何进行用户操作)
|
||||
5. 请生成完整的 HTML5 页面代码,包括开始的 `<!DOCTYPE html>` 和 结束的 `</html>`,使用 markdown html 代码块表示,如果有多个页面请使用多个代码块表示。
|
||||
6. 如果页面有 CSS,应该直接在 HTML 页面内使用内联样式`<style>`表示,而不是链接单独的 CSS 文件。',
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 1, 'code' => 'zt_create_doc', 'name' => '编写开发设计文档智能体', 'model' => 0, 'desc' => '根据任务的名称、描述、设计类型、后端框架、前端框架和数据库类型等信息生成一篇开发设计文档。', 'module' => 'task', 'source' => ',task.name,task.desc,task.pri,task.status,task.estimate,task.consumed,task.left,task.progress,task.estStarted,task.realStarted,task.story,', 'targetForm' => 'doc.create', 'purpose' => '请根据任务数据、 <设计类型> 、 <后端框架> 、 <前端框架> 和 <数据库类型> 生成一篇开发设计文档。', 'elaboration' => '', 'role' => '你是一名经验丰富的开发工程师。', 'characterization' => '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 2, 'code' => 'zt_story_prototype', 'name' => '绘制需求原型图智能体', 'model' => 0, 'desc' => '根据输入的需求信息, 生成一个HTML格式的原型图示例。', 'module' => 'story', 'source' => ',story.title,story.spec,story.verify,story.product,story.module,story.pri,story.category,story.estimate,', 'targetForm' => 'empty.empty', 'purpose' => '根据输入的需求信息,生成一个HTML格式的原型图示例。原型图应包含以下部分:\n1. 标题\n2. 整体结构框架(如导航栏、侧边栏、主要内容区)\n3. 各功能模块的简要设计(如按钮、表单、图表等)\n4. 交互设计提示(如如何进行用户操作)\n5. 请生成完整的 HTML5 页面代码,包括开始的 `<!DOCTYPE html>` 和 结束的 `</html>`,使用 markdown html 代码块表示,如果有多个页面请使用多个代码块表示。\n6. 如果页面有 CSS,应该直接在 HTML 页面内使用内联样式 `<style>`表示,而不是链接单独的 CSS 文件。',
|
||||
'elaboration' => '', 'role' => '请你扮演一名资深的产品经理。', 'characterization' => '负责绘制需求原型图的过程。您将需求转化为可视化的原型图,同时确保其符合需求描述和需求验收标准。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 3, 'code' => 'zt_release_newsletter', 'name' => '编写发布新闻稿', 'model' => 0, 'desc' => '根据发布详情信息、需求列表和Bug列表生成符合模板规范的新闻稿。', 'module' => 'release', 'source' => ',release.product,release.name,release.desc,release.date,stories.title,stories.estimate,bugs.title,', 'targetForm' => 'doc.create', 'purpose' => '请根据发布信息以及发布中关联的需求和Bug编写发布新闻稿。\n要求: 1.新闻稿格式严格参考产品**新闻稿通用模板**:\n#### **新闻标题** **\\[产品名称\\] \\[版本号\\] 正式发布,新增\\[亮点功能\\]!**\n#### **新闻导语** 大家好, 我们很高兴地宣布,**\\[产品名称\\] \\[版本号\\] 正式发布!** **本次发布新增了\\[核心功能名称\\]!** 该功能支持\\[简要功能描述\\],帮助用户\\[解决什么问题\\],提升\\[具体价值\\]。 同时,我们优化了\\[其他方面\\],安装更简单,修复了已知Bug。\n#### **新增功能亮点**\n**本版本主要新增功能包括:**\n- **\\[功能模块1\\]**:\\[具体功能点\\]\n- **\\[功能模块2\\]**:\\[具体功能点\\]\n- **\\[优化改进\\]**:\\[具体优化点\\]\n#### **功能详细说明**\n- **跨\\[产品/项目\\]协作**\n- 支持\\[具体应用场景\\]\n- 解决\\[用户痛点\\]\n- **安装与部署优化**\n- 安装向导简化\n- 解压/安装速度提升\n- **界面与体验改进**\n- 用户界面升级\n- 操作流程优化\n#### **下载与安装** 我们提供多种安装方式:\n- **Windows版** - \\[安装版下载\\]\n- \\[免安装版下载\\] - **Linux版**\n- \\[安装版下载\\]\n- \\[免安装版下载\\]\n- **源码版** - \\[PHP 7.x版\\]\n- \\[PHP 8.x版\\]\n- **Docker镜像**\n- \\[Docker Hub地址\\]\n#### **文档支持** - 安装指南:\\[链接\\] - 升级指南:\\[链接\\] - 使用手册:\\[链接\\] - 常见问题解答:\\[链接\\]\n#### **结语** 新版本将为用户带来更好的使用体验和更高的工作效率,感谢大家一直以来的支持与反馈!我们将继续努力,提供更优秀的产品和服务! 2.新闻稿通用模板中的功能亮点需要对需求列表中的需求进行总结,在功能详细说明里面描述清楚。\n3.将markdown格式渲染出来',
|
||||
'elaboration' => '', 'role' => '请你扮演一名资深的产品经理。', 'characterization' => '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 4, 'code' => 'zt_project_proposal', 'name' => '编写立项报告', 'model' => 0, 'desc' => '根据项目基本信息、阶段或迭代信息生成项目立项报告。', 'module' => 'project', 'source' => ',project.name,project.type,project.desc,project.begin,project.end,project.estimate,programplans.name,programplans.desc,programplans.status,programplans.begin,programplans.end,programplans.realBegan,programplans.realEnd,programplans.progress,programplans.estimate,programplans.consumed,programplans.left,executions.name,executions.desc,executions.status,executions.begin,executions.end,executions.realBegan,executions.realEnd,executions.estimate,executions.consumed,executions.progress,', 'targetForm' => 'doc.create', 'purpose' => '请根据项目信息、阶段或迭代信息生成一份项目立项报告。\n要求: 1.严格参考项目立项报告模板:\n## 一、项目基本信息\n| 项目名称 | 项目代号 | 所属部门 | 项目负责人 | 开始日期 | 结束日期 | 预计周期 | 项目类型 | 项目阶段 |\n|----------|----------|----------|------------|----------|----------|-----------|-----------|-----------|\n| | | | | | | | | |\n## 二、项目背景与立项目的\n### 1. 项目背景 简要说明项目产生的背景、市场或业务需求,以及项目的必要性。\n### 2. 立项目的 明确项目的目标,以及希望通过本项目实现的战略或业务目标。\n## 三、项目目标与关键指标(OKR)\n| 目标 | 关键结果(KR) | 责任人 | 完成时间 |\n|------|----------------|--------|----------|\n| | | | | | | | | |\n## 四、项目范围与内容\n### 1. 项目范围 简要说明本项目的开发范围,包括产品功能、技术实现、市场定位等。\n### 2. 主要功能/产品特性 列出产品的核心功能或主要特性,说明其市场价值与竞争优势。\n### 3. 目标用户群 明确产品的目标用户群体,包括年龄、性别、使用场景等信息。\n## 五、市场与竞争分析\n### 1. 市场需求 分析当前市场对本产品的需求情况,包括市场规模、增长率、用户痛点等。\n### 2. 竞争分析 简述主要竞争对手的产品情况、市场占有率、优势与劣势。\n### 3. 项目差异化优势 说明本项目相较于竞品的差异化优势。\n## 六、项目资源计划\n### 1. 人力资源 列出主要项目成员及分工,包括项目经理、研发人员、测试人员、市场人员等。\n### 2. 技术资源 说明所需的技术平台、开发工具、测试设备等资源。\n### 3. 资金预算 列出项目的总预算、分项支出及资金来源。\n## 七、项目实施计划(甘特图或阶段划分)\n### 1. 项目阶段划分 将项目划分为几个主要阶段,并简要说明每个阶段的目标和交付物。\n## 八、风险评估与应对策略\n| 风险 | 影响 | 可能性 | 应对措施 |\n|------|------|--------|----------|\n## 九、项目收益与预期成果\n### 1. 项目收益 说明项目成功后的预期收益,包括财务、市场、品牌等层面。\n### 2. 项目成果 列出项目完成后的主要成果,包括产品、文档、知识产权等。',
|
||||
'elaboration' => '', 'role' => '请你扮演一名经验丰富的项目经理。', 'characterization' => '具备项目计划制定、进度管理、成本控制、团队管理、沟通协调、风险管理、质量控制、敏捷开发、互联网技术和数据分析等多方面的技能和能力。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 5, 'code' => 'zt_project_finalreport', 'name' => '编写结项报告', 'model' => 0, 'desc' => '根据项目基本信息、阶段或迭代信息生成项目结项报告。', 'module' => 'project', 'source' => ',project.name,project.type,project.desc,project.begin,project.end,project.estimate,programplans.name,programplans.desc,programplans.status,programplans.begin,programplans.end,programplans.realBegan,programplans.realEnd,programplans.progress,programplans.estimate,programplans.consumed,programplans.left,executions.name,executions.desc,executions.status,executions.begin,executions.end,executions.realBegan,executions.realEnd,executions.estimate,executions.consumed,executions.progress,', 'targetForm' => 'doc.create', 'purpose' => '请根据项目信息、阶段或迭代信息生成一份项目结项报告。\n要求: 1.严格参考项目结项报告模板:\n## 一、项目基本信息\n| 项目名称 | 项目代号 | 所属部门 | 项目负责人 | 项目周期 | 开始日期 | 结束日期 | 项目类型 | 项目阶段 |\n|----------|----------|----------|------------|----------|----------|----------|-----------|-----------|\n| | | | | | | | | |\n## 二、项目概况\n### 1. 项目背景\n简要回顾项目立项时的背景、目标及意义。\n### 2. 项目目标\n总结项目初期设定的目标及关键绩效指标(KPI)。\n## 三、项目实施过程\n### 1. 项目阶段回顾\n按照项目阶段划分,简要说明各阶段的完成情况。\n### 2. 关键里程碑\n列出项目中的关键里程碑及完成时间。\n## 四、项目成果与交付物\n### 1. 项目成果\n列出项目完成后的主要成果。\n### 2. 项目交付物\n列出项目交付的成果物。\n> 示例:\n| 交付物 | 类型 | 状态 |\n|--------|------|------|\n| 需求文档 | 文档类 | 已完成 |\n| 系统设计文档 | 文档类 | 已完成 |\n| 产品原型 | 硬件/软件 | 已交付 |\n| 测试报告 | 文档类 | 已完成 |\n| 用户手册 | 文档类 | 已完成 |\n## 五、项目质量与测试\n### 1. 质量管理\n简要说明项目中采用的质量管理方法与工具。\n> 示例:采用ISO 9001质量管理体系,结合敏捷开发与测试驱动开发(TDD)进行质量控制。\n### 2. 测试结果\n列出关键测试的执行情况及结果。\n## 六、项目成本与预算执行情况\n## 七、项目风险与问题回顾\n### 1. 风险回顾\n总结项目实施过程中出现的风险及应对措施。\n### 2. 项目问题及处理\n列出项目中遇到的问题及其解决方案。\n## 八、项目收益与价值\n### 1. 项目收益\n说明项目完成后的实际收益,包括财务、市场、品牌等方面。\n### 2. 项目价值\n总结项目对团队、公司及行业的价值。\n## 九、项目经验与教训\n### 1. 成功经验\n总结项目实施过程中的成功做法与经验。\n### 2. 存在问题\n总结项目中存在的问题及改进建议。',
|
||||
'elaboration' => '', 'role' => '请你扮演一名经验丰富的项目经理。', 'characterization' => '具备项目计划制定、进度管理、成本控制、团队管理、沟通协调、风险管理、质量控制、敏捷开发、互联网技术和数据分析等多方面的技能和能力。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
|
||||
$config->ai->initAIPrompts[] = (object)['id' => 6, 'code' => 'zt_automatic_test', 'name' => '编写自动化测试脚本', 'model' => 0, 'desc' => '根据用例的基本信息、步骤描述、预期结果和补充信息生成自动化测试脚本。', 'module' => 'case', 'source' => ',case.title,case.precondition,case.scene,case.product,case.module,case.pri,case.type,case.lastRunResult,case.status,steps.desc,steps.expect,', 'targetForm' => 'empty.empty', 'purpose' => '请根据用例信息、 <系统类型> <后端框架> <前端框架> <测试类型> 和 <其他信息> 生成自动化测试脚本。', 'elaboration' => '', 'role' => '作为一名资深的测试工程师。', 'characterization' => '测试工程师应该是专业且严谨的。熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。', 'status' => 'active', 'createdBy' => 'system'];
|
||||
|
||||
$config->ai->initAIPromptFields = array();
|
||||
$config->ai->initAIPromptFields[1][] = (object)['name' => '设计类型', 'type' => 'radio', 'placeholder' => '', 'options' => '系统设计,架构设计,接口设计,数据库设计', 'required' => 0];
|
||||
$config->ai->initAIPromptFields[1][] = (object)['name' => '后端框架', 'type' => 'radio', 'placeholder' => '', 'options' => 'PHP,Go,Java,Python,Node.js,其他', 'required' => 0];
|
||||
$config->ai->initAIPromptFields[1][] = (object)['name' => '前端框架', 'type' => 'radio', 'placeholder' => '', 'options' => 'JavaScript,Vue,React,Angular,其他', 'required' => 0];
|
||||
$config->ai->initAIPromptFields[1][] = (object)['name' => '数据库类型', 'type' => 'radio', 'placeholder' => '', 'options' => 'MySQL,PostgreSQL,Oracle Database,Microsoft SQL Server,非关系型数据库', 'required' => 0];
|
||||
|
||||
$config->ai->initAIPromptFields[4][] = (object)['name' => '潜在风险', 'type' => 'textarea', 'placeholder' => '', 'required' => 0];
|
||||
$config->ai->initAIPromptFields[4][] = (object)['name' => '预期收益', 'type' => 'textarea', 'placeholder' => '', 'required' => 0];
|
||||
|
||||
$config->ai->initAIPromptFields[6][] = (object)['name' => '系统类型', 'type' => 'checkbox', 'placeholder' => '', 'options' => 'Web,APP,API', 'required' => 1];
|
||||
$config->ai->initAIPromptFields[6][] = (object)['name' => '后端框架', 'type' => 'radio', 'placeholder' => '', 'options' => 'PHP,Go,Java,Python,Node.js,其他', 'required' => 1];
|
||||
$config->ai->initAIPromptFields[6][] = (object)['name' => '前端框架', 'type' => 'radio', 'placeholder' => '', 'options' => 'JavaScript,Vue,React,Angular,其他', 'required' => 1];
|
||||
$config->ai->initAIPromptFields[6][] = (object)['name' => '测试类型', 'type' => 'radio', 'placeholder' => '', 'options' => '单元测试,接口测试,UI测试', 'required' => 1];
|
||||
$config->ai->initAIPromptFields[6][] = (object)['name' => '其他信息', 'type' => 'textarea', 'placeholder' => '', 'required' => 0];
|
||||
|
||||
+13
-13
@@ -1592,7 +1592,7 @@ class aiModel extends model
|
||||
*/
|
||||
public function getPrompts($module = '', $status = '', $order = 'id_desc', $pager = null)
|
||||
{
|
||||
$prompts = $this->dao->select('*')->from(TABLE_AI_PROMPT)
|
||||
$prompts = $this->dao->select('*')->from(TABLE_AI_AGENT)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(!empty($module))->andWhere('module')->eq($module)->fi()
|
||||
->beginIF(!empty($status))->andWhere('status')->eq($status)->fi()
|
||||
@@ -1612,7 +1612,7 @@ class aiModel extends model
|
||||
*/
|
||||
public function getPromptById($id)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_AI_PROMPT)
|
||||
return $this->dao->select('*')->from(TABLE_AI_AGENT)
|
||||
->where('id')->eq($id)
|
||||
->fetch();
|
||||
}
|
||||
@@ -1627,7 +1627,7 @@ class aiModel extends model
|
||||
public function getPromptFields(int $promptID): array
|
||||
{
|
||||
return $this->dao->select('*')
|
||||
->from(TABLE_AI_PROMPTFIELD)
|
||||
->from(TABLE_AI_AGENTFIELD)
|
||||
->where('appID')->eq($promptID)
|
||||
->fetchAll('id', false);
|
||||
}
|
||||
@@ -1647,7 +1647,7 @@ class aiModel extends model
|
||||
/* Override uniqueness error message. */
|
||||
$this->lang->error->unique = $this->lang->ai->validate->nameNotUnique;
|
||||
|
||||
$this->dao->insert(TABLE_AI_PROMPT)
|
||||
$this->dao->insert(TABLE_AI_AGENT)
|
||||
->data($prompt)
|
||||
->batchCheck($this->config->ai->createprompt->requiredFields, 'notempty')
|
||||
->check('name', 'unique')
|
||||
@@ -1672,7 +1672,7 @@ class aiModel extends model
|
||||
public function savePromptFields(int $promptID, array $fields): void
|
||||
{
|
||||
$this->dao->delete()
|
||||
->from(TABLE_AI_PROMPTFIELD)
|
||||
->from(TABLE_AI_AGENTFIELD)
|
||||
->where('appID')->eq($promptID)
|
||||
->exec();
|
||||
|
||||
@@ -1682,7 +1682,7 @@ class aiModel extends model
|
||||
|
||||
if(!isset($field->appID)) $field->appID = $promptID;
|
||||
|
||||
$this->dao->insert(TABLE_AI_PROMPTFIELD)
|
||||
$this->dao->insert(TABLE_AI_AGENTFIELD)
|
||||
->data($field)
|
||||
->exec();
|
||||
}
|
||||
@@ -1727,7 +1727,7 @@ class aiModel extends model
|
||||
/* Override uniqueness error message. */
|
||||
$this->lang->error->unique = $this->lang->ai->validate->nameNotUnique;
|
||||
|
||||
$this->dao->update(TABLE_AI_PROMPT)
|
||||
$this->dao->update(TABLE_AI_AGENT)
|
||||
->data($prompt)
|
||||
->batchCheck($this->config->ai->createprompt->requiredFields, 'notempty')
|
||||
->check('name', 'unique', "`id` != {$prompt->id}")
|
||||
@@ -1754,7 +1754,7 @@ class aiModel extends model
|
||||
$prompt = $this->getPromptById($id);
|
||||
if(empty($prompt)) return false;
|
||||
|
||||
$this->dao->update(TABLE_AI_PROMPT)
|
||||
$this->dao->update(TABLE_AI_AGENT)
|
||||
->set('deleted')->eq(1)
|
||||
->where('id')->eq($id)
|
||||
->exec();
|
||||
@@ -2705,7 +2705,7 @@ class aiModel extends model
|
||||
*/
|
||||
public function getPromptsForUser($module)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_AI_PROMPT)
|
||||
return $this->dao->select('*')->from(TABLE_AI_AGENT)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('module')->eq($module)
|
||||
->andWhere('status')->eq('active')
|
||||
@@ -2857,7 +2857,7 @@ class aiModel extends model
|
||||
*/
|
||||
public function getRoleTemplates()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_AI_PROMPTROLE)
|
||||
return $this->dao->select('*')->from(TABLE_AI_AGENTROLE)
|
||||
->where('deleted')->eq(0)
|
||||
->fetchAll('id', false);
|
||||
}
|
||||
@@ -2876,7 +2876,7 @@ class aiModel extends model
|
||||
$roleTemplate->role = $role;
|
||||
$roleTemplate->characterization = $characterization;
|
||||
|
||||
$this->dao->insert(TABLE_AI_PROMPTROLE)
|
||||
$this->dao->insert(TABLE_AI_AGENTROLE)
|
||||
->data($roleTemplate)
|
||||
->exec();
|
||||
if(dao::isError()) return false;
|
||||
@@ -2893,7 +2893,7 @@ class aiModel extends model
|
||||
*/
|
||||
public function deleteRoleTemplate($id)
|
||||
{
|
||||
$this->dao->update(TABLE_AI_PROMPTROLE)
|
||||
$this->dao->update(TABLE_AI_AGENTROLE)
|
||||
->set('deleted')->eq(1)
|
||||
->where('id')->eq($id)
|
||||
->exec();
|
||||
@@ -2916,7 +2916,7 @@ class aiModel extends model
|
||||
$roleTemplate->role = $role;
|
||||
$roleTemplate->characterization = $characterization;
|
||||
|
||||
$this->dao->update(TABLE_AI_PROMPTROLE)
|
||||
$this->dao->update(TABLE_AI_AGENTROLE)
|
||||
->data($roleTemplate)
|
||||
->where('id')->eq($id)
|
||||
->exec();
|
||||
|
||||
@@ -1369,7 +1369,7 @@ class aiModelTest extends baseTest
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
$count = $this->instance->dao->select('COUNT(1) AS count')
|
||||
->from(TABLE_AI_PROMPTFIELD)
|
||||
->from(TABLE_AI_AGENTFIELD)
|
||||
->where('appID')->eq($promptID)
|
||||
->fetch('count');
|
||||
return $count;
|
||||
|
||||
@@ -20,7 +20,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
$ai_prompt = zenData('ai_prompt');
|
||||
$ai_prompt = zenData('ai_agent');
|
||||
$ai_prompt->id->range('1');
|
||||
$ai_prompt->name->range('existing_prompt');
|
||||
$ai_prompt->desc->range('这是一个已存在的提示词');
|
||||
|
||||
@@ -20,7 +20,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
$table = zenData('ai_promptrole');
|
||||
$table = zenData('ai_agentrole');
|
||||
$table->role->range('请你扮演一名资深的产品经理。{3}, 你是一名经验丰富的开发工程师。{3}');
|
||||
$table->characterization->range('负责产品战略、设计、开发等。{3}, 精通多种编程语言和框架。{3}');
|
||||
$table->deleted->range('0');
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=15019
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('需求润色,一键拆用例,任务润色,需求转任务,Bug润色,代码审查,测试用例生成,API文档生成,项目总结,技术调研');
|
||||
$table->desc->range('优化需求描述,生成测试用例,优化任务描述,转化需求为任务,优化Bug描述,代码质量审查,自动生成测试,API文档自动化,项目总结报告,技术调研分析');
|
||||
|
||||
@@ -20,7 +20,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
$table = zenData('ai_promptrole');
|
||||
$table = zenData('ai_agentrole');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('产品经理,开发工程师,测试工程师,QA工程师,文案编辑{2},项目经理{2},AI助手{2},自定义角色');
|
||||
$table->role->range('请你扮演一名资深的产品经理,你是一名经验丰富的开发工程师,作为一名资深的测试工程师,假如你是一名资深的QA工程师,你是一名文章写得很好的文案编辑{2},请你扮演一名经验丰富的项目经理{2},你是一个自回归的语言模型{2},你是一名自定义角色');
|
||||
|
||||
@@ -20,8 +20,8 @@ cid=15022
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 创建ai_prompt测试数据
|
||||
$promptTable = zenData('ai_prompt');
|
||||
// 创建ai_agent测试数据
|
||||
$promptTable = zenData('ai_agent');
|
||||
$promptTable->name->range('测试提示词1,测试提示词2,测试提示词3,测试提示词4,测试提示词5');
|
||||
$promptTable->module->range('story,task,bug,project,testcase');
|
||||
$promptTable->source->range('story.title,task.name,bug.title,project.name,testcase.title');
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=15024
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('prompt1,prompt2,prompt3{2},prompt4{3},prompt5{3}');
|
||||
$table->module->range('story{3},task{3},bug{3},testcase');
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=15043
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('需求润色,任务润色,Bug润色,文档润色,一键拆用例,需求转任务,生成测试,代码审查,数据分析,流程优化');
|
||||
$table->desc->range('测试描述内容{10}');
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=0
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_promptfield');
|
||||
$table = zenData('ai_agentfield');
|
||||
$table->id->range('1-20');
|
||||
$table->appID->range('1{5},2{5},3{5},999{2},0{3}');
|
||||
$table->name->range('字段1,字段2,字段3,字段4,字段5,字段6,字段7,字段8,字段9,字段10,字段11,字段12,字段13,字段14,字段15,字段16,字段17,字段18,字段19,字段20');
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=15044
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('需求润色,一键拆用例,任务润色,需求转任务,Bug润色,文档润色,Bug转需求,拆分一个子计划,测试提示词1,测试提示词2');
|
||||
$table->desc->range('测试描述内容{10}');
|
||||
|
||||
@@ -20,7 +20,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('prompt1{3},prompt2{3},prompt3{2},prompt4{1},prompt5{1}');
|
||||
$table->module->range('story{3},task{3},bug{2},project{1},user{1}');
|
||||
|
||||
@@ -20,7 +20,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备
|
||||
$table = zenData('ai_promptrole');
|
||||
$table = zenData('ai_agentrole');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('系统分析师,项目经理,开发工程师,测试工程师,产品经理,技术专家,AI助手,客服代表,[],特殊角色');
|
||||
$table->desc->range('专注于系统需求分析和架构设计,负责项目整体规划和管理,专注于代码开发和技术实现,负责软件质量保证和测试,负责产品规划和需求管理,提供技术咨询和解决方案,智能化辅助工具,客户服务支持,[],特殊角色描述');
|
||||
|
||||
@@ -20,7 +20,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('状态切换测试1,状态切换测试2,状态切换测试3,状态切换测试4,状态切换测试5,状态切换测试6,状态切换测试7,状态切换测试8,状态切换测试9,状态切换测试10');
|
||||
$table->desc->range('测试状态切换功能的提示词描述{10}');
|
||||
|
||||
@@ -22,7 +22,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
$promptTable = zenData('ai_prompt');
|
||||
$promptTable = zenData('ai_agent');
|
||||
$promptTable->id->range('1-20');
|
||||
$promptTable->name->range('需求润色,一键拆用例,项目分析,产品评审,任务拆解,缺陷修复,文档生成,代码评审,测试计划,执行分析,用例设计,项目管理,产品规划,需求分析,bug分析,story优化,task创建,project总结,execution监控,doc编写');
|
||||
$promptTable->module->range('story{3},task{3},project{3},product{3},execution{3},bug{2},case{2},doc{1}');
|
||||
|
||||
@@ -19,7 +19,7 @@ cid=15078
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_prompt');
|
||||
$table = zenData('ai_agent');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('提示1,提示2,提示3,提示4,提示5,提示6,提示7,提示8,提示9,提示10');
|
||||
$table->desc->range('描述1,描述2,描述3,描述4,描述5,描述6,描述7,描述8,描述9,描述10');
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=15079
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
||||
|
||||
$table = zenData('ai_promptrole');
|
||||
$table = zenData('ai_agentrole');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('产品经理,开发工程师,测试工程师,QA工程师,文案编辑,项目经理');
|
||||
$table->desc->range('负责产品管理,负责开发工作,负责测试工作,负责质量管理,负责文案编辑,负责项目管理');
|
||||
|
||||
@@ -115,6 +115,7 @@ $config->upgrade->execFlow['21_7_1'] = array('functions' => 'processActionP
|
||||
$config->upgrade->execFlow['21_7_5'] = array('functions' => 'weekly-addBuiltinWeeklyTemplate,adjustPriv21_7_5');
|
||||
$config->upgrade->execFlow['21_7_7'] = array('functions' => 'alterUserTableFields');
|
||||
$config->upgrade->execFlow['21_7_8'] = array('functions' => 'initAIPrompts,importBuildinWorkflow,processWorkflowDatasource,upgradeStage4PMS', 'params' => array('importBuildinWorkflow' => array('all', 'cm,projectchange,risk,opportunity,issue'), 'processWorkflowDatasource' => array(array('baselineStatus' => 'cm_status', 'baselineReviewResult' => 'cm_reviewResult', 'projectchangeUrgencyList' => 'projectchange_urgency', 'projectchangeTypeList' => 'projectchange_type', 'projectchangeStatus' => 'projectchange_status', 'projectchangeReviewResult' => 'projectchange_reviewResult', 'riskSource' => 'risk_source', 'riskCategory' => 'risk_category', 'riskStrategy' => 'risk_strategy', 'riskStatus' => 'risk_status', 'riskImpact' => 'risk_impact', 'riskProbability' => 'risk_probability', 'riskRate' => 'risk_rate', 'riskPri' => 'risk_pri', 'riskCancelReason' => 'risk_cancelReason', 'issuePri' => 'issue_pri', 'issueSeverity' => 'issue_severity', 'issueType' => 'issue_type', 'issueResolution' => 'issue_resolution', 'issueStatus' => 'issue_status', 'opportunitySource' => 'opportunity_source', 'opportunityType' => 'opportunity_type', 'opportunityStrategy' => 'opportunity_strategy', 'opportunityStatus' => 'opportunity_status', 'opportunityImpact' => 'opportunity_impact', 'opportunityChance' => 'opportunity_chance', 'opportunityPri' => 'opportunity_pri', 'opportunityCancelReason' => 'opportunity_cancelReason'))));
|
||||
$config->upgrade->execFlow['22_0_beta'] = array('functions' => 'initAIPrompts');
|
||||
|
||||
if(!empty($config->isINT))
|
||||
{
|
||||
|
||||
@@ -13117,7 +13117,7 @@ class upgradeModel extends model
|
||||
unset($aiPrompt->id);
|
||||
$aiPrompt->createdBy = 'system';
|
||||
$aiPrompt->createdDate = helper::now();
|
||||
$this->dao->insert(TABLE_AI_PROMPT)->data($aiPrompt)->autoCheck()->exec();
|
||||
$this->dao->insert(TABLE_AI_AGENT)->data($aiPrompt)->autoCheck()->exec();
|
||||
|
||||
$promptID = $this->dao->lastInsertID();
|
||||
if(!empty($this->config->ai->initAIPromptFields[$index])) $this->initAIPromptFields($this->config->ai->initAIPromptFields[$index], $promptID);
|
||||
@@ -13134,7 +13134,7 @@ class upgradeModel extends model
|
||||
*/
|
||||
public function checkExistAIPrompt(object $aiPrompt): bool
|
||||
{
|
||||
$count = $this->dao->select('COUNT(1) AS count')->from(TABLE_AI_PROMPT)
|
||||
$count = $this->dao->select('COUNT(1) AS count')->from(TABLE_AI_AGENT)
|
||||
->where('name')->eq($aiPrompt->name)
|
||||
->fetch('count');
|
||||
return $count == 0;
|
||||
@@ -13184,7 +13184,7 @@ class upgradeModel extends model
|
||||
foreach($aiPromptFields as $field)
|
||||
{
|
||||
$field->appID = $promptID;
|
||||
$this->dao->insert(TABLE_AI_PROMPTFIELD)->data($field, 'id')->exec();
|
||||
$this->dao->insert(TABLE_AI_AGENTFIELD)->data($field, 'id')->exec();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user