# NDB 会议小程序全功能回归报告 - 测试时间:2026-09-22,Asia/Shanghai - 环境:本地开发环境;微信开发者工具 iPhone 12/13 Pro 模拟器,SDK 3.16.3 - 小程序:`projects/mp/mp-conference`,`feat/meeting-v2-integration` / `065a20b` - BFF:`projects/mp/mp-conference-api-v2`,`feature/migrate-legacy-mini-api` / `0223ab5` - Backend:`projects/ndb/backend`,`feat/meeting-management` / `3e60c89` - 约束:未修改源码或配置,未提交、推送、部署或上传预览版;仅操作并收尾本地 QA 数据(含时间边界调整、临时绑定与恢复、偏好删除、取消及软删除) - 汇总:**Pass 29 / Fail 0 / Blocked 2 / Skipped 1,共 32 条** ## 关系与数据流 ```mermaid flowchart LR WX[微信用户] --> CU[BFF 渠道用户] CU -->|手机号匹配| CC[NDB 客户联系人] CC --> CO[客户公司] CO --> CT[有效合同] CO --> PJ[进行中项目] CC --> MR[会议报名] MT[会议] --> MR MR --> PT[客户应收 Task] CU --> FV[会议收藏] CU --> MS[纪要预约] MT --> FV MT --> MS MT --> ME[会议专家] TP[话题] --> TE[话题专家] TP --> TC[话题内容/会议纪要/报告] EP[公开专家资料] --> TE EP --> IR[专家访谈申请] CC --> IR ``` 报名是生成客户应收 Task 的业务入口;收藏与纪要预约仅保存在 BFF 偏好数据中,不会创建或修改 Task。未进入结算时,成功取消只把报名置为 `cancelled`,不会删除或改写已创建 Task 的财务生命周期;已进入结算时,取消会被 `SETTLEMENT_LOCKED` 拒绝,需联系工作人员处理。 ## 用例结果 | 编号 | 用例 | 层级 | 预期 | 实际 | 状态 | 证据 | | --- | --- | --- | --- | --- | --- | --- | | MP-AUTH-001 | 登录隐私同意门禁 | 小程序模拟器 | 未同意隐私政策不能登录 | 点击登录后出现隐私门禁;同意后才可继续 | Pass | `06-login-before.jpg`、`07-login-privacy-gate.jpg` | | MP-AUTH-002 | 微信登录与会话建立 | 小程序模拟器/接口 | `wx.login` 后建立有效会话 | 登录成功,身份认证页可访问;敏感票据未落报告 | Pass | `08-login-result.jpg` | | MP-AUTH-003 | 联系人未匹配提示 | 小程序模拟器/接口 | 手机号无匹配联系人时给出明确错误 | 返回 404 `CONTACT_NOT_FOUND`,页面提示联系客户经理核对档案 | Pass | `09-auth-before-binding.jpg`、`10-auth-binding-result.jpg` | | MP-AUTH-004 | 真实手机号绑定联系人 9 | 微信能力/数据 | 微信手机号匹配后绑定联系人 9 | 当前真实微信手机号与本地测试联系人手机号不一致,不能真实完成绑定;仅为后续功能临时注入本地绑定,收尾已恢复 | Blocked | 环境数据限制;`11-auth-bound-contact9.jpg` 仅证明注入后的下游页面状态 | | MP-AUTH-005 | 退出登录 | 小程序模拟器 | 确认后清空客户端身份并回到未登录态 | 确认弹窗正常;退出后显示“登录后查看会议与收藏” | Pass | `34-logout-confirm.jpg`、`35-my-after-logout.jpg` | | MP-AUTH-006 | 未登录访问保护 | 小程序模拟器/接口 | 私有接口返回 401,页面引导登录 | `/users/me`、会议报名接口均返回 401;详情显示“请先登录后报名参会” | Pass | `37-meeting74-logged-out.jpg` | | MP-NAV-001 | 首页与主导航 | 小程序模拟器 | 首页、敏思汇、敏思谈、我的可切换并加载 | 首页显示当天会议和最新内容,主页面均正常打开 | Pass | `19-home-authenticated.jpg`、`20-gather.jpg`、`21-talk-topics.jpg`、`28-my-authenticated.jpg` | | MP-CAL-001 | 日期与月份会议统计 | 接口 | 日/月筛选返回对应会议 | `date=2026-09-22` 返回 1 条;`month=2026-09` 返回 3 条 | Pass | 接口响应摘要 | | MP-MTG-001 | 会议列表与详情 | 小程序模拟器/接口 | 可打开会议并显示状态、时间、专家和内容 | 会议 ID 4 正常显示;已结束会议关闭报名与参会入口 | Pass | `01-meeting-list.jpg`、`02-meeting-detail.jpg` | | MP-MTG-002 | 开放报名会议状态 | 小程序模拟器 | 未来会议显示未报名和报名入口,开始前隐藏参会链接 | 测试会议 74 显示“开放报名/未报名/报名参会”,参会链接不可见 | Pass | `12-meeting74-before-register.jpg` | | MP-REG-001 | 报名参会 | 小程序模拟器/接口 | 点击报名后状态变为已确认 | 页面显示“报名已确认”,后端生成报名 1 和 Task 124 | Pass | `13-meeting74-after-register.jpg` | | MP-REG-002 | 重复报名幂等 | 接口/数据库 | 重复请求不重复生成报名或 Task | 重复请求返回同一报名 1;报名数仍为 1,Task 仍为 124 | Pass | 接口与数据库核对摘要 | | MP-REG-003 | 报名数据一致性 | 数据库 | 联系人、项目、合同和应收 Task 关联一致 | 联系人 9、项目 9、有效合同 3;Task 124 为 `ongoing/unbilled/not_required` | Pass | 数据库核对摘要 | | MP-REG-004 | 取消报名与重复报名规则 | 小程序模拟器/接口/数据库 | 未进入结算时可取消且不删除 Task;再次报名不新建 Task 且保持取消态 | 测试报名未进入结算,确认弹窗正常,取消接口返回 `cancelled`,页面显示“报名已取消”;Task 124 未变。服务层自动化覆盖再次报名仍保持 `cancelled`,并覆盖结算锁拒绝取消 | Pass | `17-meeting74-after-cancel.jpg`;Backend 95 项测试 | | MP-REG-005 | 参会链接时间边界与复制 | 小程序模拟器/接口 | 开始前隐藏;进行中、报名确认、Task 有效、已配置链接且服务端授权后可见并可复制 | 测试数据满足全部授权条件,两个时间边界均符合;复制到剪贴板的 URL 与服务端一致 | Pass | `12-meeting74-before-register.jpg`、`18-meeting74-join-link.jpg` | | MP-PREF-001 | 收藏会议 | 小程序模拟器/数据库 | 收藏后按钮与收藏列表同步 | 页面显示“已收藏”,BFF 收藏记录存在 | Pass | `14-meeting74-favorite-subscribe.jpg`、`16-my-favorites.jpg` | | MP-PREF-002 | 预约会议纪要 | 小程序模拟器/接口 | 预约后按钮和订阅记录同步 | 页面显示“取消纪要预约”,订阅列表返回会议 74 | Pass | `14-meeting74-favorite-subscribe.jpg` | | MP-MY-001 | 我的会议 | 小程序模拟器/接口 | 已报名会议及状态可查询 | 列表显示会议 74 和已确认状态 | Pass | `15-my-meetings.jpg` | | MP-MY-002 | 我的收藏 | 小程序模拟器/接口 | 已收藏会议可查询 | 收藏列表显示会议 74 | Pass | `16-my-favorites.jpg` | | MP-TPC-001 | 话题列表与详情安全渲染 | 小程序模拟器/接口 | Markdown/安全富文本按结构显示,不暴露标签源码 | 话题 ID 5 的段落、粗体、列表正常,未见 HTML/脚本源码 | Pass | `02-topic-detail.jpg`、`21-talk-topics.jpg` | | MP-TPC-002 | 历史危险 HTML 样本 | 数据条件 | 对真实 `script/style/事件属性/javascript:` 样本验证剥离 | 本地已发布话题无此类真实样本;按约束未修改存量数据造数 | Skipped | 数据分类摘要 | | MP-EXP-001 | 专家列表与详情 | 小程序模拟器/接口 | 专家页签、档案和可分享话题正常加载 | 专家页签加载 49 条;专家 49 详情正常 | Pass | `22-talk-experts.jpg`、`23-expert49-detail.jpg` | | MP-EXP-002 | 申请专家访谈 | 小程序模拟器/数据库 | 提交后产生待处理申请并反馈成功 | 成功弹窗出现,生成申请 1;收尾已置为 `cancelled` | Pass | `24-expert49-booking-result.jpg` | | MP-CONT-001 | 内容详情与不存在记录 | 小程序模拟器/接口 | 已发布内容可读,不存在 ID 显示稳定错误态 | 内容 1 正常显示;无效 ID 显示“内容不存在或尚未发布” | Pass | `25-content1-detail.jpg` | | MP-SRCH-001 | 会议/纪要/话题搜索与空结果 | 小程序模拟器/接口 | 三类搜索正确,空结果稳定 | 会议唯一命中、纪要和话题多项命中;不存在关键词显示“暂无数据” | Pass | `26-search-meeting.jpg`、`27-search-topic.jpg` | | MP-PROFILE-001 | 个人资料展示 | 小程序模拟器 | 显示认证、手机号、邮箱及合同校验状态 | 已认证状态正确;手机号已绑定,邮箱未提供,合同由服务端校验 | Pass | `29-my-profile.jpg` | | MP-PROFILE-002 | 昵称与头像暂不支持提示 | 小程序模拟器 | 不支持的编辑不能静默成功,应给出明确提示 | 昵称保存和头像选择均提示当前服务不支持,原资料未变 | Pass | `30-profile-edit-unsupported.jpg`、`31-profile-avatar-unsupported.jpg` | | MP-MSG-001 | 消息空状态 | 小程序模拟器/接口 | 无消息时显示明确空状态 | 页面显示“暂无消息”,接口总数为 0 | Pass | `32-message-empty.jpg` | | MP-PRIV-001 | 隐私政策 | 小程序模拟器 | 隐私页可进入且正文完整 | 页面正常加载,正文可滚动查看 | Pass | `33-privacy.jpg` | | MP-WEB-001 | Web 容器 URL 绑定 | 小程序模拟器 | 编码 URL 正确传给 `web-view` | `https://example.com` 正确写入 `web-view src`;开发工具域名限制下未把公网渲染结果作为通过依据 | Pass | 运行态 WXML 属性核对 | | MP-ERR-001 | 404 与断网恢复态 | 小程序模拟器/接口 | 不存在记录和网络超时均提供稳定错误页与重试入口 | 无效会议/话题显示记录不存在;暂停 BFF 后新版会议显示“请求超时,请稍后重试”,恢复后健康检查正常 | Pass | `03-topic-not-found.jpg`、`04-meeting-not-found-v2.jpg`、`36-network-error.jpg` | | MP-SHARE-001 | 微信分享面板 | 微信原生能力 | 首页、会议、话题、内容可拉起真实分享面板 | 分享 hooks 与参数有自动化/源码覆盖,但本轮自动化无法操作微信原生分享面板 | Blocked | Mini 自动化 61 项;原生能力限制 | ## 自动化与构建补充证据 - Mini:`node --test tests/*.test.cjs`,61/61 通过。 - BFF:`npm test`,5/5 suites、72/72 tests 通过。 - Backend:`python manage.py test api.meetings`,95/95 通过,system check 0 issues。 - 构建:`yarn build:weapp:local` 成功。仅有既有非阻断提示:caniuse-lite 过期、`vendors.js` 363 KiB 超出推荐值、无异步 chunk。 - 本轮模拟器 console 的 `error|warn|fail|deprecated` 最终检索为空。 ## 本地测试数据收尾 - 会议 74 初建时间为 2026-10-22 17:46,截图 `12`、`13` 记录的是未来会议报名阶段;为验证“会议进行中才开放参会链接”,随后把开始时间调整为 2026-09-22 17:46 左右。因此截图与收尾数据库月份不同是明确的边界测试步骤,不是日期偏移缺陷。 - 会议 74 `QA-MP-FULL-20260922`:已置 `cancelled` 且软删除。 - 报名 1:已置 `cancelled`;关联 Task 124 按业务规则保留,状态仍为 `ongoing/unbilled/not_required`,金额 1000.00。 - 专家访谈申请 1:已置 `cancelled`。 - BFF 当前测试用户:临时联系人 9 绑定已恢复为 `NULL`;会议 74 的收藏和纪要订阅均已删除。 - 联系人 9 是既有授权本地测试联系人,本轮未删除。 ## 风险与结论 - 无实际产品失败,因此未创建缺陷。 - 真实微信手机号绑定联系人 9、微信原生分享面板仍受账号/自动化能力阻塞,不能以本地注入或源码检查冒充通过。 - 其余计划内功能在当前本地候选版本上通过;自动化测试补充覆盖取消后再次报名不恢复、Task 不重复创建等领域规则。