Files
jiapuapp/docs/third-pass-operation-flow-audit-2026-08-23.md
T

139 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 当前项目与参考项目第三轮操作流程复审
审查日期:2026-08-23
参考项目:`C:\Users\Rain\Desktop\job\Jiapu-App`(浏览器,已登录)
当前项目:`C:\Users\Rain\Desktop\job\jiapuapp`MuMu,已登录)
后端项目:`C:\Users\Rain\Desktop\job\Genealogy`
## 结论
本轮不再按页面数量判断缺失,而是按“从哪里进入、填写什么、提交前校验、成功或失败后去哪里、返回是否丢状态、是否需要密码”复审操作链路。
- 第二轮确认的 14 项参考对比差异仍成立。
- 当前项目原有 1 项成长记录误报未保存修改的问题仍成立。
- 本轮新增确认 3 项当前流程问题:公开家谱的“申请加入”完全点不进去、谱主无法绑定自己的世系人物、消息中心从家谱首页进入后可见返回出口却固定去“我的”。
- 当前未决问题合计为 14 项参考对比差异和 4 项当前流程缺陷,共 18 项。
- 密码能力并未缺失,但参考项目与当前项目采用了不同契约:参考项目在创建谱文、重要证件、成长日志时强制设置查看密码和两组密保;当前项目创建时不要求密码,创建后可按单条内容选择设置 8 至 128 位密码,并通过实名手机号短信找回。是否必须恢复参考项目的“创建即强制加密”,需要产品与后端共同确认,不能仅由前端自行改成一样。
- 本轮只做审查、点击验证与文档整理,没有修改业务代码、接口契约或测试数据。
## 操作流程复审表
| 编号 | 用户流程 | 参考项目 | 当前项目 | 健康度 | 结论 |
| --- | --- | --- | --- | --- | --- |
| 1 | 登录与找回登录密码 | 账号密码登录;忘记密码使用账号、姓名、生日和新密码 | 支持密码/短信登录;忘记密码使用手机号短信码和新密码 | 基本健康 | 能力已覆盖,身份校验方式不同,不算缺页 |
| 2 | 修改登录密码 | 旧密码、新密码、重复新密码 | 旧密码、新密码、重复新密码 | 健康 | 核心步骤一致 |
| 3 | 更换手机号 | 输入登录密码和新手机号 | 新手机号加短信验证码 | 基本健康 | 安全契约不同;当前以后端最新短信换绑接口为准 |
| 4 | 家谱首页与切换当前家谱 | 首页选择家谱进入 | 首页卡片和“切换当前家谱”弹层均可用 | 健康 | 本轮已点击切换并恢复到“真机联调10159371” |
| 5 | 添加家谱入口 | 搜索/邀请码加入和创建家谱 | “搜索家谱”与“继续创建”分流 | 健康 | 当前是融合入口,不需要复制参考页面数量 |
| 6 | 创建家谱 | 姓氏、谱名、堂号、始迁祖、地区、简介、访问规则 | 在此基础上还有祖籍地、详细地址、封面;空提交有字段级提示 | 基本健康 | 当前字段更完整;`firstAncestorName` 后端落库仍是既有差异 |
| 7 | 未修改创建页直接返回 | 直接返回 | 直接返回,不弹放弃确认 | 健康 | 本轮已点击验证 |
| 8 | 邀请码加入 | 输入邀请码后确认 | 搜索页提供邀请码输入、查询和加入结果 | 基本健康 | 入口与校验链已存在;未兑换真实邀请码,避免写入成员数据 |
| 9 | 搜索公开家谱并申请加入 | 搜索结果可进入申请流程 | 搜索结果可显示,但“申请加入”点击无任何跳转或提示 | 阻断 | 新增 P0 前端缺陷,详见发现 1 |
| 10 | 管理邀请 | 可生成和使用邀请 | 可查看有效期、失效状态并生成新邀请码 | 基本健康 | 本轮看到失效邀请码与“生成新邀请码”;未点击生成,避免写操作 |
| 11 | 审核加入申请 | 管理员在消息/管理入口处理 | 独立“申请审核”页,当前数据为空时空状态正常 | 基本健康 | 没有待审样本,未执行同意/拒绝写操作 |
| 12 | 成员编辑、角色与人物绑定 | 管理员列表管理成员 | 普通目标成员具备编辑、解绑、移除、转让能力投影 | 不健康 | 当前唯一谱主记录显示未绑定人物且只读,没有另一条自绑定路径,详见发现 2 |
| 13 | 世系与成员资料 | 参考项目包含世系、成员和管理员入口 | 当前融合为世系图、成员目录、人物详情、成员状态和证件档案 | 基本健康 | 属于融合升级,不按参考页面数补页 |
| 14 | 发布家族动态 | 填写内容并发布 | 发布编辑器可进入;空白未修改时返回不会误弹确认 | 健康 | 本轮点击进入并直接返回验证通过;未提交写操作 |
| 15 | 谱文、证件、成长记录的密码查看 | 三类内容创建时强制密码和两组密保,查看前输入密码 | 三类内容均支持单条内容的设置、修改、关闭、解锁和找回 | 待产品确认 | 能力存在,但保护时机、保护粒度和找回方式不同,详见密码矩阵 |
| 16 | 图片和视频查看 | 图片展示;视频以封面/条目进入后播放 | 图片预览入口存在;家族视频列表仍直接铺设播放器 | 不健康 | 既有 P0:未达到“先显示封面,点击后播放” |
| 17 | 消息中心 | 独立消息导航,含服务入口和申请消息 | 从首页铃铛进入后,页头无返回,底栏高亮“我的”,按钮固定“返回我的” | 有瑕疵 | Android 系统返回可回退,但可见导航与来源不一致,详见发现 3 |
| 18 | 家谱设置 | 可进入并编辑 | 首次读取失败,重试仍失败 | 阻断 | 既有 P0,基础设置和永久删除资格仍被同一聚合请求共同阻断 |
| 19 | 删除、归档、转让、审批、购买、提现 | 有对应确认或提交步骤 | 前端均有确认与错误状态设计 | 仅代码复审 | 为避免修改真实数据,本轮没有执行不可逆或财务写操作 |
## 本轮新增确认的问题
### 1. P0:公开家谱“申请加入”被路由参数校验直接拦截
点击证据:公开家谱列表正常显示,点击“申请加入”后页面完全不变,也没有错误提示。
代码原因:
- `pages/genealogy/search.vue` 打开 `G08` 时传入 `genealogyId``genealogyName`
- `utils/navigation/routes.js``G08` 只声明必填 `genealogyId` 和可选 `source`
- 导航网关会拒绝所有未声明参数,因此 `genealogyName` 在调用 `uni.navigateTo` 前就触发异常。
- 本轮对所有可静态识别的 `openPage("路由键", { ... })` 调用做了路由字段扫描,只发现这一处字面量参数不匹配。
完成条件:删除多余的 `genealogyName` 传参,或由 `G08` 契约明确声明并消费该字段;随后加入一条自动化检查,点击公开家谱的“申请加入”必须进入申请表单,返回后仍回到搜索结果。
证据:
![当前公开家谱列表,申请加入按钮点击后未跳转](audit-2026-08-23-round-3/24-current-public-genealogies.png)
### 2. P1:谱主自己的成员记录无法绑定世系人物
运行时证据:当前测试家谱只有 1 位成员,该成员角色为谱主,亲属关系未填写、世系人物未绑定,页面只显示“当前账号只能查看这位成员”。
前后端交叉确认:
- 前端仅在 `member.capabilities.canEdit` 为真时开放编辑器。
- 后端能力投影明确令所有谱主目标 `canEdit=false`
- 后端更新接口还会对谱主目标抛出“不能直接修改谱主成员”。
- 当前前端、OpenAPI 和后端项目中没有发现单独的“谱主绑定本人世系人物”入口。
这会造成首次创建家谱后的闭环断点:唯一成员正是谱主,但谱主无法把自己绑定到创建出的始祖或其他世系人物。若产品确实禁止管理员接口编辑谱主,应另设只允许修改本人关系和人物绑定的窄接口,不能开放角色和成员移除能力。
证据:
![当前谱主成员只读且未绑定人物](audit-2026-08-23-round-3/20-current-members.png)
### 3. P2:消息中心的可见返回方向与实际来源不一致
消息中心可从家谱首页铃铛进入,路由也允许来源为 `G01`;但页面使用根页头、底栏固定高亮“我的”,空状态和错误状态按钮都写死为“返回我的”。系统返回键仍可回到上一页,所以不是完全阻断,但用户会被可见操作带离原流程。
完成条件:消息中心保留来源并显示返回;或明确把消息中心定义为独立根入口并统一首页、个人中心和底栏导航语义。
证据:
![当前消息中心从家谱首页进入后仍固定指向我的](audit-2026-08-23-round-3/22-current-messages.png)
## 密码流程专项对比
| 场景 | 参考项目 | 当前项目 | 判定 |
| --- | --- | --- | --- |
| 密码登录 | 账号加密码 | 手机号加密码,并可切换短信登录 | 已覆盖 |
| 忘记登录密码 | 账号、姓名、生日、新密码、确认密码 | 手机号、短信验证码、新密码、确认密码 | 已覆盖,找回凭据不同 |
| 修改登录密码 | 旧密码、新密码、确认密码 | 旧密码、新密码、确认密码 | 已覆盖 |
| 更换手机号 | 登录密码、新手机号 | 新手机号、当前绑定手机号短信验证 | 已覆盖,后端契约不同 |
| 新建谱文 | 查看密码必填且至少 6 位;两组密保问题和答案必填 | 创建时无密码字段;保存后可选择设置 8 至 128 位密码 | 流程差异,待确认 |
| 新建重要证件 | 查看密码必填且至少 6 位;两组密保问题和答案必填 | 创建时无密码字段;保存后可选择设置 8 至 128 位密码 | 流程差异,待确认 |
| 新建成长日志 | 查看密码必填且至少 6 位;两组密保问题和答案必填 | 创建时无密码字段;保存后可选择设置 8 至 128 位密码 | 流程差异,待确认 |
| 查看受保护内容 | 输入该内容的查看密码 | 输入单条内容密码,成功后取得 15 分钟短时访问授权 | 已覆盖,当前授权边界更明确 |
| 忘记内容密码 | 回答任意一组密保后重设密码 | 查询实名手机号找回资格、发送短信码、校验后重设 | 已覆盖,但无实名手机号时不可用 |
| 修改/关闭内容密码 | 编辑时通过密保修改;参考页面未发现独立关闭操作 | 有权限者可设置、修改或关闭 | 当前能力更完整 |
参考项目密码弹层证据:
![参考项目进入受保护内容时要求输入查看密码](audit-2026-08-23-round-3/16-reference-password.png)
当前测试家谱没有受保护的真实内容,因此本轮没有伪造数据,也没有声称已经在 MuMu 中完成错误密码、短信发送和解锁成功的端到端验证。当前侧结论来自页面实现、请求契约、OpenAPI 和后端接口的四方核对;在修复前应准备一条受保护谱文、一条受保护成长记录和一份受保护证件做真机回归。
## 与第二轮 14 项差异的关系
第三轮没有推翻第二轮清单,以下差异仍需处理:
1. 家谱设置整体读取失败。
2. 家族视频不是封面卡片进入播放。
3. 功德记录媒体后端契约未闭环。
4. 礼仪封面未显示。
5. 谱文封面未显示。
6. 家谱级重要证件聚合入口缺失。
7. VIP 订单号、支付时间、到期时间显示不完整。
8. 提现单号、审核备注、打款参考号、到账时间显示不完整。
9. 推广注册链接和二维码缺失。
10. 谱文、礼仪、视频封面缺少明确移除契约。
11. 多类参考内容的创建时间字段未覆盖。
12. 贺礼簿列表缺少首图。
13. “家族恩人”业务语义缺失。
14. 创建家谱的始迁祖未由后端落库。
具体字段、责任方和完成条件继续以 [第二轮独立复审](second-pass-comparison-audit-2026-08-23.md) 为准;本报告补充操作链路和密码差异,不重复制造另一套业务清单。
## 验证范围与限制
- 本轮重新点击了家谱切换、添加家谱分流、搜索家谱、创建家谱、创建页空提交校验、创建页返回、家谱总览、邀请码管理、成员列表、申请审核、消息中心、家族动态发布页与返回。
- 参考项目重新进入了加入家谱、创建家谱、管理员、消息、世系和受保护内容密码弹层。
- 没有执行生成邀请码、提交加入申请、审批、保存、删除、归档、谱主转让、短信发送、支付或提现等写操作。
- 两端账号和数据集不同,因此只比较入口、步骤、字段、状态、权限与返回关系,不比较具体数据条数。
- 未执行屏幕阅读器、外接键盘焦点顺序和自动对比度测试;本轮不声明完整无障碍验收通过。
- 当前受保护内容缺少真机样本;密码错误、短信找回、15 分钟授权过期和三类内容解锁回归仍需在测试数据准备后完成。