Files
guoju0808/测试用例.md
T
郭庆泰 5a0a892574 feat: 邀请函邮件发送 + 首次设密/密码为空 + 姓名单一可信源
邀请发送 (菜单暂隐藏, 待确认参数见 发送邀请-待确认参数.md):
- 后端: BizInvite / BizInviteRecipient + Controller/Service/Mapper/XML
- 邮件: InviteMailSender (spring-boot-starter-mail SMTP) + application*.yml 邮件配置
- 上传进度: UploadProgressRegistry + UploadProgressController
- 前端: InviteList / InviteNew / InviteDetail / InviteView + api/business/invite.js
- 原型: proto/html/components/invite-detail / new-invitation / send-invitation

登录/账号:
- 首次设密: /getInfo 返回 isPasswordEmpty, SysProfileController 密码为空时跳过旧密码校验, ForcePasswordDialog 强制弹窗
- 姓名单一可信源 resolveDisplayName: doctor→biz_expert.name, sponsor/executor→biz_person.name, 其余回退 nick_name
- OA compliance 门禁改为按手机号查 ecology 视图 (不再限定 manager/leader)

其它:
- OSS zip 在线查看 (列清单+取单文件, 公开只读) + SecurityConfig permitAll
- doctor 项目详情 ProjectDetail.vue
- 数据库/测试/设计文档 (md) 入库
2026-09-10 20:40:49 +08:00

46 KiB
Raw Blame History

测试用例(内部)V3.0

版本:V3.0(逐条对齐 ry-vue3 真实 .vue 源码:入口=真实菜单/路由,操作=真实按钮/表单字段,预期=真实校验文案/Toast) 配套文档:《测试设计方案 V2.0》《详细设计方案 V2.0》 测试方式:黑盒操作 ry-vue3 前端界面(浏览器点菜单、填表单、看右上角红/绿提示、看列表变化),不调接口、不写 SQL。


0. 执行前必读

0.1 测试方式

  • 全程在浏览器操作 ry-vue3 前端。所有「入口」均为真实侧栏菜单或门户链接;所有「操作」均为页面上真实存在的按钮/输入框。
  • 后端校验失败时,右上角弹出红色 ElMessage(或 ElNotification),文案即「预期」中括号内字符串(逐字核对)。
  • 前端表单校验在点保存/提交时触发,红框 + 字段下方红字提示;本用例中的校验文案均来自各 .vuerules
  • 成功操作通常弹绿色提示 + 列表自动刷新;多步流程用「步骤 → 预期」表达。
  • 「落库结果」统一转为界面可观察现象(如:该账号再次登录被拦、列表多一行、状态标签变化、角标 +1),测试人员无需连数据库。

0.2 测试账号(界面登录:手机验证码登录,测试验证码 123456)

登录页两种模式:账号密码登录 / 手机验证码登录,本系统业务账号统一走 手机验证码登录

编号 角色 登录手机号 验证码 登录后进入
U01 后台管理员 13800000000 123456 /admin/workbench 工作台
U02 合规经理 13800000002 123456 /manager/workbench 工作台
U03 医生(已通过) 13800000001 123456 /doctor/home 首页
U04 医生(待审核) 13800000003 123456 无法登录(被拦)
U05 执行方主账号 13800000010 123456 /executor/overview 首页
U06 执行方子账号 13800000011 123456 /executor/overview 首页
U07 支持方主账号 13800000020 123456 /sponsor/home 首页
U08 支持方子账号 13800000021 123456 /sponsor/home 首页
U09 项目负责人 13800000030 123456 /leader/home 首页

0.3 业务数据(测试前已备好)

数据 关键状态
机构 SO1 支持方机构(正常)
执行单位 EU1 执行单位
项目 P1 编号 P202609001,创建人 U02,共 10 场,起止 2026-09-01 ~ 09-30,已发布
项目 P3 编号 P202609003,已结题(见 §0.5 风险)
会议 M1 属 P1 第 1 期,未执行
会议 M2 属 P1 第 2 期,已执行,劳务/会务已通过,已传凭证
会议 M3 属 P1 第 3 期,已冻结
专家 E1 王医生,13800000001

0.4 通用界面约定

  • 提示位置:右上角浮层。红色=失败、绿色=成功、黄色=警告。
  • 列表页:顶部「查询/重置」+ 工具栏按钮(按钮可见性随角色变化);无权限按钮隐藏
  • 详情页:项目详情、会议详情为多卡片/多标签页(劳务材料 / 会务材料 / 劳务凭证 / 会务凭证)。
  • 表单校验:前端 rules 校验先于后端,字段下方红字;后端业务校验失败弹右上角红条。
  • 消息中心:右上角铃铛角标显示未读数;新消息推送弹绿色通知「您有新的通知」。
  • 权限 vs 状态两类断言:无权角色能测的是「入口不存在(菜单/按钮隐藏)」,不是「点击后报错」——按钮看不到就点不了。因此后端角色校验文案(如「只有管理员可删除会议」)不作为界面预期;只有「入口对当前角色可见、但因业务状态失败」的文案(如「会议尚未结算, 不能完结」)才作为预期。凡角色越权,用例只断言「无入口 / 有权角色可操作」。

0.5 已知缺陷风险(执行时先记录,不修)

  • 已结题项目「不能分配」可能失效:代码里结题判定一处按 'Y'、一处按 '1' 不一致。
    • 表现:把 P3 置为结题后,经理在「项目分配」里仍可能给 P3 分配成功。
    • 涉及用例 TC-PROJECT-005,执行时记录「实际是否拦截」,作为缺陷候选上报。
  • 意向审核列被隐藏支持意向/执行意向 列表的「审核状态」「操作(通过/拒绝/删除)」列当前 v-if="false" 不渲染,仅能查看 + 导出(见 TC-INTENT-004)。

1. 登录与注册(AUTH

TC-AUTH-001 已注册手机号发码成功

  • 优先级P0
  • 入口:门户登录页(#/login)→ 切到「手机验证码登录」
  • 操作:输入手机号 13800000001 → 点「获取验证码」
  • 预期:按钮进入倒计时显示「60s 后重试」,绿色提示「验证码已发送」

TC-AUTH-002 手机号格式错误不发码

  • 优先级P1
  • 操作:输入 123 → 点「获取验证码」
  • 预期:黄色提示「请输入正确的手机号」,不发码

TC-AUTH-003 未注册手机号不发码

  • 优先级P1
  • 操作:输入 19900000000 → 点「获取验证码」
  • 预期:红色提示「该手机号未注册, 请先注册账号」

TC-AUTH-004 短信验证码登录成功(医生)

  • 优先级P0
  • 前置U03
  • 操作:输入 13800000001 + 验证码 123456 → 点「登录」
  • 预期:绿色提示「欢迎,王医生」,跳转 /doctor/home;右上角用户名为医生姓名

TC-AUTH-005 验证码错误 / 过期

  • 优先级P1
  • 操作:发码后输入错误验证码 000000 → 登录
  • 预期:红色提示以「验证码错误或已过期: 」开头,停留登录页

TC-AUTH-006 待审核医生登录拦截

  • 优先级P0
  • 前置U04
  • 操作:用 13800000003 + 123456 登录
  • 预期:红色提示「您的信息正在审核中」,不进入后台

TC-AUTH-007 停用账号登录拦截

  • 优先级P1
  • 前置:管理员先把某账号停用
  • 操作:该账号登录
  • 预期:红色提示「账号已被停用」

TC-AUTH-008 删除账号登录拦截

  • 优先级P1
  • 前置:管理员删除某账号
  • 操作:该账号登录
  • 预期:红色提示「账号已被删除」

TC-AUTH-009 子账号主账号异常登录拦截

  • 优先级P1
  • 前置:U06(子账号)的主账号 U05 被删除或停用
  • 操作U06 登录
  • 预期:主账号被删 → 「所属主账号不存在, 请联系管理员」;主账号停用 → 「您所属的机构已禁用」

TC-AUTH-010 医生自助注册(待审核)

  • 优先级P0
  • 入口:登录页「新用户注册」→ 注册类别弹窗选「项目参与专家」→ 进入「专家注册」页(#/register-expert
  • 操作:填姓名/工作单位/科室/职称/手机号/验证码/密码/确认密码,上传执业证书与职称证明,勾选「我已阅读并同意《用户协议》和《隐私政策》」→ 点「同意协议并注册」
  • 预期:绿色提示「注册成功」,页面切换为成功页(注册成功 / 请等待管理员审核,审核通过后即可登录);用该手机号登录被拦「您的信息正在审核中」

TC-AUTH-011 医生注册必填校验

  • 优先级P1
  • 操作:在「专家注册」页逐项清空/填错后提交
  • 预期:逐项红字提示——姓名空「请输入姓名」、单位空「请输入工作单位」、科室「请选择科室」、职称「请选择职称」、手机号「请输入手机号码」/「手机号格式错误」、验证码空「请输入短信验证码」、密码「请输入登录密码」/「密码长度 6-20 位」、确认密码「请再次输入登录密码」/「两次密码不一致」、执业证书「请上传执业证书/证明」、职称证明「请上传职称证明」;发码时手机号错「请先输入正确的手机号」;手机号已注册「该手机号已注册,请直接登录」

TC-AUTH-012 执行方注册

  • 优先级P0
  • 入口:登录页「新用户注册」→ 选「项目执行单位(供应商)」
  • 操作:观察跳转行为
  • 预期:跳转到外部供应商注册系统(https://zbsupplier.guojustar.com/),不在本系统内注册。
    • 备注:独立路由 #/register-executor 仍存在,若直接访问,字段为 用户名/企业名称/企业性质(私营/国营/中外合资/外资/其他)/手机号/验证码/密码/确认密码,提交成功绿色「注册成功」

TC-AUTH-013 执行方注册校验

  • 优先级P1
  • 操作:直接访问 #/register-executor 逐项触发
  • 预期:用户名「请输入登录用户名」/「用户名长度 4-20 位」/「只能包含字母/数字/下划线」、企业名称「请输入企业名称」、企业性质「请选择企业性质」、手机号「手机号格式错误」、密码「密码长度 6-20 位」、确认密码「两次密码输入不一致」;用户名占用「登录账号已存在」、手机号已注册「该手机号已注册,请直接登录」

TC-AUTH-014 支持方注册(选企业)

  • 优先级P0
  • 入口:登录页「新用户注册」→ 选「项目支持单位」→ 进入「支持方注册」页(#/register-sponsor
  • 操作:企业名称下拉远程搜索选择 SO1 → 填联系人姓名/手机号/验证码/密码/确认密码 → 勾选协议 →「同意协议并注册」
  • 预期:绿色提示「注册成功」;该账号登录进入 /sponsor/home(子账号视角)

TC-AUTH-015 支持方注册校验

  • 优先级P1
  • 操作:注册页逐项触发
  • 预期:用户名「请输入登录用户名」/「用户名长度 4-20 位」/「只能包含字母/数字/下划线」、企业未选「请选择企业」、联系人空「请输入联系人姓名」、手机号「手机号格式错误」、密码「密码长度 6-20 位」、确认密码「两次密码输入不一致」

TC-AUTH-016 支持方注册下拉选项

  • 优先级P2
  • 操作:注册页企业名称下拉,输入关键字远程搜索
  • 预期:按关键字返回可注册的支持方企业,选中后回填

2. 专家管理(EXPERT

TC-EXPERT-001 管理员建档专家(默认通过)

  • 优先级P0
  • 入口:U01 登录 →「专家管理」→「新建专家」(#/admin/experts/new
  • 操作:填姓名/手机号/工作单位/科室/职称 → 点「保存」
  • 预期:弹「创建成功」账号信息框(专家账号已创建 账号:… 初始密码:…)+ 绿色「新建成功」;列表新增;该专家手机号可直接登录(默认已通过)

TC-EXPERT-002 专家启用/停用

  • 优先级P1
  • 前置E1 存在
  • 操作:U01「专家管理」→ E1 行「禁用」
  • 预期:绿色「已禁用」;该专家手机号登录被拦「账号已被停用」;再点「恢复」→ 绿色「已恢复」,可登录

TC-EXPERT-003 专家编辑(不丢 expert_id

  • 优先级P0
  • 前置E1 存在
  • 操作E1 行「修改」→ 改科室 → 保存
  • 预期:绿色「修改成功」,详情/列表科室更新;该专家仍能正常登录、再次编辑不报错

TC-EXPERT-004 专家审核(manager

  • 优先级P1
  • 入口:U02 登录 →「专家审核」→ 某待审核专家行「审核」
  • 操作:审核弹窗选「通过」/「拒绝」→ 点「确认」
  • 预期:绿色「审核通过」/「已拒绝」;「通过」后该专家可登录;已拒绝的可点行内「已拒绝」查看拒绝意见(拒绝时间:… 审批人:… 拒绝意见:…

TC-EXPERT-005 专家导入

  • 优先级P2
  • 操作:专家列表「批量导入」→「下载模板」(专家批量导入模板.xlsx)→ 填数据上传
  • 预期:导入结果提示成功/失败条数与原因;无文件/异常时「导入失败, 返回数据异常」或「上传失败, 请重试」

3. 机构与人员(ORG / PERSON

TC-ORG-001 支持单位管理列表

  • 优先级P1
  • 入口U01 登录 →「支持单位管理」
  • 操作:查看列表,按「单位名称」「税号/统一社会信用代码」「合作状态(正常/禁用)」筛选
  • 预期:显示支持方机构列表(单位名称/单位地址/税号/合作状态/创建日期/联系人/联系电话),搜索正常

TC-ORG-002 机构停用同步主账号

  • 优先级P0
  • 前置SO1 主账号 U07 可登录
  • 操作:U01「支持单位管理」→ SO1 行「禁用」→ 确认弹窗「确定要禁用「SO1」吗? 禁用后该企业主账号无法登录, 企业下子账号也将被拦截」→ 确定 → 用 U07 登录
  • 预期:绿色「已禁用」;U07 登录被拦「您所属的机构已禁用」;点「恢复」→ 绿色「已恢复」,U07 可登录

TC-ORG-003 机构导入

  • 优先级P2
  • 操作:支持单位列表「批量导入」→「下载模板」→ 上传
  • 预期:导入结果提示成功/失败条数与原因

TC-PERSON-001 新建人员(支持方)

  • 优先级P0
  • 入口:U01「支持单位下人员」→「新建人员」
  • 操作:填用户名/姓名/手机号/所属公司/部门/职务 → 保存
  • 预期:绿色「新建成功,默认密码 123456」;该手机号可用默认密码 123456 登录

TC-PERSON-002 人员列表显示登录账号

  • 优先级P1
  • 入口U07 登录 →「人员管理」
  • 操作:查看列表
  • 预期:每行显示「账号」列(登录账号),未绑账号的为空

TC-PERSON-003 更换机构管理员

  • 优先级P1
  • 入口U01 → 支持单位下人员
  • 操作:对某子账号行「管理员」开关设为开启 → 确认弹窗「确定将「X」设为该机构管理员吗?」
  • 预期:绿色「已更换管理员」;该人员晋升为机构主账号,原主账号降级;已为主账号时点开关提示「已是该机构管理员」

TC-PERSON-004 重置人员密码

  • 优先级P1
  • 操作:人员行「更多」→「重置密码」→ 确认弹窗「确定重置「X」的登录密码为默认 123456 吗?」
  • 预期:绿色「已重置为 123456」;该人员可用 123456 登录

TC-PERSON-005 人员导入(含邮箱校验)

  • 优先级P2
  • 入口:执行单位下人员 / 执行方人员管理 →「批量导入」
  • 操作:下载模板,某行留空邮箱后上传
  • 预期:该行标记失败「邮箱不能为空」(或结果弹窗显示失败原因),其余行正常导入

4. 项目(PROJECT

TC-PROJECT-001 manager 项目列表隔离

  • 优先级P0
  • 入口U02 登录 →「项目管理」
  • 操作:查看列表
  • 预期:只显示 U02 自己创建的项目,不出现他人项目

TC-PROJECT-002 sponsor 主/子账号隔离

  • 优先级P0
  • 入口U07 登录 →「项目管理」(/sponsor/projects);U08 登录 →「我的项目」(/sponsor/my-projects
  • 操作:各自查看
  • 预期:U07(主账号)看到本机构全部项目;U08(子账号)只看到分配给自己监察的项目

TC-PROJECT-003 executor 主/子账号隔离

  • 优先级P0
  • 入口:U05、U06 分别登录 →「项目列表」
  • 操作:各自查看
  • 预期:U05 看到本执行单位全部项目;U06 只看到分配到执行人自己的项目(子账号隐藏「项目分配」按钮与「分配」链接)

TC-PROJECT-004 项目删除仅 admin

  • 优先级P0
  • 操作
    1. U02「项目管理」某项目行「更多」→ 无「删除项目」入口
    2. U01 同一项目「更多」→「删除项目」→ 确认弹窗「确认删除项目"X"?」→ 确定
  • 预期:经理不可删(无入口);管理员删除绿色「已删除」,列表消失(软删)

TC-PROJECT-005 已结题项目不能分配

  • 优先级P0
  • 前置P3 已结题
  • 操作:U02「项目管理」→ P3 行「分配」
  • 预期:红色提示「已结题项目不能分配」
  • ⚠️ 风险:见 §0.5,可能不拦截、分配成功。记录实际结果。

TC-PROJECT-006 项目分配必填/越界校验

  • 优先级P1
  • 操作:U02「项目分配」弹窗:不加执行方直接保存;填负场次/负金额;场次超总场次
  • 预期:分别提示「请至少选择 1 个执行方并填写场次」「场次不能为负数, 请调整」「金额不能为负数, 请调整」「已分配 X 场, 超过项目总场次 N, 请调整」「已分配 ¥X, 超过项目总金额 ¥N, 请调整」

TC-PROJECT-007 批量分配结果统计

  • 优先级P1
  • 操作:批量分配弹窗填 2 条有效 + 1 条超限 → 保存
  • 预期:弹「分配结果」框显示「批量分配: 成功 N/总数」及失败明细;全部成功则绿色「批量分配成功 (N/M)」

TC-PROJECT-008 评分入口角色限制

  • 优先级P0
  • 操作
    1. U03(医生)查看项目列表 / 详情
    2. U02(经理)查看项目列表 / 详情
  • 预期:U03 无「评分 / 批量评分」入口;U02 有评分入口(见 TC-PROJECT-009

TC-PROJECT-009 评分聚合与校验

  • 优先级P1
  • 操作:U02「批量评分」→ 4 维度(履约质量/时效响应/配合度/合规安全)填 1~5 → 确定
  • 预期:维度越界提示「履约质量必须是 1~5 的数字」等;成功绿色「已批量评分 N/M 个项目」或「评分完成,平均分:X」;详情「执行单位评分详情」显示平均分

TC-PROJECT-010 删除公告权限

  • 优先级P1
  • 操作
    1. U02 某项目「更多」→「删除公告」→ 确认弹窗「您确定要删除公告吗?删除后无法恢复」→ 确定
    2. U03 查看同一项目
  • 预期:U02 绿色「已删除项目 X 的公告」;U03 无「删除公告」入口

TC-PROJECT-011 报名专家导出权限

  • 优先级P2
  • 操作
    1. U01/U02 点「已报名专家导出」
    2. U03/U05/U07 查看项目列表
  • 预期:U01/U02 绿色「导出成功」并下载 xlsxU03/U05/U07 无该按钮

5. 会议(MEETING

建会入口:项目列表某行「建会」→ 带 ?projectId= 进入新建会议页;项目信息为只读快照,无「选项目」下拉。

TC-MEETING-001 新建会议页项目只读快照

  • 优先级P0
  • 入口:U02「项目管理」→ P1 行「建会」
  • 操作:观察页面
  • 预期:显示项目编号/项目名称/支持单位/总场次/项目创建人/项目创建时间等只读信息;无「选项目」下拉;会议名称/期数/起止时间/地点/备注可编辑

TC-MEETING-002 期数校验

  • 优先级P0
  • 前置P1 总场次 10 场
  • 操作:新建会议清空期数→保存;期数填 0→保存;期数填 11→保存
  • 预期:分别提示「请填写期数」「期数必须为正整数」「期数不能高于总场次/总期数 (共 10 场)」

TC-MEETING-003 建会时间越界

  • 优先级P1
  • 操作:新建会议,开始时间早于项目开始 / 结束时间晚于项目结束 / 开始晚于结束 → 保存
  • 预期:分别提示「会议开始时间不能早于项目开始时间」「会议结束时间不能晚于项目结束时间」「会议开始时间不能晚于会议结束时间」;不选时间「请选择会议开始时间」「请选择会议结束时间」;地点空「请填写会议地点」

TC-MEETING-004 新建/修改/复制会议成功

  • 优先级P0
  • 操作:填合法期数/时间/地点 → 保存;编辑后保存;复制后保存
  • 预期:分别绿色「会议创建成功」(跳会议列表)/「修改成功」/「复制成功」

TC-MEETING-005 删除会议权限

  • 优先级P0
  • 操作
    1. U02 会议列表某行「更多」→「删除」→ 确认弹窗「确认删除会议「M1」?」→ 确定
    2. U05(执行方)登录查看会议列表 → 某行「更多」
  • 预期:U02 绿色「已删除」;U05 的「更多」里没有「删除」项(入口隐藏)

TC-MEETING-006 提交材料——非执行方无入口

  • 优先级P0
  • 操作
    1. U02 打开 M1 详情
    2. U05 打开同一 M1 详情
  • 预期U02 页面无「提交劳务 / 提交会务 / 提交全部」按钮(对非执行方隐藏);U05 页面有提交按钮(后续校验见 TC-MEETING-007/008/009

TC-MEETING-007 提交材料——未执行拦截

  • 优先级P0
  • 前置M1 未执行
  • 操作:U05 打开 M1 详情 →「提交材料」
  • 预期:红色提示「会议尚未执行, 不能提交材料」

TC-MEETING-008 提交材料——已冻结拦截

  • 优先级P0
  • 前置M3 已冻结
  • 操作:U05 打开 M3 详情 →「提交材料」
  • 预期:红色提示「会议已冻结, 不能提交材料」

TC-MEETING-009 提交材料类型/内容校验

  • 优先级P1
  • 前置M1 已执行
  • 操作U05 提交材料,逐项触发
  • 预期:无材料轨「无可提交的材料轨」/「请选择要提交的材料类型」;无参会人提交劳务「请先添加参会人员 (劳务材料)」;无会务材料「会务材料至少上传一条」

TC-MEETING-010 提交材料成功

  • 优先级P0
  • 前置M1 已执行、有参会人、已传会务材料
  • 操作:U05 勾选劳务+会务 →「提交全部」
  • 预期:绿色「材料已提交, 待合规审核」,详情页两轨状态变为「待审核」;有未保存上传时先弹「检测到尚未保存的上传内容,是否先保存再提交?」

TC-MEETING-011 合规审核——意见必填与入口

  • 优先级P0
  • 操作
    1. U03 打开 M1 详情
    2. U02 打开 M1 详情 → 审核时选「拒绝」但不填意见
  • 预期:U03 页面无「通过 / 拒绝」审核入口(只读);U02 有审核入口,选「拒绝」不填意见 → 红色「拒绝时意见不能为空」

TC-MEETING-012 合规审核越序拦截

  • 优先级P1
  • 前置M1 劳务轨未提交
  • 操作U02 对 M1 劳务轨点「通过」
  • 预期:红色提示「当前阶段不允许合规审核」

TC-MEETING-013 合规审核通过

  • 优先级P0
  • 前置M1 劳务轨已提交
  • 操作:U02 勾选劳务轨 → 填意见 →「通过」
  • 预期:绿色「审核完成」,劳务轨转为待支持方审(详情时间轴更新)

TC-MEETING-014 批量合规审核

  • 优先级P1
  • 前置M1、M2 均在合规审中
  • 操作:U02 会议列表勾选 M1、M2 →「批量审核」→ 选「通过」→ 填意见 → 确定
  • 预期:绿色「批量审核完成, 成功 2 个」;选「退回」不填意见提示「退回时意见不能为空」

TC-MEETING-015 支持方监察——非监察员只读

  • 优先级P0
  • 操作
    1. U07(非本项目监察员)打开 M1 详情
    2. U08(本项目监察员)打开 M1 详情
  • 预期:U07 无「通过 / 拒绝」监察入口,操作区只读;U08 有监察入口(可操作,见 TC-MEETING-016

TC-MEETING-016 支持方审核通过

  • 优先级P0
  • 前置:M1 劳务轨已合规通过,U08 为监察员
  • 操作:U08 打开 M1 详情 → 勾选劳务轨 →「通过」→ 填监管意见
  • 预期:绿色「审核完成」,劳务轨状态变为「已通过」,时间轴展示监管意见

6. 参会人(ATTENDEE

TC-ATTENDEE-001 邀请函打开即报名

  • 优先级P0
  • 前置:医生 U03 收到 M1 参会邀请(站内信带邀请链接)
  • 操作:点邀请链接打开「会议邀请函」页(/doctor/invitation/:attendeeId
  • 预期:正常展示邀请函(称谓「尊敬的 王医生:」+ 正文 + 落款「北京整合医学学会」);该医生在「我报名的项目」里出现该项目

TC-ATTENDEE-002 邀请函越权/无效拦截

  • 优先级P1
  • 操作:用非本人参会链接、或无效参会链接,在浏览器打开邀请函页
  • 预期:红色提示加载失败,无法查看邀请函内容

TC-ATTENDEE-003 新增参会人(含手机号回填)

  • 优先级P0
  • 入口:U02 打开 M1 详情 → 劳务材料 tab →「+ 新增参会人」
  • 操作:填手机号后点放大镜 → 回填专家信息(「已回填专家信息」);补全必填字段 → 保存
  • 预期:绿色「已添加」,列表新增该参会人;手机号空「请先输入手机号」、格式错「手机号格式不正确」、查无「未找到该手机号对应的专家」

TC-ATTENDEE-004 新增参会人必填校验

  • 优先级P1
  • 操作:新增参会人弹窗逐项清空提交
  • 预期:手机号「请填写联系方式」、姓名「请填写姓名」、医院「请填写医院」、身份证「请填写身份证号」/「身份证号应为18位(末位可为X)」、身份证附件「请上传身份证附件」、科室「请选择科室」、职称「请选择职称」、银行「请填写银行」、银行卡号「请填写银行卡号码」、开户行「请填写开户行」、账户名称「请填写账户名称」、开户行地址「请填写开户行地址」、银行详细地址「请填写银行详细地址」、角色「请选择角色」、应发金额「请填写应发金额」、个税「请填写个税税金」、增值税「请填写增值税附加」、实发金额「请填写实发金额」

TC-ATTENDEE-005 参会人 diff 预检

  • 优先级P1
  • 前置:某参会人信息与专家档案不一致
  • 操作:编辑该参会人 → 保存
  • 预期:弹「检测到与专家档案不一致」二次确认框(确认提交/返回修改),确认后才落库;保存成功绿色「已保存」

TC-ATTENDEE-006 劳务已提交后不可改参会人

  • 优先级P0
  • 前置M1 劳务轨已提交
  • 操作:尝试编辑/删除参会人
  • 预期:红色提示「劳务已提交, 不能修改参会人」或操作按钮禁用

TC-ATTENDEE-007 参会人导入 dry-run / force

  • 优先级P2
  • 操作:参会人 tab「批量导入」→ 选择文件(未选文件「请先选择要导入的文件」)→ 上传
  • 预期:先 dry-run,无冲突直接入库;有冲突弹「检测到与专家档案不一致」确认 → 确认后落库并显示成功/失败明细

TC-ATTENDEE-008 sponsor 参会人脱敏

  • 优先级P0
  • 入口U08 打开 M1 详情 → 参会人
  • 操作:查看列表
  • 预期:姓名/手机号/银行卡/身份证打码(如「李明」「138***0005」「62220000」「1101011234」);操作区只读;电子签到表可点「脱敏预览」(无数据时「暂无可预览的脱敏数据」)

7. 材料与凭证(MATERIAL

TC-MATERIAL-001 凭证上传权限

  • 优先级P0
  • 操作
    1. U03 打开会议详情
    2. U02 打开会议详情 → 劳务凭证 / 会务凭证 → 上传凭证
  • 预期:U03 无凭证上传入口(只读);U02 上传成功绿色「保存成功」

TC-MATERIAL-002 会务/劳务打包下载权限

  • 优先级P1
  • 操作
    1. U03 查看会议详情/列表
    2. U02 对无会务材料的会议点「会务下载」;对有材料的会议点「会务下载 / 劳务下载」
  • 预期:U03 无「会务下载 / 劳务下载」入口;U02 无材料时提示「该会议暂无可下载的会务材料/劳务材料」,有材料时下载 zip 成功

TC-MATERIAL-003 会务材料目录模板 + 打包上传

  • 优先级P2
  • 操作:详情会务材料 tab「下载目录」→ 按目录放材料 → 压缩 → 上传
  • 预期:上传后进度轮询(「服务器处理中 x/y」),完成绿色「已回填 N 类会务材料」;目录结构不对「未在 zip 中找到会务材料目录, 请按下载模板的目录结构放置文件」

TC-MATERIAL-004 扫码拍照回传

  • 优先级P1
  • 前置:用 ry-h5 手机端扫码拍签到表/全景照
  • 操作:手机拍照 → 自动回传
  • 预期:会议详情材料区出现对应照片记录;异常「非法的拍照类型」「缺少照片 URL」

8. 费用与结算(SETTLE

TC-SETTLE-001 费用未汇总完成不能结算

  • 优先级P0
  • 前置:M2 两轨已通过、凭证已传,但费用汇总中
  • 操作U01 打开 M2 详情 →「结算」
  • 预期:红色「会议费用尚未汇总完成,无法结算」

TC-SETTLE-002 结算前置校验

  • 优先级P0
  • 前置M2(逐项制造缺失)
  • 操作:U01 打开 M2 详情,逐项触发「结算」
  • 预期:只通过一轨「劳务与会务材料都审核通过后才能结算」;已结算「会议已结算」;无凭证「请先上传劳务凭证与会务凭证」;只缺劳务「请先上传劳务凭证」;只缺会务「请先上传会务凭证」

TC-SETTLE-003 结算成功

  • 优先级P0
  • 前置M2 满足全部前置
  • 操作:U01 对 M2「结算」→ 确认弹窗「确认结算? 结算前请确保已上传劳务/会务付款凭证。」→ 确定
  • 预期:绿色「已结算」,会议状态变为已结算

TC-SETTLE-004 完结校验

  • 优先级P1
  • 操作:U01 对未结算会议点「完结」;对已完结会议再点「完结」;对合法会议点「完结」→ 确认「确认完结? 完结后会议流程终止」
  • 预期:红色「会议尚未结算, 不能完结」/「会议已完结」;合法完结绿色「已完结」

TC-SETTLE-005 解冻校验

  • 优先级P1
  • 操作:U01 对未冻结会议点「解冻」;对已冻结的 M3 点「解冻」→ 确认「确认解冻会议「M3」? 解冻后提交截止时间将重新计算。」
  • 预期:红色「会议未冻结, 无需解冻」;M3 解冻绿色「已解冻」,状态解除冻结

TC-SETTLE-006 审核轨迹

  • 优先级P2
  • 操作M1 详情查看右侧「材料审核时间轴」
  • 预期:按 会议已执行 → 执行方提交材料 → 合规审核 → 监察意见 → 会议结算 → 会议完结 展示各阶段状态与意见

9. 电子签(SIGN

TC-SIGN-001 医生签署劳务协议完整流程

  • 优先级P0
  • 入口:医生 U03 首页「待签署的协议」区(仅审核通过显示)→ 扫二维码或复制链接 → 手机端打开「填写劳务信息」页
  • 操作
    1. 填 姓名/工作单位/科室/账户名称(持卡人姓名)/身份证号/银行卡号/银行名称/开户行(支行)/身份证附件/劳务形式 → 点「下一步」
    2. 签署页点签名区「点击此处确认签名」→ 底部 Drawer 手写签名 →「确认」→「提交」
  • 预期
    • 未上传身份证附件 → 黄色「请上传身份证正反面」
    • 提交劳务信息 → 绿色「已保存, 即将进入签署页」跳签署页
    • 未签名直接提交 → 黄色「请先签名」
    • 提交成功 → 跳「签字成功」页(签字成功 / 劳务协议已生成),该条从待签署列表消失
  • 备注:未受邀时显示「您暂未被邀请,请联系执会人员」

10. 策划方案(PLAN

TC-PLAN-001 投稿角色数据隔离

  • 优先级P0
  • 入口U03 登录 →「我的项目策划方案」
  • 操作:查看列表
  • 预期:只显示自己投稿的方案

TC-PLAN-002 新建投稿

  • 优先级P0
  • 操作:「新建投稿」→ 填策划方案名称/项目方向/项目形式/项目类别/设计文件/备注 → 保存或「保存并提交」
  • 预期:必填校验「请输入策划方案名称」「请选择项目方向」「请选择项目形式」「请选择项目类别」「请上传设计文件」;保存绿色「新建成功」,保存并提交绿色「已保存并提交审核」;sponsor 新建时无「保存并提交」按钮

TC-PLAN-003 提交/批量提交投稿

  • 优先级P0
  • 操作:单条点「提交」;批量勾选后「批量提交」
  • 预期:单条确认「确定要提交投稿「X」吗?提交后将进入审核流程」→ 绿色「已提交,等待审核」;批量确认「确定要批量提交选中的 N 条投稿吗?」→ 绿色「已提交 N 条」;未勾选「请先勾选要提交的投稿」;待审核/通过态不可再提交(无提交按钮)

TC-PLAN-004 管理端审核/结算

  • 优先级P1
  • 入口U02 登录 →「策划方案管理」
  • 操作:待审核方案点「审核」→ 选「通过/退回」→ 确认;已通过方案点「结算」
  • 预期:审核通过需填项目编号(空则「请填写项目编号」);绿色「已通过」/「已退回」;结算确认「您确定要结算吗?」→ 绿色「已结算」;批量退回「批量退回 N/M 条」、批量结算「批量结算 N/M 条」

11. 消息中心(MSG

TC-MSG-001 我的消息列表与未读

  • 优先级P1
  • 操作:任意角色点右上角铃铛 /「消息通知」菜单
  • 预期:显示消息列表(分类标签 + 标题 + 摘要 + 时间)+ 未读圆点;有未读时顶部显示「全部已读」

TC-MSG-002 全部已读

  • 优先级P1
  • 操作:点「全部已读」
  • 预期:静默完成,未读圆点消失、铃铛角标清零(无 Toast);失败红色「全部已读失败, 请重试」

TC-MSG-003 单条已读(点击即读)

  • 优先级P1
  • 操作:点击某条未读消息
  • 预期:打开详情弹窗(标题「消息详情」或消息标题),该条未读圆点消失、角标自动减一(静默无 Toast)

TC-MSG-004 消息详情与链接

  • 优先级P1
  • 操作:打开一条含链接的消息详情
  • 预期:显示二维码 + 「打开链接」「复制链接」;复制成功绿色「链接已复制」;类型为会议邀请的消息直接跳「会议邀请函」页

TC-MSG-005 管理员发送校验

  • 优先级P1
  • 入口U01「消息通知」→「发送」
  • 操作:不填接收人 / 不填标题 → 发送
  • 预期:红色「接收人不能为空」/「标题不能为空」;合法发送成功

TC-MSG-006 SSE 推送与角标

  • 优先级P1
  • 操作:U03 登录保持在线;管理员给 U03 发一条消息
  • 预期:U03 右上角弹绿色通知「您有新的通知」(共 N 条未读 / 点击右上角铃铛查看详情),铃铛角标 +1,消息列表静默刷新;U03 自己点「全部已读」→ 不弹通知、角标清零

TC-MSG-007 消息归属

  • 优先级P1
  • 操作:U02 与 U03 分别登录 → 打开「消息通知」列表
  • 预期:U02 列表只出现发给 U02 的消息,看不到 U03 的消息;U03 同理(相互隔离)

12. 公示意向(INTENT

TC-INTENT-001 公示页匿名意向

  • 优先级P1
  • 入口:门户「项目公示」→ 某公示详情
  • 操作:点「公益支持」→ 弹匿名意向框填 姓名/手机号/工作单位(部门/职务选填)→「提交意向」;点「项目执行申请」同理
  • 预期:分别绿色「已记录您的支持意向」「已记录您的执行意向」;两类意向分别记录、互不混入登录用户数据

TC-INTENT-002 意向必填校验

  • 优先级P1
  • 操作:公示详情提交意向时逐项清空
  • 预期:姓名「请输入姓名」、手机号「请输入手机号」、工作单位「请输入工作单位名称」

TC-INTENT-003 重复意向拦截

  • 优先级P1
  • 操作:同一手机号再次提交
  • 预期:红色「您已提交过该意向」

TC-INTENT-004 意向管理列表

  • 优先级P2
  • 入口U02 →「支持意向」/「执行意向」
  • 操作:查看、筛选、导出
  • 预期:列表列「项目编号 / 意向项目名称 / 姓名 / 工作单位 / 部门 / 职务 / 手机号 / 账号状态(存在/不存在) / 创建时间」;导出绿色「导出成功」;「审核状态」「操作」列当前被隐藏(记录,见 §0.5)

13. 执行意向报名(EXEC-INTENT

TC-EXECINTENT-001 医生报名项目

  • 优先级P0
  • 入口:U03 登录 → 公示详情「立即报名」(或「我报名的项目」入口)
  • 操作:点「立即报名」
  • 预期:绿色「报名成功」,项目出现在「我报名的项目」列表;未登录点报名提示「请先登录系统」

TC-EXECINTENT-002 重复报名拦截

  • 优先级P1
  • 操作:U03 对已报名项目,在公示详情查看报名按钮;在「我报名的项目」列表确认该项目已存在
  • 预期:公示详情报名按钮不再可点(显示「已报名」或隐藏报名入口);「我报名的项目」列表中该项目已存在

TC-EXECINTENT-003 报名参数异常

  • 优先级P1
  • 操作:通过异常链接/参数报名(缺项目、项目不存在)
  • 预期:红色「项目ID缺失,无法报名」/「项目ID不能为空」/「项目ID格式错误」

14. 公示门户(PUBLIC

TC-PUBLIC-001 平台协议文章

  • 优先级P1
  • 入口:门户注册/登录页底部「《用户协议》」「《隐私政策》」
  • 操作:点开(#/article/agreement / #/article/privacy
  • 预期:正常展示文章内容与「最后更新」时间

TC-PUBLIC-002 专项计划公开详情

  • 优先级P1
  • 入口:门户首页「八大专项计划」卡片 →「查看详情」(#/special-plan/:id
  • 操作:未登录点开;已登录点开;点一个不存在的链接
  • 预期:未登录跳登录页(登录后回跳);已登录正常展示;不存在红色「专项计划不存在」

TC-PUBLIC-003 招标公告

  • 优先级P1
  • 操作:公示详情(招标项目)点「查看招标公告」;无项目编号时;无公告时
  • 预期:正常展示;缺编号红色「缺少项目编号」;无公告红色「未查到该项目的招标公告」

TC-PUBLIC-004 支持函 / 邀请函公开查看

  • 优先级P1
  • 入口:门户「支持函」「邀请函」列表页
  • 操作:点开详情 / 预览 / 模板 / QR / 分享
  • 预期:正常展示盖章文档、模板、二维码、分享链接

15. 忘记密码(FORGOT

TC-FORGOT-001 忘记密码发码

  • 优先级P0
  • 入口:登录页「忘记密码」弹窗
  • 操作:输错格式手机号 → 发码;输未注册手机号 → 发码;输已注册手机号 → 发码
  • 预期:分别黄色「请输入正确的手机号」、红色「该手机号未注册, 请先注册账号」、绿色「验证码已发送」

TC-FORGOT-002 重置密码校验

  • 优先级P1
  • 操作:重置弹窗逐项触发
  • 预期:手机号错「请输入正确的手机号」、验证码空「请输入短信验证码」、密码短「密码长度 6-20 位」、两次不一致「两次密码输入不一致」、未注册「该手机号未注册」

TC-FORGOT-003 重置成功

  • 优先级P0
  • 操作:填新密码 → 提交
  • 预期:绿色「密码重置成功, 请用新密码登录」;用新密码可登录;失败「密码重置失败」

16. 后台统计 / 仪表盘(DASHBOARD

TC-DASH-001 经理工作台统计

  • 优先级P1
  • 入口U02 登录 →「工作台」
  • 操作:查看 5 张统计卡片
  • 预期:「项目总数量」「已结算数量」「已结题数量」「已执行会议」「未执行会议」数字正确;点击卡片跳转对应列表并带筛选

TC-DASH-002 各角色统计口径

  • 优先级P1
  • 操作:分别查看 admin/manager/executor/sponsor/leader 工作台统计卡片
  • 预期
    • admin系统用户总数 / 角色类型数 / 项目总数量 / 已结题项目 / 会议总数量 +「快捷入口」8 项
    • doctor 首页:欢迎栏「下午好,X专家」+「待签署的协议」区(仅审核通过显示)
    • manager/sponsor/leader:已执行会议口径 currentStageNotIn=NOT_STARTED,IN_PROGRESS
    • executor:已执行会议口径 currentStage=RUNNING(与其他角色不一致,记录)

17. 字典管理(DICT

TC-DICT-001 科室管理

  • 优先级P1
  • 入口U01 →「科室管理」
  • 操作:新增科室留空名称 → 保存;删除某科室
  • 预期:黄色「请输入科室名称」;删除确认「确定删除科室"X"? 该操作不可恢复」→ 绿色「删除成功」;停用/启用绿色「已停用」/「已启用」

TC-DICT-002 职称管理

  • 优先级P1
  • 入口U01 →「职称管理」
  • 操作:新增留空名称
  • 预期:黄色「请输入职称名称」;删除确认「确定删除职称"X"? 该操作不可恢复」

TC-DICT-003 写操作 admin-only

  • 优先级P0
  • 操作U02 登录查看菜单
  • 预期:无「科室管理」「职称管理」「项目类别管理」菜单入口(仅 admin);下拉选择(专家/参会人表单)读取开放

18. 后台配置(ADMIN-CONFIG

TC-CFG-001 后台建用户权限

  • 优先级P0
  • 入口U01 →「用户管理」→「新建用户」
  • 操作
    1. U02 登录查看侧栏菜单
    2. U01 新建用户逐项留空/填错
  • 预期:U02 无「用户管理」菜单;U01 依次提示「请选择角色」「请填写登录账号」「请填写密码」「请填写单位名称」「请选择所属单位」「请填写姓名」;账号非法「登录账号需 4-20 位字母/数字/下划线」、重复「登录账号已存在」/「手机号已存在」/「邮箱已存在」;新建成功绿色「新建成功」

TC-CFG-002 专项计划管理

  • 优先级P1
  • 入口U01 →「专项计划管理」
  • 操作:新增/编辑/删除;查看门户
  • 预期:编辑字段 标题/内容类型(富文本/上传文件)/正文或文件/排序/状态;校验「请输入标题」「请输入正文」「请上传文件」;删除确认「确认删除「X」?」→「已删除」;启用项在门户「专项计划」可见

TC-CFG-003 劳务协议模板默认唯一

  • 优先级P1
  • 入口U01 →「劳务协议配置」
  • 操作:新建模板并「设为默认」→ 再设另一条为默认;尝试删除默认模板
  • 预期:「设为默认」确认「确认将"X"设为默认模板? 其他默认模板将自动取消」→ 绿色「已设为默认」;任意时刻仅一条默认;删除默认模板黄色「默认模板不能删除, 请先取消默认」;编辑字段 模板名「请输入模板名」、模板内容「请输入模板内容」

TC-CFG-004 协议文章管理

  • 优先级P2
  • 入口U01 →「协议管理」
  • 操作:编辑文章 标题/类型/状态/正文
  • 预期:校验「请输入标题」「请输入正文」;编辑时类型不可改;发布后门户 #/article/agreement|privacy 可见;无新增/删除按钮

19. 执行方 / 人员下拉(EXECUTOR / DROPDOWN

TC-DROPDOWN-001 项目分配下拉只出主账号/执行单位

  • 优先级P0
  • 入口U02「项目分配」→ 执行单位下拉
  • 操作:点开执行单位下拉
  • 预期:选项 label=单位名称(value=orgId),不含该单位下员工子账号;执行方侧「分配执行人」下拉仅列出执行人员(主账号标记「(管理员)」且 disabled)

TC-DROPDOWN-002 下拉模糊 / 精确搜索

  • 优先级P1
  • 操作:支持单位/执行单位下拉输入关键字筛选
  • 预期:按名称远程模糊匹配并回填

20. OA 集成(ECOLOGY

TC-ECOLOGY-001 生态项目搜索

  • 优先级P2
  • 入口:项目新建/编辑页「项目编号」下拉
  • 操作输入项目编号关键字搜索
  • 预期:返回泛微生态项目(编号(名称)),选中后回填项目名称等信息;异常红色「项目编号不能为空」「ecology 中未找到该项目编号」「ecology 数据源不可用」

附:用例统计与准出

  • 总用例数:约 100+ 条,覆盖 20 个功能模块(按界面入口组织)。
  • 覆盖角色:admin / manager / doctor / executor / sponsor / leader / 门户匿名。
  • 准出:P0 全 PassP1 Pass ≥ 98%;已知差异/风险项全部登记(§0.5 is_finished 结题缺陷、意向审核列隐藏、executor 已执行会议口径差异)。
  • 每条 Fail 需附:操作路径 + 截图(含红/绿提示文案)+ 预期文案 + 实际文案。

附 B:功能覆盖对照

功能模块 界面入口 状态
登录/注册/忘记密码 门户登录页、专家/执行方/支持方注册页
专家管理/审核 专家管理、专家审核
支持/执行单位管理 支持单位管理、执行单位管理
支持/执行单位人员 支持单位下人员、执行单位下人员、人员管理
项目管理/分配/评分/导出 项目管理、项目分配、项目详情
会议管理/审核/结算/冻结 会议管理、会议详情
参会人/签署/邀请 会议详情-参会人、医生签署流程
材料/凭证/打包下载 会议详情-材料
公示门户/意向/支持函/邀请函 门户项目公示、公示详情
策划方案 我的项目策划方案、策划方案管理
消息中心/SSE 消息通知、右上角铃铛
仪表盘统计 各角色工作台/首页
字典/专项计划/协议/劳务协议模板 科室/职称/专项计划/协议/劳务协议配置
执行方下拉 项目分配弹窗
OA 生态项目 项目编辑关联
平台基础设施(OSS/摄像头/验证码/通用) 附件上传、图形验证码 按需冒烟

说明:测试人员全程只在浏览器操作 ry-vue3 界面完成上述用例;「预期」为界面上弹出的红/绿/黄提示文案(逐字核对)。