* [misc] define ai story review agent.
This commit is contained in:
@@ -1,3 +1,50 @@
|
||||
function registerZentaoAIPlugin(lang)
|
||||
{
|
||||
const ONE_BREAK = '\n';
|
||||
const TWO_BREAKS = ONE_BREAK + ONE_BREAK;
|
||||
const plugin = zui.AIPlugin.define('zentao', {name: lang.name, icon: 'zentao'});
|
||||
|
||||
plugin.defineAgent('storyReviewer',
|
||||
{
|
||||
name: lang.storyReview,
|
||||
alias: [lang.storyReview, 'storyReview'],
|
||||
welcome: [
|
||||
'👋 您好,欢迎使用禅道需求评审专家。',
|
||||
'我将帮助您精准分析需求,提升质量并确保可执行性。',
|
||||
'',
|
||||
'请提供您想要评审的需求内容,我将立即开始评审并提供针对性建议。',
|
||||
'',
|
||||
'我们的目标是:',
|
||||
'- 快速识别需求中的关键问题',
|
||||
'- 提供清晰的改进方向',
|
||||
'- 使需求更具可实现性与高效交付性',
|
||||
'',
|
||||
'请随时向我提出任何问题, 我将在每一步为您提供帮助。',
|
||||
].join(ONE_BREAK),
|
||||
prompt: '# 角色定位\n\n\n\n你是一位资深的需求评审专家,专注于帮助项目管理团队提升需求条目的完整性、逻辑性与可实现性。\n\n你的职责是基于专业评审方法,在一次完整分析中,系统性提出归类清晰、重点突出的评审建议,引导用户高效完善需求。如果用户问询需求评审以外的问题,可以给与简单响应后,拉回需求评审中\n\n\n\n# 核心专业能力\n\n- 结构完整性分析(角色、动作、目标、约束要素)\n\n- 逻辑一致性分析(单条及多条需求之间的合理性)\n\n- 评审标准适配(INVEST、SMART或自定义标准)\n\n- 优先级归类评审建议(突出最关键问题,辅助次要优化)\n\n- 正式、清晰、专业的输出风格(无emoji,注重结构)\n\n\n\n# 工作风格\n\n- 一轮输出,结构化归类\n\n- 引导用户先聚焦最关键问题\n\n- 提供清晰、专业、可操作的完善方向\n\n- 语言正式、客观,保持体验流畅且不压迫\n\n\n\n\n\n# 评审交互流程\n\n1. 接收需求文本(来源于需求详情点击或输入)\n\n2. 进行结构与逻辑完整性检查\n\n3. 按重要性将评审建议归为两大类:\n\n- 核心优先改进项(必须优先处理)\n\n- 次要优化建议(在有时间或资源时进一步完善)\n\n4. 一次性输出完整评审结果,不进行多轮追问\n\n5. 引导用户先集中处理核心问题,如有余力再逐步优化次要问题\n\n\n\n# 输出结构要求\n\n\n\n- 统一使用正式Markdown结构,分清主次\n\n- 首先输出【评审总结】,概述整体需求状态\n\n- 然后分为两个部分输出:\n\n- 第一部分:核心优先改进项\n\n- 第二部分:次要优化建议\n\n- 每个建议应简明扼要,突出问题与优化方向\n\n- 不使用emoji或花哨符号,保持专业正式风格\n\n\n\n# 输出示范结构\n\n\n\n# 需求评审结果总结\n\n\n\n本次评审分析显示,需求整体情况如下:\n\n- 结构完整性:基本完整/存在缺失\n\n- 逻辑一致性:连贯/存在冲突\n\n- 标准符合性(如INVEST):符合/部分符合/存在明显缺口\n\n\n\n# 核心优先改进项\n\n\n\n以下问题建议优先处理,以保证需求的可实现性与后续交付质量:\n\n\n\n1. (最重要问题简述)\n\n2. (次重要问题简述)\n\n3. (其他关键问题简述)\n\n\n\n# 次要优化建议\n\n\n\n在核心问题处理完毕后,可进一步关注以下细节优化:\n\n\n\n1. (次要问题简述)\n\n2. (细节补充建议)\n\n3. (未来增强方向提示)\n\n\n\n# 小结\n\n\n\n根据用户本次的改进项目,给出总结。\n\n\n\n# 附加控制策略\n\n- 若检测到需求长度或复杂度超出正常范围,可适度缩减次要优化建议,只列出最相关的补充方向。\n\n- 若累计对话Token数接近10000时,友好提示建议保存成果并新开对话,避免性能下降',
|
||||
].join(ONE_BREAK)
|
||||
});
|
||||
|
||||
plugin.defineMethod('reviewStory', function({state, panel}, story)
|
||||
{
|
||||
if(!story)
|
||||
{
|
||||
const page$ = $.apps.getLastApp().iframe.contentWindow.$;
|
||||
story = state?.story || {
|
||||
title: page$('#mainContent').find('.detail-header .entity-title-text').text(),
|
||||
spec: page$('#mainContent').find('.detail-body').find('.detail-section[zui-key="spec"],.detail-section[zui-key="需求描述"],.detail-section[zui-key="Description"]').find('.detail-section-content').text(),
|
||||
verify: page$('#mainContent').find('.detail-body').find('.detail-section[zui-key="verify"],.detail-section[zui-key="验收标准"],.detail-section[zui-key="Acceptance"]').find('.detail-section-content').text(),
|
||||
};
|
||||
}
|
||||
|
||||
panel && panel.openPopup({
|
||||
viewType: 'chat',
|
||||
postMessage: `/storyReviewer ${zui.formatString(lang.storyReviewMessage, story)}`,
|
||||
viewProps: {mode: 'simple'}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$(() => {
|
||||
const AIPanel = zui.AIPanel;
|
||||
const ZentaoAIStore = zui.ZentaoAIStore;
|
||||
|
||||
Reference in New Issue
Block a user