elder-yudao-pro/docs/信息采集需求对照审计.md

69 lines
16 KiB
Markdown
Raw Normal View History

# 信息采集需求对照审计
审计日期:2026-10-08。范围:当前后台老人七步、志愿者/家属自身档案登记与家庭关联。依据为导师三份说明,同时保留用户后续明确要求。
## 结论
七步核心资料表单及保存机制已经完成,但**当前实现尚不等于导师文档中的完整信息采集业务闭环**。本轮美化志愿者、家属登记和家庭关联,并修正下列实际问题;没有把未实现的OCR、签名、低龄例外、代录入口和初筛误写为已完成。
本轮修正:未确认同意前的敏感输入/草稿上传与回读、列表及只读号码显示、草稿网络恢复重试与关闭保护、民族拼音排序、配偶确认时点旧文案。
## 逐项对照
| 文档要求 | 当前状态 | 实際行为与差异 | 代码证据 |
| --- | --- | --- | --- |
| 《老人基本信息采集》§三、§四七步字段 | 已实现 | 管理员老人七步的核心字段、必填、选填、联动、最终统一提交均落地。残疾、慢病、父母隐藏字段会清除。 | [七步定义](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/collectionFlow.ts:13);[服务端校验](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthElderlyCollectionSupport.java:89) |
| 《老人基本信息采集》§5.5草稿与进度 | 已实现主体,部分差异 | 按管理员/租户/老人保存加密草稿,1~7步恢复;每步保存的是草稿,正式档案最后提交。当前没有个人中心进度入口。 | [草稿与恢复](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/useCollectionDraft.ts:23) |
| 《老人基本信息采集》§1.3、§六同意前只采基础资料 | 本轮修复表单/草稿;正式旧接口仍有残余 | 未确认时禁填身份证、生日、民族、微信;前后端草稿仅保留姓名、性别、联系方式、账号基础资料。旧未确认草稿回读也过滤。旧正式步骤1/2接口为兼容仍可写含身份证资料,尚非所有接口的签署门控。 | [输入限制](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:156);[草稿过滤](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/draft/HealthCollectionDraftServiceImpl.java:96);[旧正式接口](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthIdentityServiceImpl.java:56) |
| 《老人基本信息采集》§1.3、§5.3知情同意签署 | 部分实现 | 目前是采集人员勾选确认、服务端记确认人/时间;没有同意书版本、签名凭证、授权代理证明、撤回流程,不能等同于文档“consent_status=已签署”。 | [确认记录](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthElderlyCollectionSupport.java:90) |
| 《老人基本信息采集》步骤1身份证OCR | 未实现 | 身份证字符串校验可解析生日和性别;没有扫描上传/相机/OCR,姓名、籍贯不会由号码自动识别。 | [号码解析](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/utils/idCard.ts:12) |
| 《老人基本信息采集》步骤1低龄例外 | 未实现 | 当前低于60岁一律拦截;没有管理员强制录入、原因日志及特殊老人入口。specialCase保留字段不代表功能完成。 | [年龄拦截](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthIdentityServiceImpl.java:299) |
| 《老人基本信息采集》步骤1唯一性、§六重复建档提示 | 校验已实现,体验部分 | 服务器校验重复身份证且有唯一索引。直到最终提交才检查,未提供“已建档,查看已有档案”入口。并发碰唯一键的错误理由可能仍泛化为账号已建身份。 | [唯一性](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthIdentityServiceImpl.java:284);[并发错误](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthIdentityServiceImpl.java:82) |
| 《老人基本信息采集》步骤2海拔 | 查询已实现,数据未齐 | 有区划海拔接口/只读显示;没有完整已核实数据集,缺失提示不虚构0米。完整海拔效果仍需导师提供数据/来源。 | [海拔显示](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/SocialSupport.vue:3) |
| 《老人基本信息采集》步骤2配偶识别 | 已实现核实关联,提交时点有调整 | 同址已婚线索由人核实,最终第七步提交后另请求关联。本轮改正“保存第二步”旧提示。配偶确认与资料保存非同一事务,确认失败会提示再次核实。 | [候选与提示](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/SocialSupport.vue:31);[实际确认时点](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:1174) |
| 《老人基本信息采集》步骤7联系人 | 基础采集已实现,权限部分暂缓 | 至少1、最多10人;恰好1位第一联系人、姓名/关系/手机号必填、号码去重。统一仅紧急联系,不检测已注册家属、开通管理权限或创建影子成员。 | [联系人界面](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/CollectionFamilySteps.vue:83);[仅联系人用途](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthElderlyCollectionSupport.java:152) |
| 《老人基本信息采集》§5.1独居派生 | 未独立实现 | 保存livingStatus=1可表示独居,但未提供文档is_living_alone独立派生字段或统一派生响应。 | [居住状况](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/dal/dataobject/profile/HealthElderlyProfileDO.java:46) |
| 《老人基本信息采集》§5.2采集人 | 管理员已实现 | 记录采集管理员、类型4、最近采集时间、首次完成时间;并未实现老人本人/家属/志愿者的采集入口及来源记录。 | [服务端写采集人](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthElderlyCollectionSupport.java:81) |
| 《老人基本信息采集》§5.1采集过程日志 | 部分 | 有采集元信息和访问日志保护,缺独立事件记录(采集方式、恢复、跳过、提交过程)。不把普通访问日志当作完整采集日志。 | [审计元信息](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/dal/dataobject/profile/HealthElderlyProfileDO.java:98) |
| 《老人基本信息采集》§5.3~§5.4初筛衔接及完成页 | 未实现完整闭环 | 提交后成功提示、关闭并刷新列表。没有签署引导、完整七模块总结页、初筛任务/五题页面和自动跳转。初筛是独立模块,不是七步资料采集本身。 | [提交后行为](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:1179) |
| 《老人基本信息采集》§1.1~§1.2多角色代录 | 未实现角色端 | 当前是后台管理员创建三种身份的档案;志愿者/家属自身登记≠该角色替老人采集。家属添加老人、志愿者协助采集、老人本人完善资料入口和字段级权限尚无。 | [目标身份枚举](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/api/health/index.ts:4);[当前权限](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/controller/admin/identity/HealthIdentityController.java:29) |
| 《老人基本信息采集》§2.1~§2.3展示模式 | 按用户要求调整 | 文档管理员默认flat、查看view平铺、可切模式;现管理员老人新建/编辑强制step,查看也逐步。因用户明确要求,保持现设计,不当作bug回改。老人single一屏一题仍未实现。 | [当前逐步逻辑](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:987) |
| 《老人基本信息采集》步骤4自动跳页 | 有意调整 | 文档选自理/非残疾后直接进入下一步;现只联动清理,用户点击下一步。符合此前平滑、强制逐步确认的要求,保留手动继续。 | [照护联动](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/CollectionHealthSteps.vue:68) |
| 《老人基本信息采集》§六网络中断 | 本轮修复重试,部分 | 草稿读取失败恢复网络后可原地重试,保留当前输入;点击关闭保存失败会保持表单打开。浏览器强退、刷新或断网后关闭应用仍没有离线持久缓存。 | [原地重试](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/useCollectionDraft.ts:42);[关闭保护](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:1079) |
| 总体方案§2.2隐私;UI§13.2脱敏 | 本轮修复显示;存储/接口仍部分 | 列表及只读身份证/手机号/医保号已掩码,编辑可核对原值。身份证、医保、新联系人和草稿加密;contactPhone/旧emergencyPhone/member.mobile仍明文。列表接口仍返回全量敏感资料,显示遮挡不等于接口最小化。 | [显示遮罩](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/utils/healthPrivacy.ts:8);[全量列表](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/service/identity/HealthIdentityServiceImpl.java:222) |
| 总体方案§2.1、§2.2敏感查询载体 | 仍有差异 | 配偶候选查询用GET参数携带详细家庭地址,与总体方案禁止敏感资料进URL不一致。正式修正需协调查询接口,不把日志隐藏当成URL载体已修复。 | [候选请求](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/api/health/collection.ts:32) |
| 总体方案§22排序、字典维护 | 本轮修复民族排序;其余部分 | 民族、职业、区划在前端按拼音呈现。没有完整后端统一字典与sort_order;志愿者技能是文本而非标签字典;残疾选项目前按固定类别顺序。 | [民族字典](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/api/health/index.ts:72);[志愿者技能](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:508) |
| UI§6.8志愿者资质 | 未实现 | 本次登记已美化基本资料、技能、区域、时间、经验和审核状态;身份证/健康证/无犯罪记录证明上传与资质到期处理仍未实现。 | [志愿者服务卡片](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/identity/IdentityForm.vue:501) |
| UI§5.1、§5.5家属端和家庭组 | 现有后台关联,部分 | 本次美化家属档案及后台关联页,有申请/核实/拒绝/解除/重新申请。没有家属移动首页、家庭组主管理员/普通成员/只读角色、代管工作台。 | [关联流程](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-ui-admin-vue3/src/views/health/family-relation/index.vue:246) |
| 《老人基本信息采集》§5.1具体数据库表 | 存储结构有调整 | 慢病及多联系人采用老人档案中的AES加密结构化JSON,并非独立elder_chronic_disease/family_member表;接口字段完整,但查询统计、跨系统迁移与表名不能宣称按文档逐字一致。 | [加密JSON存储](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/yudao-module-health/yudao-module-health-biz/src/main/java/cn/iocoder/yudao/module/health/dal/dataobject/profile/HealthElderlyProfileDO.java:94) |
## 需要继续开发的优先顺序
1. **统一知情同意与隐私边界**:真正同意书/签署状态、正式旧接口门控、列表最小响应与受限完整值接口,联系方式加密迁移兼顾账号查找/唯一键,调整敏感地址查询载体。
2. **补齐采集业务细节**:管理员低龄例外+理由/日志、独居派生、采集事件、重复身份证定位已有档案、统一字典。
3. **老人采集完成后的闭环**:OCR和电子签署、完成摘要、独立健康初筛。
4. **按角色扩展**:老人本人一屏一题、家属/志愿者代录字段及对象权限、家属关联/影子成员、志愿者资质。
这份审计提出后续范围,未默认为本轮已授权把全部未实现模块补齐。强制七步、联系人暂不建家属账号是此前用户选择;后续开发时可重新明确这些范围。
## 文档内部需统一的描述
- §1.3要求签署前只采基础资料,§三和§5.3又描述完整采集后检查签署。应明确“基础预采→同意后完整采集→评估”顺序。
- §三给所有步骤“跳过”按钮,但1/2/4/7有必填。当前仅3/5/6可整步跳过;已有选填输入仍保留并检查格式,跳过不等于无提示删除。
- 步骤7写至少一位第一联系人;当前恰好一位,方便明确联系顺序,是更严格的业务选择。
- 总体方案§22.4同时出现“前端不排序”和“前端localeCompare排序”。当前前端呈现顺序已修,字典维护层仍待统一。
- 收入/婚姻/医保枚举在总体方案与采集说明间不完全一致。当前前后端采用统一协议(如0无收入),导入外部数据需显式映射,不能直接复用另一文档数字。
- 当前管理员ElementPlus页面与40px按钮并非老人移动端Vant/18px字/56px按钮;不能把后台美化等同于老人端适老页面验收。
## 验证与边界
本轮48项前端、53项健康后端测试全部通过;前后端构建成功,健康接口UP。采集与家庭关联页面定向类型无报错,整仓其他模块仍有原有类型错误。静态检查通过。
浏览器视觉验收因既有浏览权限拒绝未执行;未通过其他浏览器、截图或隐藏页面绕过。本轮无数据库结构变更。
## 原始需求
- [老人基本信息采集](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/docs/spec/老人基本信息采集.md)
- [全平台功能与数据设计](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/docs/spec/elder for AI coding.md)
- [UI设计规范](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/docs/spec/elder-UI.md)
- [当前开发进度](/Users/anxiruidadiannao/IdeaProjects/elder-yudao-pro/docs/老人信息采集开发进度.md)