【知律|10】HarmonyOS ArkTS 案例边界实战:明确普法内容不替代法律意见 📅 发布时间:2026/8/17 21:55:51 👁 浏览次数: 法律学习应用有一个比“答案是否能显示”更难的工程问题用户会把界面里的确定语气当成可以直接执行的结论。题库写着“应当赔偿”“可以起诉”“申请仲裁”在学习场景里可能只是知识点放到真实纠纷中却还取决于事实、证据、地域、程序期限、现行规则和专业判断。一个醒目的“仅供参考”无法自动修复过期法条、虚构来源或缺失条件。本文基于知律项目D:\huawei\one19-11、包名com.jiaweikang.one19的真实源码复核 brief 指向的BankDetailPage.ets与SettingsPage.ets并追踪HomePage.ets、本地题库和应用清单。当前应用明确定位为“知律 · 普法学堂”内容为本地题库练习但页面使用“真实案例”“维权思路”等表述没有展示“不替代法律意见”的边界也没有来源、适用日期、审核时间或案例改编标记。文章从这一真实缺口出发设计 HarmonyOS 5.0 可落地的内容边界契约。一、源码已经把产品定位为普法学习资源文件中的应用名是{ name: app_name, value: 知律 · 普法学堂 }首页、启动页和题库分类也反复使用“普法学堂”“每日普法”“案例学习”。这说明产品核心是法律知识教育不是在线问律师、案件代理或个案结论生成。这个定位很重要。边界设计不是把产品能力缩小而是让用户知道应用帮助理解一般规则和学习路径具体纠纷仍需结合完整事实与有效规则判断。二、BankDetailPage 的现有文案容易产生能力外推默认题库简介写着const DEFAULT_BANK_DETAIL_PROFILE: BankDetailProfile { subtitle: 按章节练习重点法条、情景判断与案例分析, intro: 从日常生活场景出发逐步掌握常识型法律知识与维权思路。, cultureNote: 题目会以真实案例为依托穿插重要法条与维权流程帮你记得更牢。, focusTags: [高频法条, 生活场景, 维权思路], sceneTags: [日常交往, 消费维权, 人身权益] }“案例分析”和“维权思路”适合学习产品但“真实案例”是一项可验证声明。当前题库数据没有案号、裁判文书链接、发布机关、时间或改编说明无法从源码确认每道题都源自可追溯真实案件。更稳的文案应区分有公开来源且可核验标为“公开案例摘编”根据常见情形整理标为“教学情景”为知识点构造标为“模拟案例”来源暂不完整不使用“真实案例”。三、SettingsPage 目前没有法律内容边界入口设置页“关于”区域只有版本、平台和框架this.ActionSettingItem(版本, v1.0.0, ...) this.ActionSettingItem(平台, HarmonyOS, ...) this.ActionSettingItem(框架, ArkTS / ArkUI, ...)源码搜索没有找到“不构成法律意见”“仅供普法学习”“内容更新时间”“来源说明”或“专业法律帮助”等入口。因此当前版本不能宣称已经向用户完整披露案例边界。设置页适合放全局说明但不能只把提示藏在最深处。用户做高风险判断时相关边界还要出现在题库入口和题目解析附近。四、免责声明不是万能免责按钮一条免责声明最多说明产品用途不能把错误内容变成正确也不能把无法核验的“真实案例”变成真实。工程上应同时完成四件事内容本身有来源和更新时间场景文案明确一般规则与个案判断的区别高风险结论旁显示适用条件上架描述、应用内文案和真实能力一致。华为开发者官方上架说明要求应用符合审核标准和法律法规并如实配置应用信息与隐私声明。边界提示应服务于真实表达而不是规避内容责任。华为开发者提交 HarmonyOS 应用五、用内容类型决定提示强度不同内容不能统一套一行灰字。可以先定义类型export type LegalContentType statuteExcerpt | knowledgePoint | teachingScenario | publicCaseDigest | procedureGuideknowledgePoint主要解释一般概念teachingScenario必须标记为模拟publicCaseDigest需要可核验公开来源procedureGuide还要提醒地区、机构和时效差异。类型是数据层字段不应由页面根据标题关键词猜测。否则同一内容在搜索页和练习页可能显示不同边界。六、为每条内容补充来源元数据现有Question主要包含题干、选项、答案和解析无法表达法律来源的生命周期。可以扩展独立元数据export interface LegalContentMeta { contentType: LegalContentType sourceTitle: string sourceUrl?: string sourceAuthority?: string effectiveDate?: string verifiedAt: string jurisdiction: string isAdaptedScenario: boolean riskLevel: low | medium | high }这些字段解决的是可追溯性不是装饰。页面可以回答“依据来自哪里”“何时复核”“是否教学改编”“适用于哪个范围”内容团队也能按verifiedAt找出需要复审的条目。七、来源 URL 不是唯一可信证据只保存链接也不够。网页可能改版、失效或指向非权威转载。建议至少记录字段用途sourceAuthority识别发布机关或官方数据库sourceTitle链接失效时仍能定位材料sourceUrl供用户核验原文effectiveDate判断规则适用时间verifiedAt记录内容最后复核时间jurisdiction标明适用地区或层级对于法条摘要页面不能把开发者的解释伪装成原文。原文摘录、通俗解释和教学结论应使用不同字段和视觉标签。八、一般知识与个案意见要有数据级边界可以为内容增加用途声明export interface LegalUseBoundary { purpose: legalEducation replacesProfessionalAdvice: false requiresFactReview: boolean helpPath?: publicLegalService | licensedProfessional }这里的replacesProfessionalAdvice: false是固定契约不让运营配置成true。requiresFactReview用于区分低风险概念题与涉及赔偿、诉讼、仲裁、报警、期限的场景。页面拿到结构化边界后可以稳定显示对应提示不必把逻辑散落在若干Text()中。九、题库详情页应先说明学习用途在ProfileCard()中题库简介和“文化提示”之后可以增加一条紧邻说明Builder LegalLearningNotice() { Row({ space: 8 }) { Image($r(app.media.ic_info)) .width(18) .height(18) .objectFit(ImageFit.Contain) Text(内容用于普法学习与一般知识理解不替代针对具体事实的专业法律意见。) .fontSize(Sizes.CAPTION_FONT) .fontColor(Colors.TEXT_SECONDARY) .lineHeight(20) .layoutWeight(1) } .width(100%) .padding(12) .backgroundColor(Colors.BACKGROUND_ALT) .borderRadius(12) }提示应可读、可聚焦、有无障碍文本不能用极小字号或低对比度弱化。它位于用户开始练习之前能建立正确预期。十、练习解析旁需要就近条件说明很多风险发生在答案解析。比如“可起诉”“应赔偿”若省略条件用户容易直接套用。可以给解析模型增加interface LegalAnalysis { generalRule: string keyConditions: string[] evidenceHints: string[] procedureNotes: string[] sourceRefs: string[] }UI 先展示一般规则再分块列出“适用条件”“证据提示”“程序提醒”。如果字段为空页面不能自动补出不存在的建议更不能由标题生成确定结论。十一、把“真实案例”改造成可验证状态首页当前使用Text(真实案例 · 以案学法) Text(精选真实案例学习法律知识)而本地dialog题多为简短情景没有案号与公开来源。更符合源码的表达是“案例情景 · 以案学法”或“模拟案例学习”。若未来接入公开案例可定义interface PublicCaseSource { caseName: string caseNumber?: string publishingAuthority: string publicUrl: string publishedAt?: string adaptedFields: string[] }只有满足最低来源字段后才显示“公开案例摘编”标签。显示逻辑与数据校验绑定避免文案先上线、证据后补。十二、SettingsPage 负责全局声明与版本信息设置页可以新增“内容说明”分组this.ActionSettingItem( 内容用途, 普法学习, () router.pushUrl({ url: pages/LegalContentNoticePage }) ) this.ActionSettingItem( 内容复核, 查看日期与来源, () router.pushUrl({ url: pages/LegalSourcePage }) )说明页至少包含产品用途、内容类型、来源原则、更新时间、纠错渠道和专业帮助路径。不要把它与隐私政策混成一篇内容责任、个人信息处理和用户协议是不同问题。十三、一个可读的全局说明应该写什么全局说明可以采用分层语言const LEGAL_CONTENT_NOTICE: string 知律提供普法学习、题库练习和一般法律知识说明。 内容基于发布时可核验资料整理教学情景可能经过简化或改编。 具体事项会受事实、证据、地区、时间和程序影响 应用内容不替代针对个案的专业法律意见。还应紧接一段行动建议遇到人身安全、财产损失、诉讼时效、劳动仲裁、未成年人保护等问题时及时联系具备相应资质的专业人员或当地公共法律服务渠道。司法部智慧普法平台的咨询须知也明确把线上回复限定为参考并提醒用户不要填写隐私信息。这提供了一个重要产品启示即使回答由专家产生也需要说明信息不完整与效力边界。司法部智慧普法平台十四、边界提示要靠近高风险动作可以用风险等级决定提示位置function noticePlacement( level: low | medium | high ): global | inline | blocking { if (level high) return blocking if (level medium) return inline return global }低风险术语解释依赖全局说明即可中风险赔偿、举证、仲裁、投诉等解析旁显示条件高风险人身安全、刑事风险、紧迫期限等在操作前显示醒目提示和求助路径。blocking不等于每次都弹窗。它表示用户不能在完全看不到边界的情况下进入高风险行动建议。十五、不要让提示变成打扰如果每道题都弹同一个对话框用户会机械关闭边界信息反而失效。推荐三层呈现首次进入法律题库时展示简短用途提示解析页按风险显示就近说明设置页提供完整版本、来源与更新策略。同一提示在当前版本内可以记录“已读”但高风险内容的关键条件仍要常驻。已读状态只控制重复引导不应隐藏具体题目的适用限制。十六、题目解析要避免绝对化语气真实题库中存在类似analysis: 侵权人应承担恢复原状或赔偿损失等责任可与物业一并协调或起诉。作为单选题解析它表达了知识方向用于现实行动时则缺少责任主体、过错、因果关系、证据和程序条件。更稳的内容结构可以写成const analysis: LegalAnalysis { generalRule: 造成他人损害并符合责任构成条件时相关主体可能承担相应责任。, keyConditions: [损害事实, 行为与损害的因果关系, 适用的归责原则], evidenceHints: [现场记录, 沟通记录, 损失凭证], procedureNotes: [先固定证据再按具体情况选择协商或法定渠道], sourceRefs: [民事责任相关有效规范] }示例只是内容建模方法不代表对任何具体纠纷的处理意见。十七、法条版本与生效时间必须可更新法律内容会变化。把结论直接写死在 ArkTS 数组中发布后无法单独修订除非重新发版。离线应用仍可使用版本化内容包interface LegalContentPack { schemaVersion: number contentVersion: string reviewedAt: string entries: LegalQuestion[] }每次构建时生成清单和校验报告。应用在设置页展示内容版本与复核日期。若没有联网更新能力就明确“以当前版本所载资料为准并请核对最新官方信息”不能暗示实时更新。十八、离线与在线能力要分别说明设置页写着“数据保存在本机”这与收藏、笔记等 Preferences 数据相符但module.json5声明了ohos.permission.INTERNET项目另有在线 TTS 兜底。内容边界与隐私说明需要分别核对题库是否完全内置法律来源链接是否需要联网打开语音是否可能使用在线引擎是否收集用户输入是否上传笔记或答题记录。不能因为题库本地化就笼统宣称整个应用没有网络行为。华为分发说明强调应用信息和隐私声明应按真实情况填写并更新。华为开发者在应用市场分发十九、外部来源链接需要安全处理如果来源页通过外部浏览器打开先验证 URL 属于允许的官方域名function isTrustedLegalSource(url: string): boolean { const allowedHosts: string[] [ flk.npc.gov.cn, www.gov.cn, www.moj.gov.cn ] try { const parsed new URL(url) return parsed.protocol https: allowedHosts.includes(parsed.hostname) } catch (_) { return false } }真实项目应根据内容来源维护白名单不能照搬示例后遗漏必要机关。页面还要显示将打开的域名失败时保留来源标题避免只剩不可点击空白。二十、不要收集用户案情来制造“个性化建议”当前知律是本地题库没有个案问答输入这是较清晰的边界。若未来增加“描述你的纠纷”产品性质会发生明显变化用户可能输入身份证号、住址、合同、病历或未成年人信息系统需要明确处理目的、范围、保留期限和删除方式自动回复容易被理解为个案意见错误结论的风险远高于普通练习题。在没有完整隐私、资质、内容审核和风险控制方案前不应只加一个文本框和生成模型就上线“智能法律咨询”。二十一、未成年人场景需要更谨慎题库包含校园欺凌、隐私、体罚和校园贷等主题。此类内容不能只给出抽象责任结论还应优先呈现安全与求助边界紧急危险先联系可信成年人或紧急服务不公开填写姓名、学校、住址、联系方式不鼓励自行对抗或传播敏感材料对程序和责任仅提供一般知识说明具体处理由监护人、学校、专业机构或法定渠道结合事实判断。这些提示应使用儿童可理解语言并在手机、平板和 2in1 上保持可读。二十二、错误反馈不能只依赖应用商店评论法律内容需要专门纠错入口。反馈记录至少包括interface ContentCorrection { contentId: string contentVersion: string issueType: source | outdated | wording | other description: string }若应用保持完全离线可以在关于页提供不收集案情的反馈方式并提示只提交内容 ID 与问题类型。不要要求用户上传完整纠纷材料来证明一道题可能过期。二十三、上架材料也要保持同一边界审核前同时检查位置应保持一致的内容应用名称与副标题普法学习不写在线法律咨询应用描述不承诺个案胜诉、赔偿金额或实时权威结论截图不突出无法核验的“真实案例”隐私声明与本地数据、网络权限、语音能力一致应用内关于页能看到内容用途、版本、来源与求助路径题库入口关键提示不被隐藏技术实现正确但商店文案过度承诺仍会让用户形成错误预期。二十四、边界组件也要做多设备适配可以把提示封装为可复用组件但保持信息密度克制Component struct LegalBoundaryBanner { message: string build() { Row({ space: 10 }) { Image($r(app.media.ic_info)) .width(20) .height(20) Text(this.message) .fontSize(Sizes.CAPTION_FONT) .fontColor(Colors.TEXT_SECONDARY) .lineHeight(20) .maxLines(4) .textOverflow({ overflow: TextOverflow.Ellipsis }) .layoutWeight(1) } .width(100%) .padding(12) .backgroundColor(Colors.BACKGROUND_ALT) .borderRadius(8) } }长说明页放进Scroll底部操作保留系统安全区宽屏可以让来源列表和说明并排但不能缩小正文。正文对比度应达到可读要求提示不能用浅灰字伪装成存在。二十五、内容边界的自动检查构建前可以扫描内容包interface BoundaryIssue { contentId: string field: string reason: string } function validateLegalMeta( id: string, meta: LegalContentMeta ): BoundaryIssue[] { const issues: BoundaryIssue[] [] if (!meta.sourceTitle) { issues.push({ contentId: id, field: sourceTitle, reason: 缺少来源标题 }) } if (!meta.verifiedAt) { issues.push({ contentId: id, field: verifiedAt, reason: 缺少复核日期 }) } if (meta.contentType publicCaseDigest !meta.sourceUrl) { issues.push({ contentId: id, field: sourceUrl, reason: 公开案例缺少链接 }) } return issues }校验失败应阻止内容包进入发布构建。不要等用户发现过期内容后才依赖人工修正。二十六、测试用例要覆盖误解风险除了普通 UI 测试还应验证首次进入题库能看到用途提示提示在深浅色和小窗下可读“模拟案例”不会显示成“真实案例”公开案例缺少来源时构建失败中高风险解析显示适用条件来源链接只允许受信任 HTTPS 域名内容版本和复核日期在设置页可见离线时来源标题仍可阅读未成年人主题显示隐私与求助提醒上架描述与应用内能力一致。这组用例验证的是用户理解和内容治理不只是组件是否渲染。二十七、当前版本与目标版本对照能力当前源码建议目标产品定位普法学堂保持题库简介有案例和维权表述增加用途边界“真实案例”无来源元数据支撑改为情景或补足来源法条来源未展示标题、机关、链接、日期内容复核时间未展示设置页可见个案法律意见提示未找到入口与高风险解析就近显示专业帮助路径未找到提供公共服务或专业人员方向内容纠错未找到使用内容 ID 的最小反馈上架一致性需人工核对纳入发布检查这张表可以直接作为迭代验收基线避免把未实现项写成现有能力。二十八、发布前闭环检查逐项确认应用仍定位为普法学习不把模拟情景写成真实案例每条高风险内容有来源和复核日期原文、解释和教学结论视觉上可区分一般规则不包装成个案结论入口级、就近和全局提示各司其职提示字号、对比度和无障碍文本可用未成年人内容不诱导提交隐私外部来源链接经过域名校验内容版本可以追踪和迁移网络权限、语音能力、隐私说明相互一致应用描述、截图和真实功能不夸大没有虚构权威背书、案例来源或审核结果。二十九、结语知律当前的真实基础是清楚的它是一款 HarmonyOS 本地普法题库应用题库详情页提供简介、学习重点、章节与练习入口设置页提供学习偏好和本地数据管理。源码没有在线法律咨询也没有个案资料收集这为保持教育产品边界提供了良好起点。需要补齐的是“内容如何证明自己没有越界”当前“真实案例”“维权思路”等文案缺少来源与条件设置页没有用途声明、内容版本和专业帮助路径。把来源元数据、案例类型、风险分级、就近提示、更新机制和上架信息统一成一份契约普法内容才能既有帮助又不把一般知识伪装成针对具体案件的法律意见。---本文部分内容由 AI 辅助整理。所有现状判断均基于D:\huawei\one19-11中com.jiaweikang.one19的本地源码复核文中的内容模型和 ArkTS 示例用于说明工程方案不构成针对任何具体事项的法律意见也不代表当前版本已经实现来源追踪、风险分级、边界提示或专业帮助入口。