【OpenHarmony/HarmonyOs 】趣味数学百科本地内容检索、阅读激励与禁止 AI 识图的学习路径项目类型OpenHarmony / HarmonyOS ArkTS 数学学习应用项目名称数学视界对应主题禁止 AI 识图、隐私保护方案、全新视觉与交互体验关键词ArkTS、本地内容库、趣味数学、搜索筛选、阅读激励、隐私保护 一、为什么“趣味百科”也符合主题这篇文章的角度不是 AI也不是系统权限而是教育类 App 更常见、也更稳妥的一条路线用本地优质内容引导学习而不是让用户拍照搜题、上传图片、等待 AI 给答案。数学视界项目中的FunMathPage.ets是一个趣味数学百科页面内容包括经典谜题几何之美数字奇观概率趣闻悖论与反例数学家故事。这些内容都放在本地数组FUN_MATH_ARTICLES中用户可以搜索、筛选、展开阅读。整个过程不需要相机权限、不需要相册权限、不需要 AI 识图也不需要网络请求。二、本地内容结构一篇文章就是一个学习卡片项目中定义了文章结构interfaceFunMathArticle{ id:stringtitle:stringsubtitle:stringicon:stringcategory:stringbgColor:stringaccentColor:stringtags:string[] content:stringexamples?:string[] funFact?:string}这个结构很适合教育内容title主题subtitle一句话吸引用户category内容分类tags知识标签content正文examples现实例子funFact趣味补充。它比一篇纯文本更适合移动端卡片展示也更方便后续搜索和推荐。三、分类设计让内容更容易探索项目中给每个分类配置了颜色constCATEGORY_COLORS: Recordstring,string {经典谜题:#E74C3C,几何之美:#3498DB,数字奇观:#E67E22,概率趣闻:#9B59B6,悖论与反例:#795548,数学家故事:#E91E63, }这种分类对数学学习很重要。用户不一定知道自己要搜什么但可以通过兴趣进入喜欢脑筋急转弯看经典谜题喜欢图形看几何之美喜欢故事看数学家故事喜欢反直觉内容看悖论与反例。教育产品不应该只有“刷题”也需要轻量阅读和兴趣启发。四、搜索筛选从本地数组中即时检索趣味百科的筛选逻辑如下private rebuildFiltered(): void {let result: FunMathArticle[] FUN_MATH_ARTICLES if (this.selectedCategory! 全部) { result result.filter((a: FunMathArticle): boolean a.category this.selectedCategory) } if (this.searchKeyword.trim() ! ) { const kw: string this.searchKeyword.trim().toLowerCase() result result.filter((a: FunMathArticle): boolean a.title.indexOf(kw) 0 || a.subtitle.indexOf(kw) 0 || a.content.indexOf(kw) 0 || a.tags.some((t: string): boolean t.indexOf(kw) 0) ) } this.articleCount result.lengthconst ids: string[] [] for (let i 0;i result.length; i) { ids.push(result[i].id) } this.filteredIds ids }这段代码有几个特点先按分类过滤再按关键词匹配搜索范围覆盖标题、副标题、正文、标签最终只保存文章 id渲染时再取文章详情。这种方案足够轻量非常适合本地内容量不大的百科模块。五、展开阅读点击卡片才记录学习项目中的文章卡片支持展开/收起BuilderbuildCard(id: string) { Column() {this.buildCardHeader(id)if(this.expandedId id) {this.buildCardExpanded(id) } } .onClick(() {this.pulseAnim(fcard_ id)if(this.expandedId id) {this.expandedId }else{this.expandedId id AppState.recordArticleRead() } }) }这里有一个很细的设计只有当用户展开文章时才调用AppState.recordArticleRead()。这比“进入页面就算阅读”更合理。学习统计应该尽量反映真实行为而不是虚高。六、阅读激励和成就、今日目标连接趣味百科在页面出现时也会更新学习数据AppState.recordFunFactViewed()AppState.recordArticleRead()在AppState里阅读会推动成就和学习进度recordFunFactViewed(): void { this.studyData.funFactsViewed this.addAchievementProgress(综合,1) }recordArticleRead(): void { this.addAchievementProgress(趣味百科,1) }这让趣味阅读不只是“看一看”而是纳入学习闭环阅读一篇文章今日学习进度增加趣味百科成就推进用户更愿意继续探索。七、为什么这是“禁止 AI 识图”的替代路径很多学习 App 会把重点放在“拍题 - 识别 - 出答案”。但对学生来说这很容易变成只要答案而不是理解数学。趣味百科提供的是另一种学习路径不拍照不上传不识别用户试卷用故事、悖论、例子激发兴趣让用户主动阅读和探索。这不是反对 AI而是说明教育产品不一定所有能力都要 AI 化。内容结构化、本地检索、阅读激励同样能提升学习体验。八、隐私优势内容库完全在本地趣味百科模块没有用到相机相册麦克风位置网络接口云端识别。用户的搜索词、阅读内容和兴趣偏好都可以留在本地。这对未成年人学习场景尤其重要。如果后续要加入推荐也可以优先做端侧推荐interfaceLocalArticleRecommend{ category:stringrecentlyReadIds:string[] preferredTags:string[] }不需要上传阅读画像也能做基础推荐。九、全场景扩展每日趣味数学卡片趣味百科也很适合元服务或桌面卡片入口内容每日趣味数学每天展示一篇短知识数学谜题卡片展示一个概率/悖论问题数学家故事每天一个人物故事今日冷知识展示funFact字段因为FunMathArticle数据结构本身已经很完整未来可以很容易生成轻量卡片。十、总结这篇文章从“趣味百科”切入贴合禁止 AI 识图、隐私保护和全新交互体验主题。核心实现包括 用FUN_MATH_ARTICLES构建本地内容库 用分类和标签组织趣味数学内容 用rebuildFiltered()实现本地搜索 用展开卡片记录真实阅读行为 用recordArticleRead()和recordFunFactViewed()接入成就系统 不使用相机、相册、网络和 AI 识图 可扩展为每日趣味数学元服务入口。数学学习不只有刷题。把好的数学故事、悖论和知识点做成本地可检索内容库也是一种非常适合 OpenHarmony / HarmonyOS 的教育产品实践。✨