Files
biz_firstpage/readme.md
T
2026-07-30 17:24:35 +08:00

7.3 KiB
Raw Blame History

biz_firstpage

biz_firstpage 是期货业务首页的 Stage 模型 HAR 模块,对外包名为 @b2c/first_page。模块负责首页信息流编排、行情及 AI 卡片、资讯页面、 宫格页面和首页浮层广告,并由宿主应用提供路由、行情、广告、账户及主题等 运行能力。

功能范围

  • 首页标题栏、背景、下拉刷新和可见性生命周期管理
  • Banner、运营头图、四宫格、自定义宫格和自选行情
  • 热点资讯、商品期权、AI 品种诊断、AI 看涨跌
  • AI 选期和市场排名
  • 首页弹窗广告、悬浮球及相关状态管理
  • 热点资讯详情页和全部宫格页
  • 中英文文案及浅色、深色主题资源

对外接口

模块的宿主接口统一从根目录的 Index.ets 导出:

导出项 用途
FirstPage 首页主组件
HotNewsPage 热点资讯列表页
HotNewsDetailPage 热点资讯详情页
GridNodeAllPage 全部宫格页
FirstPagePopupAdHelper 首页弹窗广告辅助类
AdsPopupView 广告浮层视图
AdFloatState 广告悬浮状态
SpAdsComponent 广告组件
PopupRecord 弹窗记录模型
AdsPopupHost 广告浮层宿主
AdsBallManager 广告悬浮球管理器

新增需要被宿主直接使用的组件、类型或工具时,应同步从 Index.ets 导出。

目录结构

.
├── Index.ets                         # HAR 对外导出入口
├── src/main
│   ├── ets
│   │   ├── components/mainpage       # 首页主组件
│   │   ├── constants                 # AI 选期、市场排名等常量
│   │   ├── datacenter                # 首页和卡片数据获取、首页模型
│   │   ├── node
│   │   │   ├── clients               # 行情请求与订阅客户端
│   │   │   ├── datacenter            # Node 级数据获取
│   │   │   ├── helper                # Node 辅助逻辑
│   │   │   ├── model                 # 卡片数据模型
│   │   │   └── view                  # 卡片视图
│   │   ├── pages                     # 独立业务页面
│   │   ├── popup                     # 弹窗广告和悬浮球
│   │   ├── router                    # 模块路由
│   │   ├── util                      # 格式化、映射和通用工具
│   │   └── views                     # 首页公共视图
│   └── resources
│       ├── base/zh_CN/en_US           # 文案和基础资源
│       ├── light/dark                 # 主题颜色
│       └── rawfile                    # 卡片配置和静态配置
├── src/ohosTest                       # Hypium 测试模块骨架
└── doc                                # 设计审查和已知问题

宿主集成

本仓库不是可独立运行的应用工程。它以 HAR 形式集成到完整宿主项目,宿主需要:

  1. 引入 @b2c/first_page 及其业务依赖。
  2. 提供 biz_quote、主题管理,以及源码中使用的公共业务模块和系统能力。
  3. 初始化首页依赖的全局上下文、路由、行情连接、账户状态和广告服务。
  4. 创建并传入宿主维护的 FirstPageTabManager,用于通知首页 Tab 可见性。
  5. 注册 src/main/resources/base/profile/main_pages.json 中需要使用的页面。

oh-package.json5 中声明了当前模块的直接依赖:

{
  "dependencies": {
    "biz_quote": "file:../biz_quote",
    "@kernel/theme_manager": "1.0.2-beta.17"
  }
}

其中 biz_quote 使用相邻目录路径,实际集成时应保持宿主仓库的既有目录和依赖 组织方式,不要为了单独运行本模块而补造宿主依赖。

首页卡片接入

常规首页卡片通常需要同时完成以下接线:

  1. src/main/ets/datacenter/FirstPageConstant.ets 增加唯一的 KEY_*
  2. 在首页数据模型中插入或接收对应卡片模型。
  3. FirstPage.createNodeView 中增加渲染分支。
  4. src/main/resources/rawfile/first_page_cards_config.json 增加服务端卡片 元数据,包括 card_keyrender_key、标题、跳转和接口配置。
  5. 将视图、模型、数据获取和常量分别放入现有职责目录。
  6. 为新增文案补齐 basezh_CNen_US 资源,并通过 $r('app.color.*') 使用主题颜色。

注意,项目中存在两个同名的 FirstPageConstant.ets

  • datacenter/FirstPageConstant.ets:定义首页卡片 KEY_*
  • util/FirstPageConstant.ets:只定义标题栏高度等 UI 常量。

不要将卡片 ID 添加到 util 目录的文件中。

市场排名的特殊接线

市场排名不完全遵循普通卡片的装载方式:

  • 首页通过 KEY_MARKET_RANKING 直接插入和渲染卡片。
  • rawfile 配置键固定为 marketRanking
  • MarketRankingDataFetcher 先通过 @kit.NetworkKit 获取推荐合约。
  • MarketRankingHqRequestClient 再通过宿主 TableRequestClient 的 4106 链路订阅行情。
  • 4106 frame 2201、场景 qht_qihuo_sortpushtime=2.5 应保持一致。
  • 页面不可见、切换 Tab、刷新和组件销毁时必须释放订阅;TCP 重连后应使用原始 HTTP 合约列表重建订阅。
  • HTTP 请求与行情订阅的版本保护、合约/市场/名称顺序及 jumpToQuote() 路由参数不能被破坏。

修改此功能前请先阅读:

  • doc/market-ranking-known-issues.md
  • doc/market-ranking-ai-pick-code-review.md

资源与发布约束

  • 用户可见文案放入 src/main/resources/{base,zh_CN,en_US}/element/string.json
  • 颜色放入资源文件,并按需在 lightdark qualifier 中提供主题值,避免在 ArkUI 代码中硬编码主题颜色。
  • 提交代码时,FirstPageDebugUtil.isMarketRankingUseTestUrl 及其他测试环境 开关必须保持为 false
  • 保持现有 biz_quote 根路径和深路径导入风格,避免无关的依赖整理。
  • 新增公开或反射访问的符号时,检查 obfuscation-rules.txtconsumer-rules.txt,确保 release ArkGuard 配置完整。

验证

此 checkout 缺少 hvigorwoh_modules、相邻的 ../biz_quote,并依赖宿主 提供的多个业务模块,因此不能在仓库内独立完成可靠的构建、运行或测试。

改动应放入完整宿主工程验证,至少覆盖:

  • biz_firstpage HAR 的 debug 和 release 集成构建
  • src/ohosTest 测试模块的编译与执行
  • 首页拉取、下拉刷新、Tab 显隐和自动刷新生命周期
  • 浅色/深色主题及中英文资源
  • 页面路由、广告弹窗和悬浮球
  • AI 选期、市场排名的 HTTP 环境与鉴权
  • 4106 字段、标准价、订阅释放和 TCP 重连
  • 行情列表点击后的合约、市场、名称传递及详情页跳转

相关配置

文件 说明
build-profile.json5 HAR target、ohosTest target 和 release 混淆配置
src/main/module.json5 HAR 模块类型、设备类型和网络权限
src/main/resources/rawfile/first_page_cards_config.json 首页卡片元数据
src/main/resources/base/profile/main_pages.json 模块页面清单
obfuscation-rules.txt 本模块 release 混淆规则
consumer-rules.txt 提供给消费方的混淆规则