SuperAPI AI 工具集

fusion-help-integration

编程与开发

查看项目

更新于 10-15 17:01

技能介绍

用途

Fusion Help Integration 用于把 Fusion Help Center 接入应用页面,使用户可以通过 PageLayout 上的帮助按钮打开上下文相关的帮助文章。

适用场景

  • 为页面添加帮助按钮
  • 在页面组件中接入 useHelpCenter
  • 创建或更新帮助文章常量文件
  • 连接 PageLayout 与 Fusion Help Center
  • 给某个应用添加帮助支持
  • 从页面打开指定的帮助文章

以下场景不适用:撰写 Markdown 帮助文章(应使用 fusion-help-docs);直接调用 Help 服务的 REST API(应使用 fusion-help-api);修改 @fra/ui 共享组件(PageLayout、PageHeader、FusionHelpButton);非 Fusion 框架应用或该 monorepo 之外的应用。

所需输入

在开始改动前需收集:

输入 是否必需 默认值 说明
App name 是 — apps/ 下的应用目录名,例如 fra-app-management
Target pages 是 — 要接入的页面,或填 "all" 表示所有使用 PageLayout 的页面
Article slugs 是 自动推导 每个页面的 slug 字符串。若未提供,按 {app-name}-{page-kebab} 推导
Include release notes 否 true 是否同时向 PageLayout 传入 openReleaseNotes
Constants file location 否 src/constants/helpArticles.ts FUSION_HELP_ARTICLES 对象的路径

如果 slug 为自动推导,必须在应用前与用户确认——slug 必须与通过 fhelp 发布的文章一致。

使用方式

  1. 检查现有帮助集成:在目标应用中搜索 helpArticles.ts、fusionHelpArticles.ts 以及 useHelpCenter 的 import。若已有部分集成,应在其基础上扩展而非重复添加。

  2. 确定 slug 约定:若应用已有包含 slug 的常量文件,沿用其命名模式;若没有,则使用 {app-name}-{page-kebab} 约定。参考约定示例:fra-access-manager 使用 {app-name}-{page-kebab}(如 fra-access-manager-access-groups);fra-app-management 使用无前缀页面名(overview、requests);personnel-allocation 使用 {app-name}-{page-kebab}(如 personnel-allocation-overview)。新应用优先使用带前缀的约定,以避免跨应用的 slug 冲突。

  3. 创建或更新常量文件:创建 src/constants/helpArticles.ts(或应用选定位置),内容形如:

export const FUSION_HELP_ARTICLES = { PAGE_NAME: '{app-name}-{page-kebab}', };

键为与页面概念匹配的 SCREAMING_SNAKE_CASE,值为 kebab-case 的 slug 字符串。完整的规范模式可参见 references/wiring-pattern.md。

  1. 接入每个目标页面:对每个使用 PageLayout 的页面组件:

    a. 添加 import(顺序为外部依赖、@fra/、@/ 别名、相对路径):

import { useHelpCenter } from '@equinor/fusion-framework-react-app/help-center'; import { PageLayout } from '@fra/ui'; import { FUSION_HELP_ARTICLES } from '@/constants/helpArticles';

b. 在组件体内解构 hook:

const { openArticle, openReleaseNotes } = useHelpCenter();

若不需要 release notes,则只解构 { openArticle }。

c. 向 PageLayout 传 props:

<PageLayout title="Page Title" openHelpArticle={() => openArticle(FUSION_HELP_ARTICLES.PAGE_NAME)} openReleaseNotes={openReleaseNotes}

注意:openHelpArticle 必须是回调包装 () => openArticle(slug),不能直接引用,因为 openArticle 需要 slug 参数。

  1. 验证集成:运行 TypeScript 检查 pnpm --filter {app-name} exec tsc --noEmit;运行 lint 检查 pnpm --filter {app-name} exec eslint src/;进行视觉检查,确认页面头部显示 info-circle(ⓘ)图标,点击后可打开 Fusion Help 侧边面板。

  2. 与已发布内容交叉核对:FUSION_HELP_ARTICLES 中的每个 slug 都必须对应一篇已发布文章。若文章不存在:指向 fusion-help-docs 进行撰写;常量中的 slug 必须与 help-articles.json 中的 slug 字段完全一致;文章通过 fhelp 按环境发布。

预期输出

  • 创建或更新包含文章 slug 映射的常量文件
  • 目标页面完成 useHelpCenter + PageLayout props 接入
  • TypeScript 编译通过
  • 列出需要对应帮助文章的 slug 清单(用于交接给 fusion-help-docs)

安全与约束

  • 未经确认不得臆造 slug 名称——slug 必须与已发布文章一致
  • 不得修改 @fra/ui 组件——PageLayout、PageHeader、FusionHelpButton 已支持 help props
  • 不得新增依赖——@equinor/fusion-framework-react-app 已在每个应用中
  • 遵循应用的 import 别名约定——大多数应用使用 @/* → src/*
  • 尊重现有代码风格——类型专用 import 使用 type,保持 import 分组顺序
  • 不要重复接入帮助逻辑——若页面已有 useHelpCenter,应扩展而非重复添加
  • 应用前确认自动推导的 slug——错误的 slug 会静默失败(不显示文章)

限制

关于收费、价格、平台与效果等信息,资料中暂未提供。