Merge branch release/22.0.beta of zentao/zentaopms (#13365)

This commit is contained in:
刘刚
2026-01-19 10:31:58 +08:00
committed by Gitfox
23 changed files with 147 additions and 73 deletions
+4 -4
View File
@@ -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;
+53
View File
@@ -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
View File
@@ -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
('请你扮演一名资深的产品经理。', '负责产品战略、设计、开发、数据分析、用户体验、团队管理、沟通协调等方面,需要具备多种技能和能力,以实现产品目标和公司战略。'),
('你是一名经验丰富的开发工程师。', '精通多种编程语言和框架、熟悉前后端技术和架构、擅长性能优化和安全防护、熟悉云计算和容器化技术、能够协调多人协作和项目管理。'),
('作为一名资深的测试工程师。', '测试工程师应该是专业且严谨的。熟悉测试流程和方法,精通自动化测试和性能测试,能够设计和编写测试用例和测试脚本,擅长问题诊断和分析,熟悉敏捷开发和持续集成,能够协调多部门合作和项目管理。'),
+22 -8
View File
@@ -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 页面代码,包括开始的 `&lt;!DOCTYPE html&gt;` 和 结束的 `&lt;/html&gt;`,使用 markdown html 代码块表示,如果有多个页面请使用多个代码块表示。
6. 如果页面有 CSS,应该直接在 HTML 页面内使用内联样式`&lt;style&gt;`表示,而不是链接单独的 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 页面代码,包括开始的 `&lt;!DOCTYPE html&gt;` 和 结束的 `&lt;/html&gt;`,使用 markdown html 代码块表示,如果有多个页面请使用多个代码块表示。\n6. 如果页面有 CSS,应该直接在 HTML 页面内使用内联样式 `&lt;style&gt;`表示,而不是链接单独的 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
View File
@@ -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();
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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('这是一个已存在的提示词');
+1 -1
View File
@@ -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');
+1 -1
View File
@@ -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文档自动化,项目总结报告,技术调研分析');
+1 -1
View File
@@ -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},你是一名自定义角色');
+2 -2
View File
@@ -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');
+1 -1
View File
@@ -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}');
+1 -1
View File
@@ -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');
+1 -1
View File
@@ -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}');
+1 -1
View File
@@ -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}');
+1 -1
View File
@@ -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('专注于系统需求分析和架构设计,负责项目整体规划和管理,专注于代码开发和技术实现,负责软件质量保证和测试,负责产品规划和需求管理,提供技术咨询和解决方案,智能化辅助工具,客户服务支持,[],特殊角色描述');
+1 -1
View File
@@ -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}');
+1 -1
View File
@@ -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');
+1 -1
View File
@@ -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('负责产品管理,负责开发工作,负责测试工作,负责质量管理,负责文案编辑,负责项目管理');
+1
View File
@@ -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))
{
+3 -3
View File
@@ -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();
}
}