资讯详情

【安心陪诊 Agent】隐私保护方案:陪诊记录为什么要本地优先、最小化保存

📅 2026/10/27 18:35:19 | 华诺云谱 👁 阅读
【安心陪诊 Agent】隐私保护方案:陪诊记录为什么要本地优先、最小化保存
应用名称安心陪诊 Agent统一合集安心陪诊 AgentHarmonyOS 高校创新赛关键词标签harmonyos / AI Agent / 医疗陪诊隐私保护方案陪诊记录为什么要本地优先、最小化保存摘要说明健康信息项目的数据边界、权限最小化和离线优先原则。 本系列基于“安心陪诊 Agent”完整项目从产品立项、UI、Agent、Web Demo、HarmonyOS 迁移和竞赛材料角度连续复盘。本文关键词隐私、本地优先、医疗数据、合规。正在上传…重新上传取消目录项目背景与本文重点场景拆解为什么这个问题值得做设计稿与页面结构Agent 或接口实现路径代码片段与工程细节安全边界、测试和可迁移性小结与下一步项目背景与本文重点安心陪诊 Agent 的定位很明确它不是诊断系统也不是线上问诊平台而是一个围绕真实就医流程做信息整理、任务拆解和家属协同的智能体原型。项目当前实现了可运行 Web Demo前端使用原生 HTML、CSS、JavaScript后端使用 Node.js 原生 HTTP 服务核心 Agent 采用本地规则与结构化输出提供 /api/plan 和 /api/chat 两个接口。视觉资产包括 image2 生成的项目总览、五页 UI 原型、Agent 流程图、桌面端和移动端演示截图以及一套 image2 风格演示 PPT。从 隐私保护 的角度看隐私保护方案陪诊记录为什么要本地优先、最小化保存 不是一个单点功能而是一条围绕真实就医行为展开的任务链。很多项目在介绍 AI 时会把重点放在“能回答问题”但安心陪诊 Agent 更关注“回答之后用户能不能行动”。这也是它适合写成技术文章的原因背后既有产品判断也有界面、接口、规则、测试和提交材料的工程约束。正在上传…重新上传取消正在上传…重新上传取消场景拆解为什么这个问题值得做这一篇最重要的观察是医疗陪诊场景不能把复杂性全部推给用户。老人和家属在医院里的压力来自时间、窗口、材料、检查单、医生沟通和复查安排。产品如果只给一个聊天框用户仍然不知道下一步做什么所以本文会把 场景拆解 拆成输入、处理、输出、验证四个层次。为了让文章在 CSDN 上更有参考价值我不会只写“项目很好看”。更有价值的部分是说明为什么这么设计、怎么实现、哪里容易踩坑、如何验证。比如同样是生成清单直接给一段长文字和拆成卡片是完全不同的体验同样是 AI 回复冷冰冰的百科回答和陪诊式确认也会带来完全不同的信任感。在真实就医前家属常常需要同时处理挂号、路线、证件、医保、药盒、检查单和老人情绪。到了诊室里医生真正需要的是清楚的事实哪里不舒服、持续多久、什么情况下加重、既往病史是什么、现在吃什么药。就医结束后又要把医嘱、复查时间、观察指标同步给家里其他人。安心陪诊 Agent 的价值就在于把这些散落的信息整理成可执行任务而不是让用户面对一大段泛泛的医疗说明。设计稿与页面结构在安心陪诊 Agent 中安全边界一直放在功能之前。它可以帮用户整理症状、提示材料、生成医生问题、提醒复查但不能替医生诊断也不能给药物剂量。这个边界看似保守却是项目能被认真评审的关键因为健康信息场景最怕“看起来很智能实际上越界”。项目采用五页统一结构首页、准备台、流程、家属同步、我的。首页负责建立信任和展示完整能力准备台负责采集患者信息并生成计划流程页把就医前 24 小时、就医前 12 小时、到院就诊、就医后当天拆成步骤家属同步页把复杂信息压缩成可转发摘要我的页面集中展示安全边界和 C4 赛题匹配。这个结构的好处是评委或读者不需要猜项目能做什么打开后能顺着任务路径看完闭环。Agent 或接口实现路径如果把这个项目迁移到 HarmonyOS本文提到的模块仍然成立页面层负责展示和交互服务层负责计划生成和对话组织数据层负责保存必要记录系统能力层再接入日历、提醒、语音和小艺智能体。也就是说当前 Web Demo 不是临时玩具而是为后续 HAP 真机演示预留了清晰骨架。本项目没有把 Agent 写成不可解释的黑盒。它先通过症状关键词、就诊时间、既往病史、当前用药和家属担心生成结构化 profile再根据 profile 生成科室方向、医生问题、提醒事项、家属摘要和对话回复。这样做的优点是演示稳定、结果可解释、迁移成本低缺点是规则覆盖需要持续扩充。对于比赛原型来说这个取舍是合理的因为评审最先关心的是项目是否能完整演示、是否有清楚边界、是否能落地到鸿蒙能力。代码片段与工程细节下面这个片段展示了本文相关的一个关键工程点。代码不是为了炫技而是让读者能看到项目不是只有效果图背后有真实的输入、处理和输出链路。// 规则式 Agent 的价值是可解释为什么推荐这个方向、何时提示急症边界。 const EMERGENCY_SIGNALS [胸痛, 呼吸困难, 意识不清, 偏瘫]; function hasEmergencySignal(text) { return EMERGENCY_SIGNALS.some((word) text.includes(word)); }正在上传…重新上传取消工程实现时我更建议先把接口返回结构固定下来再去调 UI。比如计划接口可以稳定返回 department、timeline、questions、reminders、familyBrief、cards对话接口可以稳定返回 headline、actions、doctorInfo、hospitalInfo、followUps 和 safety。前端只要按照结构渲染就能避免页面逻辑越来越散。安全边界、测试和可迁移性安全边界需要同时出现在三个地方第一产品文案中要明确“只做就医流程整理不做诊断”第二Agent 输出中遇到胸痛、呼吸困难、意识不清等急症信号时必须提示线下急救或急诊第三代码和测试中要覆盖这些路径防止后续功能扩展时把边界稀释。迁移到 HarmonyOS 后这些边界还应该体现在权限申请、隐私说明、数据存储和上架材料中。工程深度补充从页面表现走到可复查实现这一部分把安心陪诊 Agent的文章主题【安心陪诊 Agent】隐私保护方案陪诊记录为什么要本地优先、最小化保存继续落到工程证据上。读者不只看到结论还能看到输入、处理、输出、异常兜底和验收方式。复查维度本文补充后的判断标准落地证据场景开头能说明谁在什么情况下使用这个能力用项目名称、目标用户和失败场景建立上下文实现能看见关键数据结构、服务边界或算法判断给出可迁移的代码片段和字段解释验证能按清单复测主流程和异常路径保留验收步骤、边界条件和排错入口type AgentIntent plan | chat | summary; interface AgentRequest { intent: AgentIntent; userText: string; safeMode: boolean; } function routeAgent(req: AgentRequest) { if (!req.userText.trim()) return { type: empty, message: 请先补充就医需求 }; if (req.safeMode /诊断|剂量|处方/.test(req.userText)) { return { type: guard, message: 仅提供就医准备建议不替代医生判断 }; } return { type: req.intent, message: 进入陪诊任务编排 }; }这段代码的重点不是堆功能而是把文章里的核心判断拆成稳定输入、明确输出和可解释的失败分支。读者复用时可以先保留接口形状再替换成自己的业务字段。测试路径输入样例预期结果正常路径字段完整、状态正常页面展示可执行建议并保留下一步操作空数据缺少关键输入显示明确提示不进入错误结果页边界值数值接近阈值或文本触发限制给出保守结果并说明原因实际提交前还需要做一次人工复查标题是否和正文一致封面是否能在列表页看清代码是否和项目主题相关图片是否能解释流程结尾是否有可执行的验证清单。源码复核与实测记录2026-07-28复核范围安心陪诊 Agent v1.0.0运行要求来自project/package.json的node 20。服务端实际使用 Node.js 内置node:http不是 Express前端使用原生 HTML、CSS 与 JavaScript ES Modules。本文不再使用源码无法证明的精确浏览器、TypeScript、Express 或 DevEco 版本。主题对应证据前端是原生 HTML/CSS/JavaScript接口失败会进入可读错误提示项目默认本地运行没有账号、支付、广告或第三方分析 SDK。真实文件project/public/app.js project/public/styles.cssasync function postJson(url, body) { const response await fetch(url, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(body) }); if (!response.ok) throw new Error(request_failed); return response.json(); }检查项2026-07-28 实测结果证据运行时约束Node.js 20 及以上package.json#engines.node为20服务框架Node.js 内置 HTTPserver/index.js调用http.createServer接口闭环/api/context、/api/plan、/api/chat路由分支与测试请求均可复查自动化回归npm test输出Smoke test passed.覆盖计划生成、慢病提醒、家属摘要、普通对话与急症分流能力边界不诊断、不提供剂量、不替代医生buildCarePlan()的 disclaimer 与急症分支复现步骤进入project目录执行npm test。测试会随机监听本机端口依次请求三个接口并断言心内科方向、慢病模式、华为手表提醒、家属摘要、安全提示和急症意图全部断言通过后只输出Smoke test passed.。这是一条已经执行的本地证据不代表医院服务或医疗结果。当前版本兼容性与主题验证2026-07-28时效性基线截至 2026 年 7 月 28 日当前可运行交付物仍是安心陪诊 Agent v1.0.0 Web Demopackage.json要求Node.js 20服务端使用标准库node:http前端使用原生 HTML、CSS 与 JavaScript ES Modules。现代 Chromium 浏览器可用于本地复现但仓库没有固定某一个浏览器小版本所以本文不把单一 Chrome 版本写成兼容结论。主题输入本地演示资料、计划请求和聊天请求。可复查调用链浏览器表单 - 本机 Node 服务 - 规则函数 - 当前响应。预期结果默认本机运行不依赖账号、支付、广告或第三方分析 SDK。失败与边界不把演示数据写成已上传或已同步迁移到设备存储前重新做权限与隐私核对。1. 本地复现顺序复现时先进入project目录执行npm test。脚本创建本机随机端口依次请求上下文、计划与聊天接口并检查科室方向、慢病模式、提醒、家属摘要、安全提示和急症意图。只有控制台输出Smoke test passed.才能记录为自动化回归通过某个断言失败时应保留首个失败项不能只截取最后一行日志。cd project npm test # 通过标准Smoke test passed. # 需要人工查看页面时再启动本地服务 npm start # 浏览器打开终端输出的本机地址不使用真实患者资料页面验证使用演示资料重点检查表单能否提交、计划是否渲染、对话能否返回、错误是否可读和手机宽度下是否仍可操作。当前测试不等于临床验证也不证明真实医院流程、诊断准确率或商业需求已经成立。2. 兼容性矩阵层级当前可复核版本检查方法结论边界运行时Node.js 20 及以上读取package.json#engines并执行npm test不绑定未在仓库声明的精确小版本服务端Node.js 标准库 HTTP读取server/index.js的http.createServer没有 Express、数据库或云服务依赖浏览器现代 Chromium人工检查桌面与手机宽度下的主流程需要对目标浏览器单独做回归记录自动化仓库 Smoke test计划、提醒、家属摘要、对话与急症断言只证明当前规则输出不代表医疗效果HarmonyOS5.0 及以上迁移目标按 ArkTS model、Service、Repository 和 ArkUI 页面设计迁移当前仓库没有 HAP 和原生实现不宣称已完成3. 从 Web 数据契约迁移到 HarmonyOS 5.0迁移时先冻结profile、department、timeline、questions、reminders与familyBrief的字段再定义严格 ArkTS 接口。页面只持有输入草稿、加载、错误和内容状态规则判断放在 ServicePreferences 或 RDB 由 Repository 管理。这样能避免把 JavaScript 动态对象直接搬进 ArkUI 页面后产生大量可空字段和隐式类型错误。interface CarePlan { profile: PatientProfile department: DepartmentSuggestion timeline: CareStep[] questions: DoctorQuestion[] reminders: CareReminder[] familyBrief: string } type PageState loading | empty | error | content轻量开关、引导状态和用户偏好可以评估 Preferences结构化计划、查询、统计和需要迁移的历史记录更适合 RDB。医疗相关字段遵循最小化原则默认本地处理如果未来增加账号、云同步、语音、小艺或跨设备流转必须重新设计授权、删除、隐私说明、服务端边界和审核材料不能从当前 Web Demo 自动推导。4. 主题专项检查表检查点操作通过标准输入边界分别使用完整、缺失、空白和急症输入输出结构稳定空值有默认处理急症优先分流接口错误请求未知路径、错误方法或无效 JSON返回明确错误不崩溃不伪造业务成功重复操作快速连续提交计划或聊天页面有加载反馈不出现多份相互覆盖的结果响应式桌面和手机宽度查看首页、表单、计划与对话文字不截断按钮可达错误状态可阅读安全边界输入诊断、剂量和急症问题不替代医生急症明确建议线下急救数据真实性核对文章、截图、测试与源码不虚构用户、市场、平台数据和未实现能力性能记录至少观察接口响应时间、连续提交后的事件处理、长文本渲染和手机宽度布局。当前规则函数是本地同步计算若以后接入模型或远端服务还要增加超时、取消、重试、限流、离线提示与服务降级这些都属于新增能力不能在当前结论中提前写成完成。5. 故障注入与证据回读只验证成功输入无法证明流程稳定。第一组故障注入针对 HTTP 边界向/api/plan发送空对象、缺少字段、额外字段和无效 JSON向/api/chat发送空消息与超长消息再访问未知路径。服务应返回可解释状态不因一次请求导致进程退出未知路径必须保持 404 语义不能被静态首页兜底成看似成功的页面。第二组故障注入针对规则边界把普通慢病描述与“胸痛、呼吸困难、意识不清”等急症信号分别输入确认急症判断先于普通科室建议。再使用相近但不属于急症的描述观察是否出现过度匹配。测试记录要保留输入类别、命中的规则、响应中的 intent 或 urgency 和安全提示不保存真实患者姓名、联系方式与病历。第三组故障注入针对前端状态在请求进行中重复点击、关闭本地服务后提交、返回非 JSON 响应、缩小到手机宽度、放大系统字体并刷新页面。通过标准是加载状态不会永久卡住错误消息可见旧结果不会冒充本次成功按钮和输入仍可到达。若未来迁移 ArkUI应显式维护loading、empty、error与content不要只用一个布尔值覆盖所有页面状态。故障层注入方式需要保存的证据禁止的结论HTTP错误方法、未知路径、无效 JSON状态码、首条错误、进程是否存活不能因首页可打开就称接口全部可用规则普通、慢病、急症和模糊描述命中规则、intent、urgency、安全提示不能把规则建议称为医学诊断页面重复提交、服务断开、窄屏和长文本加载、错误、恢复和布局截图不能只截成功态忽略失败态数据缺字段、空字段和额外字段normalizeProfile 前后结构不能用演示默认值冒充真实资料迁移ArkTS 类型、Preferences/RDB 方案检查接口定义、Repository 边界和构建结果没有原生源码时不能称 HAP 已完成证据回读发生在修改之后。服务端文章重新读取server/index.js与server/agent.js确认方法名、接口路径和字段仍存在前端文章重新读取public/app.js与public/styles.css测试文章重新执行npm test。如果源码已经变化文章应更新为新的快照而不是为了保留旧结论去修改代码或虚构兼容层。HarmonyOS 迁移阶段还要增加构建与设备证据DevEco 工程的build-profile.json5、module.json5、目标 SDK、设备类型和权限用途必须一致执行仓库实际提供的 Hvigor 任务记录第一条编译错误有签名候选包后再做安装、启动、核心流程、返回和卸载。没有执行这些步骤时只能写“设计方案”或“待验证”不能写“已适配”或“已上架”。对医疗陪诊主题而言功能正确之外还有可逆性要求。用户应能修改或清除本地资料提醒可以关闭家属摘要应由用户主动生成或分享急症提示必须引导线下求助。未来增加云端能力时要补充传输、存储位置、删除、账号退出和隐私授权当前本地 Demo 没有这些能力所以文章不会提前承诺云同步、跨设备数据或医疗机构接入。维护阶段建议为每个接口保存一份最小请求与响应样例但样例只使用虚构人物和非敏感症状。字段新增时先更新纯函数、Smoke test 和前端渲染再同步文章中的数据结构字段删除时检查旧页面是否仍访问它。通过这种契约式回归可以把“页面看起来没变”转换为可执行断言也能在迁移 ArkTS 严格类型时尽早发现可空字段、枚举值和默认值不一致。每次修改完成后还要重新从 CSDN 编辑端回读正文唯一标记、三张托管图片、摘要、标签和封面避免接口保存成功但编辑器展示仍是旧版本。平台内容状态可能异步更新因此修改记录与后台结果要分开保存正文已升级只能写“已回读”不能把尚未返回的结果写成已经达成。小结与下一步本文围绕“隐私保护方案陪诊记录为什么要本地优先、最小化保存”复盘了安心陪诊 Agent 的一个关键侧面。这个项目当前已经具备创意描述、设计稿、作品介绍文档、可运行 Demo 和演示 PPT。后续如果继续冲击更高质量的竞赛提交建议补充三类材料真机 HAP 运行证明、用户访谈或可用性测试报告、5 分钟以内演示视频。对 CSDN 读者来说最值得借鉴的不是某一个页面而是从痛点、设计、代码、边界、测试到提交材料的完整闭环。实现补充PrivacyRepository v1.0 的最小化保存与验证本版本把陪诊记录限制为本机可解释的任务字段就诊日期、任务状态和用户手工填写的备注。身份证号、病历照片、完整诊断结论不进入默认记录需要导入资料时必须由用户在页面上主动选择并在任务完成后提供删除入口。interface VisitTaskRecord { id: string visitDate: string status: todo | done note: string } const blockedKeys new Set([idCard, medicalImage, diagnosis, drugDose]) export function sanitizeForLocalStore(input: Recordstring, unknown): VisitTaskRecord { for (const key of Object.keys(input)) { if (blockedKeys.has(key)) throw new Error(不允许默认保存敏感字段${key}) } return { id: String(input.id ?? crypto.randomUUID()), visitDate: String(input.visitDate ?? ), status: input.status done ? done : todo, note: String(input.note ?? ).slice(0, 300) } }正在上传…重新上传取消验证记录在本地样例中传入{ visitDate: 2026-07-14, note: 带检查单 }后只生成任务记录传入{ idCard: *** }时函数抛出错误页面提示用户不要在默认陪诊清单中填写该字段。删除任务后按记录 id 调用本地仓储删除并重新查询列表确认数量减一。console.assert(sanitizeForLocalStore({ note: 带检查单 }).status todo) console.assert(() sanitizeForLocalStore({ idCard: *** })) // UI 验收保存、重新进入页面、删除后重进三次检查任务数量一致正在上传…重新上传取消这套 v1.0 规则只覆盖本地任务整理联网同步、云备份和跨设备共享需要单独说明数据用途、授权范围与删除策略不能默认开启。privacy-contract v1.1保存、重启与删除的仓储回归隐私方案必须验证“能删干净”而不只是声明本地优先。v1.1 仓储仅接受任务日期、状态和不超过 300 字的备注拒绝身份证号、诊断、病历图片和药物剂量字段。interface LocalTask { id: string; date: string; status: todo | done; note: string } class MemoryPrivacyRepository { private rows new Mapstring, LocalTask() save(task: LocalTask): void { if (!task.id || !task.date) throw new Error(缺少任务标识或日期) this.rows.set(task.id, { ...task, note: task.note.slice(0, 300) }) } find(id: string): LocalTask | undefined { return this.rows.get(id) } remove(id: string): boolean { return this.rows.delete(id) } count(): number { return this.rows.size } }内存仓储用于验证业务契约接入 Preferences 或 RDB 时保持同一接口页面不能绕过 Repository 直接写入敏感字段。const repo new MemoryPrivacyRepository() repo.save({ id: T-01, date: 2026-07-20, status: todo, note: 携带检查单 }) console.assert(repo.find(T-01)?.status todo) console.assert(repo.count() 1) console.assert(repo.remove(T-01) true) console.assert(repo.find(T-01) undefined) console.assert(repo.count() 0)设备回归保存后退出并重新进入确认任务可恢复删除任务后再次冷启动确认记录和统计都不存在清除全部数据后检查空状态。系统只整理信息和流程不判断病情、不提供药物剂量、不替代医生也不向未说明的第三方上传个人健康信息。系列延伸阅读本地优先、最小化收集,这两个原则影响了安心陪诊的每个功能:陪诊任务只在设备上,清单生成不经过服务器,语音交互不上传原始录音。安全边界一篇从功能侧划定了不做什么,迁移方案一篇说明了换平台时数据如何原样保留,准备台与家属同步的设计则展示了本地数据也能有好的协作体验。相关文章:【安心陪诊】医疗安全边界:不诊断、不剂量、不替代【安心陪诊】准备台页面实现:把患者信息变成可执行陪诊计划【安心陪诊】家属同步页设计:异地子女如何看懂陪诊进展【安心陪诊】HarmonyOS迁移方案:ArkTS/ArkUI的迁移取舍
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑