Files
ftb-project-management/apps/web/lib/wenfan-help-articles.ts
Script Generator e5ce2d221e feat(问翻小宝): 增强帮助搜索与会话历史
关键改动:

- 增加问翻小宝会话历史记录规则与测试

- 优化帮助搜索、兜底建议和页面交互结构

- 更新帮助截图资产和截图采集脚本

Co-Authored-By: Codex GPT-5 <codex@openai.com>
2026-07-01 09:20:10 +08:00

552 lines
22 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export type HelpImage = {
src: string;
alt: string;
caption: string;
};
export type HelpArticle = {
id: string;
title: string;
category: string;
keywords: string[];
scenario: string;
entry: string;
steps: string[];
requiredFields: string[];
statusFlow: string[];
notes: string[];
images: HelpImage[];
relatedIds: string[];
};
function helpImage(name: string, alt: string, caption: string): HelpImage {
return {
src: `/help/wenfan-xiaobao/${name}.png`,
alt,
caption,
};
}
export const WENFAN_HELP_ARTICLES: HelpArticle[] = [
{
id: 'product-create',
title: '产品如何新建',
category: '产品',
keywords: [
'产品',
'产品管理',
'新建产品',
'创建产品',
'新增产品',
'产品怎么建',
'怎么新建产品',
'产品要填什么',
'产品字段',
'产品名称',
'产品负责人',
'顶层容器',
],
scenario: '当你要把一个业务系统、客户项目或产品线作为顶层容器管理时,先创建产品。',
entry: '左侧导航栏 -> 产品 -> 新建产品',
steps: [
'进入“产品”页面。',
'点击页面右上角的新建产品按钮。',
'填写产品名称、负责人、说明等信息。',
'保存后,产品会出现在产品列表中,后续项目、版本和需求都围绕产品展开。',
],
requiredFields: ['产品名称', '负责人', '产品描述或备注(建议填写,方便团队识别)'],
statusFlow: ['产品本身没有复杂状态流转,主要作为项目、版本和需求的顶层归属。'],
notes: [
'产品不要和项目混用:产品是顶层容器,项目是产品下的执行范围。',
'产品名称建议稳定,后续项目和版本会引用它。',
],
images: [helpImage('product-create', '产品页面截图', '在产品页面创建产品。')],
relatedIds: ['project-create', 'requirement-pool', 'version-create'],
},
{
id: 'project-create',
title: '项目如何新建',
category: '项目',
keywords: [
'项目',
'项目管理',
'新建项目',
'创建项目',
'新增项目',
'项目怎么建',
'项目归属产品',
'项目字段',
'项目负责人',
'项目成员',
'项目和产品',
],
scenario: '当一个产品下需要拆出具体交付范围、团队或客户实施范围时,创建项目。',
entry: '左侧导航栏 -> 项目 -> 新建项目',
steps: [
'进入“项目”页面。',
'点击新建项目按钮。',
'选择归属产品。',
'填写项目名称、负责人、项目类型、说明等信息。',
'保存后,可以继续在项目下创建版本和关联需求。',
],
requiredFields: ['归属产品', '项目名称', '项目负责人', '项目类型'],
statusFlow: ['项目作为执行容器,版本和任务状态会在项目下汇总。'],
notes: [
'一个产品可以有多个项目。',
'项目创建后,需求纳入版本时会按当前项目范围筛选候选需求。',
],
images: [helpImage('project-create', '项目页面截图', '在项目页面创建项目并选择归属产品。')],
relatedIds: ['product-create', 'version-create', 'version-requirement-include'],
},
{
id: 'version-create',
title: '版本如何新建',
category: '版本',
keywords: [
'版本',
'版本号',
'新建版本',
'创建版本',
'新增版本',
'版本怎么建',
'版本字段',
'预期发布日期',
'发版日期',
'版本成员',
'项目开发类型',
'版本状态',
],
scenario: '当项目进入一次明确的交付或发版周期时,创建版本承载计划、开发、测试和发布风险。',
entry: '左侧导航栏 -> 版本 -> 新建版本',
steps: [
'进入“版本”页面。',
'点击新建版本按钮。',
'选择产品和项目。',
'填写版本号、版本名称、项目开发类型、预期发布日期。',
'添加版本成员,保存版本。',
],
requiredFields: ['产品', '项目', '版本号', '版本名称', '项目开发类型', '预期发布日期', '版本成员'],
statusFlow: ['计划中', '开发中', '已发布', '已关闭', '已暂停'],
notes: [
'版本是执行主线,需求、计划、开发任务、测试用例和 Bug 都围绕版本聚合。',
'预期发布日期会影响小宝预警的风险判断。',
],
images: [helpImage('version-create', '版本页面截图', '在版本页面创建版本并维护版本信息。')],
relatedIds: ['project-create', 'version-requirement-include', 'xiaobao-warning'],
},
{
id: 'requirement-pool',
title: '需求池如何新建和采纳需求',
category: '需求池',
keywords: [
'需求',
'需求池',
'新建需求',
'创建需求',
'新增需求',
'需求怎么建',
'需求字段',
'需求采纳',
'采纳需求',
'通过需求',
'需求状态',
'需求评审',
'需求进入版本',
],
scenario: '当产品或项目有新的业务诉求时,先放进需求池,再经过采纳后进入版本执行。',
entry: '左侧导航栏 -> 需求池 -> 新建需求',
steps: [
'进入“需求池”页面。',
'点击新建需求。',
'填写需求标题、归属产品/项目、需求描述、优先级等信息。',
'保存后,需求进入待评审或待采纳状态。',
'评审通过后点击采纳,需求才会成为版本可纳入的候选项。',
],
requiredFields: ['需求标题', '归属产品', '归属项目', '需求描述', '优先级', '提出人'],
statusFlow: ['待评审', '已采纳', '已规划', '开发中', '测试中', '已发布', '已关闭', '已拒绝'],
notes: [
'只有已采纳需求才应该进入版本。',
'需求解释为什么要做,版本和任务负责怎么执行。',
],
images: [helpImage('requirement-pool', '需求池页面截图', '在需求池中新建、评审和采纳需求。')],
relatedIds: ['version-requirement-include', 'version-create', 'dev-task-workflow'],
},
{
id: 'version-requirement-include',
title: '版本里如何从需求池纳入需求',
category: '版本',
keywords: [
'版本需求',
'需求纳入版本',
'需求怎么纳入版本',
'需求怎么纳入版本号',
'纳入需求',
'纳入版本',
'纳入版本号',
'加入版本',
'关联需求',
'需求关联版本',
'需求进入版本',
'从需求池纳入',
'版本号里需求',
'版本号里面的需求',
'版本号需求',
'需求怎么放进版本',
'需求怎么加入版本号',
'已采纳需求',
],
scenario: '当需求池里的需求已采纳,并且本次版本要实现它时,把需求纳入版本。',
entry: '左侧导航栏 -> 版本 -> 打开版本详情 -> 需求区域',
steps: [
'打开目标版本详情。',
'进入需求区域或需求关联入口。',
'从当前项目下已采纳需求中选择要纳入本版本的需求。',
'保存关联关系。',
'后续产品方案、AI 拆解、开发任务和测试用例都围绕这些版本需求展开。',
],
requiredFields: ['目标版本', '至少一条已采纳需求'],
statusFlow: ['需求:已采纳 -> 已规划 -> 开发中 -> 测试中 -> 已发布'],
notes: [
'候选需求来自当前项目下已采纳需求,不从全量需求池随意选择。',
'如果找不到需求,先回需求池确认是否已采纳、是否属于当前项目。',
],
images: [helpImage('version-requirement-include', '版本需求区域截图', '在版本详情中把已采纳需求纳入版本。')],
relatedIds: ['requirement-pool', 'product-plan', 'ai-decompose'],
},
{
id: 'research-plan',
title: '调研计划如何创建和管理进度',
category: '调研',
keywords: [
'调研',
'调研计划',
'创建调研',
'新建调研',
'调研方向',
'调研进度',
'方向进度',
'调研完成',
'计划日志',
'VersionPlan',
],
scenario: '当版本前期需要先做业务、技术或方案调研时,创建调研计划并记录方向进展。',
entry: '版本详情 -> 计划区域 -> 新建调研计划',
steps: [
'打开版本详情。',
'在计划区域选择新建调研计划。',
'填写计划标题、负责人、计划起止时间。',
'维护调研方向和每个方向的完成情况。',
'所有调研方向完成并提交成果后,计划可完成。',
],
requiredFields: ['计划标题', '负责人', '计划开始时间', '计划结束时间', '调研方向'],
statusFlow: ['未开始', '进行中', '已完成'],
notes: [
'调研计划看的是方向完成度,不以需求覆盖作为完成条件。',
'方向进度更新会进入计划日志和工作活动记录。',
],
images: [helpImage('research-plan', '调研计划截图', '在版本计划中创建调研计划并更新方向进度。')],
relatedIds: ['product-plan', 'activity-logs', 'version-create'],
},
{
id: 'product-plan',
title: '产品方案如何创建和提交成果',
category: '产品方案',
keywords: [
'产品方案',
'方案',
'原型',
'成果链接',
'创建产品方案',
'新建产品方案',
'需求覆盖',
'覆盖需求',
'提交成果',
'产品计划',
'方案进度',
],
scenario: '当版本需求需要先沉淀产品方案或原型成果时,创建产品方案计划。',
entry: '版本详情 -> 计划区域 -> 新建产品方案',
steps: [
'打开版本详情。',
'在计划区域创建产品方案计划。',
'选择或确认本方案覆盖的版本需求。',
'按需求记录未开始、部分完成、已完成的覆盖状态。',
'提交成果链接,通常是原型链接或方案文档。',
'覆盖需求全部完成并提交成果后,计划可完成。',
],
requiredFields: ['计划标题', '负责人', '计划起止时间', '覆盖需求', '成果标题', '成果链接'],
statusFlow: ['计划:未开始 -> 进行中 -> 已完成', '需求覆盖:未开始 -> 部分完成 -> 已完成'],
notes: [
'AI 拆解会优先使用已完成产品方案的成果链接作为原型输入。',
'部分完成只记录进度,不满足成果提交门槛。',
],
images: [helpImage('product-plan', '产品方案计划截图', '在产品方案计划中维护需求覆盖并提交成果。')],
relatedIds: ['version-requirement-include', 'ai-decompose', 'activity-logs'],
},
{
id: 'ai-decompose',
title: 'AI 拆解开发任务和测试用例如何使用',
category: 'AI 拆解',
keywords: [
'AI拆解',
'ai拆解',
'AI 拆解',
'任务拆解',
'开发任务拆解',
'测试用例拆解',
'AI生成任务',
'AI生成用例',
'采纳草稿',
'对账报告',
'原型拆解',
],
scenario: '当版本已有已完成产品方案和已纳入需求时,可以让 AI 生成开发任务或测试用例草稿。',
entry: '版本详情 -> 产品方案计划 -> AI 拆解开发任务 / AI 拆解测试用例',
steps: [
'确认版本中已纳入至少一条需求。',
'确认至少一个产品方案计划已完成,并提交了成果链接。',
'在产品方案区域点击 AI 拆解开发任务或 AI 拆解测试用例。',
'查看对账报告,确认需求和原型是否匹配。',
'选择要采纳的草稿。',
'采纳后,草稿进入开发任务或测试用例列表,并带有 AI 草稿标记。',
],
requiredFields: ['已完成产品方案成果链接', '版本已纳入需求', '版本成员'],
statusFlow: ['AI 草稿 -> 用户采纳 -> 任务/用例列表 -> 用户编辑后转为普通记录'],
notes: [
'AI 只生成草稿,不代表负责人已确认排期。',
'AI 估时写入 aiEstimateHours执行估时仍需人工确认。',
'第一阶段问翻小宝不会调用 AI这里说明的是业务系统里的 AI 拆解功能。',
],
images: [helpImage('ai-decompose', 'AI 拆解入口截图', '在产品方案计划中触发 AI 拆解。')],
relatedIds: ['product-plan', 'dev-task-workflow', 'test-case-workflow'],
},
{
id: 'ui-design-plan',
title: 'UI 设计计划如何创建和管理进度',
category: 'UI 设计',
keywords: [
'UI',
'ui',
'UI设计',
'ui设计',
'新建设计',
'创建UI设计',
'UI计划',
'设计进度',
'提交设计',
'设计成果',
],
scenario: '当版本需要设计稿、交互稿或视觉稿交付时,创建 UI 设计计划。',
entry: '版本详情 -> 计划区域 -> 新建 UI 设计',
steps: [
'打开版本详情。',
'在计划区域创建 UI 设计计划。',
'填写负责人和计划起止时间。',
'按需求维护设计覆盖进度。',
'提交设计稿链接或成果说明。',
'需求覆盖完成并提交成果后,计划可完成。',
],
requiredFields: ['计划标题', '负责人', '计划起止时间', '覆盖需求', '设计成果链接'],
statusFlow: ['计划:未开始 -> 进行中 -> 已完成', '需求覆盖:未开始 -> 部分完成 -> 已完成'],
notes: [
'UI 设计和产品方案一样,需要记录需求覆盖状态。',
'提交成果后,日志会记录计划完成和成果提交行为。',
],
images: [helpImage('ui-design-plan', 'UI 设计计划截图', '在版本计划中创建 UI 设计计划并提交成果。')],
relatedIds: ['product-plan', 'activity-logs', 'dev-task-workflow'],
},
{
id: 'dev-task-workflow',
title: '开发任务如何新建、开发中和提测',
category: '开发任务',
keywords: [
'开发任务',
'任务',
'DevTask',
'新建开发任务',
'创建开发任务',
'任务怎么建',
'领取任务',
'填写计划',
'开发中',
'自测',
'提测',
'提交测试',
'任务状态',
'阻塞',
],
scenario: '当版本需求已经明确,需要拆成具体研发工作项时,创建开发任务并推进状态。',
entry: '版本详情 -> 开发任务 Tab -> 新建开发任务',
steps: [
'打开版本详情并进入开发任务 Tab。',
'点击新建开发任务。',
'选择关联需求,填写任务标题、类型、负责人、计划起止时间、估时等信息。',
'负责人领取或确认计划后,将任务切换到开发中。',
'开发完成后进入自测。',
'自测通过且没有阻塞时,切换为已提测。',
],
requiredFields: ['关联需求或原型批注', '任务标题', '任务类型', '负责人', '计划开始时间', '计划结束时间', '执行估时'],
statusFlow: ['待开发', '开发中', '自测', '已提测'],
notes: [
'已提测是开发任务终态,后续测试失败不会回写开发任务状态。',
'任务阻塞时不能提测,必须先解除阻塞。',
'AI 草稿任务需要人工编辑或确认后再进入正式执行。',
],
images: [helpImage('dev-task-workflow', '开发任务页面截图', '在开发任务 Tab 新建任务并推进到提测。')],
relatedIds: ['ai-decompose', 'test-case-workflow', 'activity-logs'],
},
{
id: 'test-case-workflow',
title: '测试用例如何新建和执行',
category: '测试用例',
keywords: [
'测试用例',
'用例',
'TestCase',
'新建测试用例',
'创建测试用例',
'用例怎么建',
'开始测试',
'测试通过',
'测试失败',
'测试阻塞',
'用例状态',
'测试轮次',
],
scenario: '当版本进入验收或测试阶段,需要按需求和测试点建立测试用例并执行。',
entry: '版本详情 -> 测试用例 Tab -> 新建测试用例',
steps: [
'打开版本详情并进入测试用例 Tab。',
'点击新建测试用例。',
'选择关联需求、测试类型、负责人和计划测试时间。',
'填写测试标题、步骤、预期结果。',
'开始测试后,将用例切换为测试中。',
'根据执行结果标记通过、失败或阻塞。',
],
requiredFields: ['用例标题', '测试类型', '负责人', '计划测试时间', '计划结束时间', '测试步骤', '预期结果'],
statusFlow: ['待测试', '测试中', '通过', '失败', '阻塞'],
notes: [
'测试用例主归属是版本,关联需求用于语义分组和覆盖说明。',
'失败用例可以直接创建 Bug。',
'只有最新轮次用例全部完成后,才能开启下一轮测试。',
],
images: [helpImage('test-case-workflow', '测试用例页面截图', '在测试用例 Tab 新建和执行用例。')],
relatedIds: ['bug-workflow', 'dev-task-workflow', 'ai-decompose'],
},
{
id: 'bug-workflow',
title: 'Bug 如何从失败用例创建和流转',
category: 'Bug',
keywords: [
'Bug',
'BUG',
'bug',
'缺陷',
'问题',
'新建Bug',
'创建Bug',
'提Bug',
'怎么提bug',
'测试失败提bug',
'失败后提Bug',
'失败后提 BUG',
'测试用例失败后提Bug',
'测试用例不通过提Bug',
'不通过后提Bug',
'从失败用例提Bug',
'失败用例提 BUG',
'修复Bug',
'验证Bug',
'关闭Bug',
'Bug状态',
],
scenario: '当测试用例执行失败后,从失败用例里提 Bug并跟踪修复、验证和关闭。',
entry: '版本详情 -> 测试用例 Tab -> 打开失败/不通过用例 -> 关联 Bug 区域点击提 BUG',
steps: [
'打开版本详情并进入测试用例 Tab。',
'执行测试用例,并将问题用例标记为不通过/失败。',
'打开该失败测试用例详情,在“关联 Bug”区域点击提 BUG。',
'填写 Bug 标题、严重程度、复现步骤;版本和测试用例来源会自动带入。',
'分配修复负责人和计划修复时间。',
'负责人将 Bug 切换到修复中。',
'修复完成后切换为待验证。',
'测试验证通过后关闭;不通过时可退回修复。',
],
requiredFields: ['Bug 标题', '严重程度', '所属版本', '复现步骤', '负责人', '计划修复时间'],
statusFlow: ['待修复', '修复中', '待验证', '已关闭', '已拒绝'],
notes: [
'当前不能从 Bug Tab 直接新建 BugBug Tab 用于查看、筛选和跟踪已由失败用例提出的 Bug。',
'Bug 直接挂在版本上,测试用例只是来源追踪。',
'关键 Bug 会影响小宝预警风险等级。',
'关闭前应确认修复结果和验证记录。',
],
images: [helpImage('bug-workflow', '失败用例提 Bug 截图', '在失败测试用例详情中点击提 BUG并在 Bug Tab 跟踪修复。')],
relatedIds: ['test-case-workflow', 'xiaobao-warning', 'activity-logs'],
},
{
id: 'activity-logs',
title: '日志记录会记录哪些行为',
category: '日志记录',
keywords: [
'日志',
'记录',
'行为记录',
'活动记录',
'工作活动',
'计划日志',
'日报',
'谁操作了',
'记录哪些行为',
'状态变更记录',
'work activity',
'activity',
],
scenario: '当你需要追踪计划、任务、测试、Bug 的关键操作时,查看日志和活动记录。',
entry: '版本详情计划抽屉、任务详情、工作台日报、小宝预警证据区域',
steps: [
'在计划详情里查看计划日志了解需求覆盖、成果提交、AI 拆解等计划行为。',
'在开发任务、测试用例、Bug 详情里查看对应实体的状态变更记录。',
'在工作台日报里查看当前用户当天的交付、进展、创建和风险记录。',
'在小宝预警里,系统会把日志和活动作为风险证据之一。',
],
requiredFields: ['无需手工填写;系统在关键业务动作成功后自动记录。'],
statusFlow: ['日志不单独流转,跟随业务动作追加。'],
notes: [
'计划日志记录计划内部行为,例如需求覆盖更新和成果提交。',
'工作活动记录跨模块关键动作例如任务开始、提测、Bug 修复、测试失败。',
'手动工作日志仍可补充说明多日进行中的工作。',
],
images: [helpImage('activity-logs', '日志记录页面截图', '在详情或工作台查看系统自动记录的行为。')],
relatedIds: ['research-plan', 'product-plan', 'dev-task-workflow'],
},
{
id: 'xiaobao-warning',
title: '小宝预警和问翻小宝有什么区别',
category: '小宝预警',
keywords: [
'小宝预警',
'预警',
'风险',
'红点',
'发布风险',
'能不能发版',
'问翻小宝和小宝预警',
],
scenario: '当你想判断版本能不能按期发布时,看小宝预警;当你不知道系统怎么用时,问问翻小宝。',
entry: '左侧导航栏 -> 小宝预警',
steps: [
'进入小宝预警页面。',
'查看有风险的未完成版本。',
'打开预警详情,查看风险分、预计发版日、风险原因和建议动作。',
],
requiredFields: ['无需手工填写风险来自版本、任务、测试、Bug、日报和活动数据。'],
statusFlow: ['正常', '关注', '有风险', '大概率延期', '阻塞'],
notes: [
'小宝预警用于版本发布风险,不回答系统怎么使用。',
'问翻小宝第一阶段只回答帮助中心内容,不分析版本风险。',
],
images: [helpImage('xiaobao-warning', '小宝预警页面截图', '小宝预警用于查看版本发布风险。')],
relatedIds: ['version-create', 'activity-logs', 'bug-workflow'],
},
];