【OpenHarmony/HarmonyOs 】数学知识库收藏管理:标签筛选、详情弹窗与近场分享数据准备

发布时间:2026/7/25 15:38:02

【OpenHarmony/HarmonyOs 】数学知识库收藏管理:标签筛选、详情弹窗与近场分享数据准备
【OpenHarmony/HarmonyOs 】数学知识库收藏管理标签筛选、详情弹窗与近场分享数据准备项目类型OpenHarmony / HarmonyOS ArkTS 数学学习应用项目名称数学视界对应主题近场快传、全场景智慧生活、隐私保护方案关键词ArkTS、收藏系统、知识库、标签筛选、详情弹窗、结构化数据 一、为什么收藏系统不只是“加个爱心”在数学视界项目中收藏系统不是简单地把某个条目标记为喜欢而是一个个人数学知识库。用户可以收藏公式知识点趣味百科图形方案历史内容自定义笔记。这就让收藏系统具备了更大的扩展空间本地复习标签筛选详情查看编辑备注删除整理近场分享备份恢复元服务“最近收藏”入口。所以这篇文章重点写FavoritesPage.ets如何把收藏做成结构化知识库。二、收藏页面状态分类、标签、搜索、排序收藏页的状态比较完整StateselectedCategory: string 全部Statecategories: string[] [全部,公式,知识点,趣味百科,图形,历史,自定义]StateallTags: string[] [全部,几何,代数,三角,函数,概率,导数,常数,基础,趣味百科,画板]StateselectedTag: string 全部StatesearchKeyword: string StatesortType: string 最新StateviewMode: string listStatefavorites: FavoriteItem[] []StatefilteredFavorites: FavoriteItem[] []这说明收藏页支持多维度管理按分类看按标签看按关键词搜按最新/最早/名称/分类排序列表视图和网格视图切换。对学习应用来说这些能力比单纯“收藏/取消收藏”更有价值。三、FavoriteItem收藏条目的统一结构全局收藏类型定义在AppState.etsexport interface FavoriteItem {id:stringtype:stringtitle:stringcontent:stringcategory:stringicon:stringbgColor:stringaccentColor:stringnote:stringtags:string[] createdAt:numberupdatedAt:numbergraphData?:stringthumbnail?:string}这个结构的亮点是它能统一承载多种内容公式type formula知识点type knowledge图形type graph可带graphData自定义笔记type custom。尤其是graphData字段它为后续近场快传数学图形方案做了准备。分享时不一定要传图片可以传结构化数据。四、筛选逻辑分类、标签、关键词组合过滤收藏页的核心筛选逻辑如下private doFilter(): void {let result: FavoriteItem[] this.favoritesif (this.selectedCategory! 全部) { result result.filter((item: FavoriteItem): boolean item.category this.selectedCategory) } if (this.selectedTag! 全部 this.selectedTag! ) { result result.filter((item: FavoriteItem): boolean item.tags.indexOf(this.selectedTag) 0 ) } if (this.searchKeyword.trim() ! ) { const kw: string this.searchKeyword.toLowerCase() result result.filter((item: FavoriteItem): boolean item.title.toLowerCase().indexOf(kw) 0 || item.content.toLowerCase().indexOf(kw) 0 || item.note.toLowerCase().indexOf(kw) 0 ) } this.filteredFavorites result }这个逻辑非常适合个人知识库想看公式选“公式”想看函数相关内容选“函数”标签想找某个关键词直接搜索标题、内容、备注多个条件可以叠加。五、排序让知识库更容易整理收藏页支持四种排序if(this.sortType 最新) { result.sort((a: FavoriteItem,b: FavoriteItem):numberb.createdAt - a.createdAt ) }elseif(this.sortType 最早) { result.sort((a: FavoriteItem,b: FavoriteItem):numbera.createdAt - b.createdAt ) }elseif(this.sortType 名称) { result.sort((a: FavoriteItem,b: FavoriteItem):numbera.title.localeCompare(b.title,zh-CN) ) }elseif(this.sortType 分类) { result.sort((a: FavoriteItem,b: FavoriteItem):numbera.category.localeCompare(b.category,zh-CN) ) }这些排序方式对应不同学习场景最新复习最近收藏最早回顾长期积累名称按知识点查找分类整理知识结构。六、添加收藏自定义内容也能进入知识库收藏页支持用户手动添加内容addFavorite(): void {if(this.addTitle.trim() ) {this.showToast(⚠️ 请输入标题)return}if(this.addContent.trim() ) {this.showToast(⚠️ 请输入公式/内容)return}constparsedTags: string[] this.addTags.split(/[,]/) .map((t: string): string t.trim()) .filter((t: string): boolean t !)constnewItem: FavoriteItem { id: Date.now().toString(), type:this.addCategory 公式?formula:custom, title:this.addTitle.trim(), content:this.addContent.trim(), category:this.addCategory, icon: iconMap[this.addCategory] ??, note:this.addNote.trim() !?this.addNote.trim() :用户收藏, tags: parsedTags, createdAt: Date.now(), updatedAt: Date.now(), } AppState.addFavorite(newItem) }这让收藏页不仅能接收系统内置公式、百科、画板也能接收用户自己的笔记。七、编辑与详情弹窗收藏需要可维护收藏详情弹窗展示了标题、分类、内容、备注、标签Text(this.selectedItem.title)Text(this.selectedItem.category · this.formatDate(this.selectedItem.createdAt))Text(this.selectedItem.content)Text(this.selectedItem.note||暂无备注)标签展示ForEach(this.selectedItem.tags, (tag:string) {Text(tag).fontSize(12).fontColor(#FF7A8A).backgroundColor(this.getIconBg(#FFE8F0)) .borderRadius(10)})底部提供编辑和删除Button(✏️ 编辑) .onClick(() {this.showDetailDialog falsethis.openEditDialog(this.selectedItem!) }) Button(️ 删除) .onClick(() {this.removeFavorite(this.selectedItem!.id)this.showDetailDialog false})知识库不是越多越好也需要整理。编辑和删除能力能让用户保持收藏质量。八、近场分享为什么结构化收藏很重要如果后续接入近场快传收藏系统可以直接作为分享数据来源interface FavoriteSharePackage {version:numbertype:stringtitle:stringcontent:stringcategory:stringnote:stringtags:string[] graphData?:string}比如分享一条公式分享一篇趣味百科分享一个图形画板方案分享一组标签下的知识点。结构化分享比截图更适合学习场景因为接收方可以继续编辑、收藏和复习。九、隐私保护收藏默认留在本地收藏内容可能包含用户的学习重点、错题备注、个人笔记所以它也属于需要保护的学习数据。当前项目的收藏管理是本地状态refreshFavorites(): void { this.favorites AppState.favoritesthis.doFilter() }默认不上传、不共享、不做 AI 识图。用户主动触发分享时再生成结构化数据包是更稳妥的方式。十、全场景扩展收藏可以成为学习资产中心收藏页后续可以扩展到多个场景场景用法元服务展示最近收藏的公式近场快传分享公式卡片或图形方案备份恢复换机保留个人知识库今日复习从收藏中抽取一条知识点学习报告统计收藏分类分布这说明收藏系统不是附属功能而是学习资产中心。十一、总结这篇文章贴合近场快传、全场景智慧生活和隐私保护主题重点是数学视界的收藏知识库。核心实现包括 用FavoriteItem统一承载公式、知识点、百科、图形和自定义内容 用分类、标签、关键词组合筛选 支持最新、最早、名称、分类排序 用详情弹窗展示内容、备注和标签✏️ 支持编辑和删除方便维护知识库质量 通过graphData为图形方案分享做准备 默认本地管理用户主动触发时再分享。对数学学习 App 来说收藏系统的价值不只是“喜欢”。它真正承载的是用户长期积累的学习资产。

相关新闻

大模型评测与AI产品质量保障:第21篇 传统基准测试实战(二):GSM8K、MATH 与 TruthfulQA

大模型评测与AI产品质量保障:第21篇 传统基准测试实战(二):GSM8K、MATH 与 TruthfulQA

2026/7/25 6:17:18

IT策士 10余年一线大厂经验,专注大模型测试、AI产品质量保障与职场进阶。我会在各个平台持续发布最新文章,助你少走弯路。上一篇我们拆解了 MMLU 和 HellaSwag,一个测"知识储备",一个测"常识推理"。但大模型最…

Playwright 项目脚手架与多项目管理

Playwright 项目脚手架与多项目管理

2026/7/25 20:34:50

🧠 一、核心问题理解 在学习 Playwright 自动化过程中,经常会遇到两个问题: 1. npx playwright init 是什么? 2. 多个项目(网报A / CRM)怎么管理? 3. 是否需要复制脚手架?&#x1f6…

数字图像处理 2.7 节:像素邻接与连通性辨析,4邻域/8邻域在OpenCV中的3种实现对比

数字图像处理 2.7 节:像素邻接与连通性辨析,4邻域/8邻域在OpenCV中的3种实现对比

2026/7/25 16:01:19

像素邻接与连通性在OpenCV中的3种实现方法深度解析引言:为什么像素关系如此重要当我们第一次接触数字图像处理时,往往会被各种炫目的滤镜和特效吸引。但真正决定图像处理质量的基石,却是那些看似枯燥的基础概念——比如像素间的邻接关系和连通…

PLC通信与故障处理19-西门子PLC通信故障排查——TIA Portal诊断工具全攻略:从诊断缓冲区到PROFINET排错,手把手教你治“通信断连“

PLC通信与故障处理19-西门子PLC通信故障排查——TIA Portal诊断工具全攻略:从诊断缓冲区到PROFINET排错,手把手教你治“通信断连“

2026/7/26 3:24:11

开篇:那个让人心态炸裂的下午 下午三点,产线停了。控制柜上S7-1200的BF(Bus Fault,总线故障)灯像恶魔的眼睛一样疯狂闪烁。操作工拿着对讲机喊你"快来看看",车间主任脸色铁青地站在旁边。你打开…

基于YOLOv10的跌倒检测系统:从算法到工程实践

基于YOLOv10的跌倒检测系统:从算法到工程实践

2026/7/26 3:24:11

1. 项目概述:当计算机视觉遇上安全监护去年夏天,我在养老院做技术调研时,发现护工们最头疼的就是夜间老人跌倒无法及时发现的问题。传统红外感应方案误报率高达40%,而基于YOLOv10的跌倒检测系统在测试中实现了92%的准确率。这个开…

基于YOLOv10的X光安检危险品智能检测系统

基于YOLOv10的X光安检危险品智能检测系统

2026/7/26 3:24:11

1. 项目背景与核心价值安检X光危险物检测系统是机场、地铁、高铁等公共场所安全防护的第一道防线。传统人工判图方式存在效率低(每小时约200-300件)、漏检率高(约15-20%)的问题。我们团队基于YOLOv10构建的智能检测系统&#xff0…

Claude API与本地模型混合架构实战指南

Claude API与本地模型混合架构实战指南

2026/7/26 3:24:11

1. 项目背景与核心价值去年在做一个智能客服系统时,我们需要将Claude的对话能力与企业内部的知识库系统对接。当时市面上关于Claude API接入的完整教程非常稀缺,特别是涉及第三方模型整合的场景。经过两个月的实战摸索,我们最终实现了稳定可靠…

专科生必看:9款AI工具提升学习与就业竞争力

专科生必看:9款AI工具提升学习与就业竞争力

2026/7/26 3:24:11

1. 专科生如何应对AI时代的工具选择困境最近两年AI工具的爆发式增长,让很多专科院校的同学感到既兴奋又焦虑。作为在职业教育领域工作多年的从业者,我经常被学生问到:"老师,现在AI这么厉害,我们专科生学的东西会不…

大模型面试必备:RAG技术原理与代码实践指南

大模型面试必备:RAG技术原理与代码实践指南

2026/7/26 3:14:10

1. 项目概述"大模型面试复盘:手把手带你从RAG到代码"这个标题直指当前AI领域最热门的两个话题:大模型面试准备和RAG技术实践。作为一名经历过多次大厂AI岗位面试的从业者,我深刻理解在有限时间内系统掌握RAG技术栈的痛点。本文将基…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…