diff --git a/docs/guides/role-uat/00-测试总说明.md b/docs/guides/role-uat/00-测试总说明.md new file mode 100644 index 00000000..623ccc1c --- /dev/null +++ b/docs/guides/role-uat/00-测试总说明.md @@ -0,0 +1,166 @@ +# CTMS 角色功能验收测试总说明 + +## 1. 测试目标 + +本测试文档包用于组织真实业务用户完成 CTMS 功能验收。测试对象包括 1 个系统管理员角色和 6 个项目内业务角色: + +- ADMIN:系统管理员 +- PM:项目负责人 +- CRA:临床监查员 +- PV:药物警戒 +- MEDICAL_REVIEW:医学审核 +- IMP:药品管理员 +- QA:质量稽查 + +测试重点不是验证接口实现细节,而是确认真实用户能否按自己的岗位职责完成日常工作,并确认系统能正确阻止越权操作。 + +## 2. 测试边界 + +本轮测试覆盖: + +- 登录、注册审核、账号启停、密码重置 +- 项目、中心、项目成员、CRA 绑定 +- 项目权限配置和权限变更生效 +- 项目总览、立项配置、里程碑 +- 受试者、访视、PDS、受试者历史 +- AE/SAE、PD、监查访视问题 +- 合同费用、付款节点、费用附件 +- 药品流向、物资、设备 +- 文档、附件、FAQ、知识库 +- 审计日志查看、筛选、导出 +- 项目锁定、停用用户、非项目成员访问等规则 + +本轮测试不覆盖: + +- 自动化测试脚本编写 +- 性能压测 +- 安全渗透测试 +- 生产数据迁移验证 +- 第三方系统集成验收 + +## 3. 测试环境 + +| 项目 | 内容 | +|---|---| +| 前端地址 | `http://localhost:8888` | +| 后端 API | 同域 `/api/v1/*` | +| 浏览器 | Chrome、Edge 或 Safari 最新稳定版 | +| 测试数据 | 使用本文档定义的 UAT 数据 | +| 数据隔离 | 不使用真实生产受试者、真实药品批号或真实合同金额 | + +测试前由 ADMIN 确认应用可访问,数据库已完成迁移,页面可以正常登录。 + +## 4. 测试账号 + +密码建议统一设置为 `Uat123456`,测试完成后由 ADMIN 统一禁用或重置。 + +| 账号 | 角色 | 项目成员 | 用途 | +|---|---|---|---| +| `uat-admin@example.com` | ADMIN | 不要求 | 系统治理、账号、项目、权限、审计 | +| `uat-pm@example.com` | PM | 是 | 项目负责人全流程 | +| `uat-cra@example.com` | CRA | 是 | 受试者、访视、监查问题 | +| `uat-pv@example.com` | PV | 是 | AE/SAE、风险问题 | +| `uat-medical@example.com` | MEDICAL_REVIEW | 是 | 医学审核、医学信息协作 | +| `uat-imp@example.com` | IMP | 是 | 药品、物资、设备 | +| `uat-qa@example.com` | QA | 是 | 稽查、审计、只读核查 | +| `uat-no-role@example.com` | 普通启用用户 | 否 | 非项目成员访问边界 | + +如环境已存在同名账号,ADMIN 可以复用,但必须确认账号状态为启用,角色和项目成员身份与上表一致。 + +## 5. UAT 基础数据 + +| 类型 | 编号或名称 | 说明 | +|---|---|---| +| 项目 | `UAT-CTMS-角色功能验收项目` | 所有角色共同使用 | +| 中心 1 | `UAT-中心-01` | 绑定 `uat-cra@example.com` | +| 中心 2 | `UAT-中心-02` | 用于中心切换和权限边界 | +| 受试者 1 | `UAT-SUBJ-001` | CRA 创建,后续访视和 AE 使用 | +| 受试者 2 | `UAT-SUBJ-002` | 用于状态流转 | +| 受试者 3 | `UAT-SUBJ-003` | 用于只读、历史和导出核查 | +| 药品批次 | `UAT-DRUG-BATCH-001` | IMP 药品流向测试 | +| 物资 | `UAT-MATERIAL-001` | IMP/QA 物资测试 | +| 设备 | `UAT-EQUIPMENT-001` | 设备管理测试 | +| 合同 | `UAT-CONTRACT-001` | PM 费用合同测试 | +| AE | `UAT-AE-001` | PV/医学审核测试 | +| PD | `UAT-PD-001` | 风险问题测试 | +| 监查问题 | `UAT-MONITOR-001` | CRA/QA 测试 | +| FAQ | `UAT-FAQ-001` | PM 维护、其他角色查看 | +| 知识库笔记 | `UAT-NOTE-001` | 医学审核/CRA/PV 协作 | + +测试数据命名必须保留 `UAT-` 前缀,便于审计日志筛选和测试结束后清理。 + +## 6. 通用执行规则 + +1. 每个角色使用自己的账号登录,不共用浏览器会话。 +2. 切换角色前退出登录,或使用无痕窗口。 +3. 每个场景执行前确认当前项目为 `UAT-CTMS-角色功能验收项目`。 +4. 需要验证权限边界时,必须记录系统表现:按钮不可见、按钮禁用、提交后提示权限不足,或自动跳转。 +5. 写操作完成后刷新页面,确认数据仍存在。 +6. 涉及审计的操作完成后,由 ADMIN 或 QA 在审计日志中核查。 +7. 若前置数据不存在,先回到 ADMIN 或 PM 手册补齐,不直接修改本角色测试步骤。 + +## 7. 结果判定 + +| 结果 | 判定标准 | +|---|---| +| 通过 | 用户按步骤完成操作,结果与期望一致,刷新后数据保持一致 | +| 失败 | 页面报错、数据错误、权限放行/拦截不符合期望 | +| 阻塞 | 测试无法继续,例如账号不可用、项目不可见、基础数据缺失 | +| 不适用 | 当前版本页面未提供对应入口,且产品确认本轮不验收 | + +失败和阻塞必须记录截图、账号、时间、项目、操作路径和实际提示。 + +## 8. 缺陷记录格式 + +```markdown +### 缺陷编号:UAT-角色-序号 + +- 测试角色: +- 测试账号: +- 测试时间: +- 所属项目: +- 操作路径: +- 前置条件: +- 操作步骤: +- 期望结果: +- 实际结果: +- 截图或附件: +- 严重程度:阻塞 / 高 / 中 / 低 +- 是否可复现:是 / 否 +``` + +## 9. 场景模板 + +各角色手册统一使用以下格式: + +```markdown +### 场景 X:场景名称 + +适用角色: +前置条件: +操作路径: + +测试步骤: +1. +2. +3. + +测试数据: +- + +期望结果: +- + +通过标准: +- +``` + +## 10. 验收完成标准 + +本轮角色功能验收完成需同时满足: + +- ADMIN 手册全部核心场景通过。 +- PM、CRA、PV、MEDICAL_REVIEW、IMP、QA 每个角色至少完成主流程和权限边界测试。 +- 权限与规则交叉清单中高风险规则全部通过。 +- 所有失败项均已登记,阻塞项已明确责任和后续处理方式。 +- 测试负责人确认不再有影响继续验收的环境问题。 diff --git a/docs/guides/role-uat/01-ADMIN-系统管理员测试手册.md b/docs/guides/role-uat/01-ADMIN-系统管理员测试手册.md new file mode 100644 index 00000000..34fdcb5b --- /dev/null +++ b/docs/guides/role-uat/01-ADMIN-系统管理员测试手册.md @@ -0,0 +1,320 @@ +# ADMIN 系统管理员测试手册 + +## 1. 角色定位 + +ADMIN 负责系统级治理,包括账号、项目、中心、成员、权限和审计。ADMIN 不是项目岗位角色,但必须能完成项目初始化,并具备项目内 PM 操作的兜底访问能力。 + +## 2. 测试前置 + +- 使用 `uat-admin@example.com` 登录。 +- 确认账号状态为启用。 +- 参考 `00-测试总说明.md` 准备 UAT 数据。 +- 每个高风险操作执行后记录审计日志是否生成。 + +## 3. 核心场景 + +### 场景 1:登录并进入管理后台 + +适用角色:ADMIN +前置条件:管理员账号已启用。 +操作路径:登录页 -> 管理后台。 + +测试步骤: +1. 打开系统登录页。 +2. 输入 `uat-admin@example.com` 和测试密码。 +3. 点击登录。 +4. 确认进入管理后台或可从导航进入管理后台。 + +测试数据: +- 账号:`uat-admin@example.com` + +期望结果: +- 登录成功。 +- 可看到账号管理、项目管理、权限管理、审计日志等入口。 +- 未选择项目时不影响系统级管理功能。 + +通过标准: +- ADMIN 无需项目成员身份即可访问管理后台。 + +### 场景 2:创建或确认测试用户 + +适用角色:ADMIN +前置条件:已进入账号管理。 +操作路径:管理后台 -> 账号管理。 + +测试步骤: +1. 进入账号管理列表。 +2. 搜索 `uat-pm@example.com`。 +3. 若账号不存在,点击新建用户。 +4. 填写邮箱、姓名、角色、科室和初始密码。 +5. 保存后确认用户状态为启用。 +6. 按同样方式确认 CRA、PV、MEDICAL_REVIEW、IMP、QA、无项目角色用户。 + +测试数据: +- `uat-pm@example.com`:PM +- `uat-cra@example.com`:CRA +- `uat-pv@example.com`:PV +- `uat-medical@example.com`:MEDICAL_REVIEW +- `uat-imp@example.com`:IMP +- `uat-qa@example.com`:QA +- `uat-no-role@example.com`:普通启用用户或任一非项目成员账号 + +期望结果: +- 所有测试用户存在且状态为启用。 +- 用户角色与总说明一致。 +- 用户创建或更新操作写入审计日志。 + +通过标准: +- 每个角色账号均可用于后续登录测试。 + +### 场景 3:审核自助注册用户 + +适用角色:ADMIN +前置条件:存在一个待审核注册用户。 +操作路径:登录页 -> 注册;管理后台 -> 用户审核。 + +测试步骤: +1. 退出 ADMIN。 +2. 在注册页提交一个测试账号,例如 `uat-pending@example.com`。 +3. 返回 ADMIN 登录。 +4. 进入用户审核页面。 +5. 找到待审核用户。 +6. 点击通过。 +7. 退出后使用该用户登录。 + +测试数据: +- 注册账号:`uat-pending@example.com` + +期望结果: +- 注册后用户状态为待审核,不能直接登录。 +- ADMIN 审核通过后用户可以登录。 +- 审核动作写入审计日志。 + +通过标准: +- 待审核用户被正确拦截,审核通过后状态正确变更。 + +### 场景 4:禁用用户并验证登录拦截 + +适用角色:ADMIN +前置条件:存在启用状态测试用户。 +操作路径:管理后台 -> 账号管理。 + +测试步骤: +1. 搜索 `uat-no-role@example.com`。 +2. 执行禁用操作。 +3. 退出 ADMIN。 +4. 使用 `uat-no-role@example.com` 登录。 +5. 返回 ADMIN,将该用户重新启用。 + +测试数据: +- 用户:`uat-no-role@example.com` + +期望结果: +- 禁用后该用户不能登录或不能继续访问系统。 +- 重新启用后可恢复登录。 +- 禁用和启用动作写入审计日志。 + +通过标准: +- 用户状态能正确控制登录访问。 + +### 场景 5:创建 UAT 项目 + +适用角色:ADMIN +前置条件:ADMIN 已登录。 +操作路径:管理后台 -> 项目管理 -> 新建项目。 + +测试步骤: +1. 进入项目管理。 +2. 点击新建项目。 +3. 填写项目名称、编号、申办方、适应症等必填信息。 +4. 保存。 +5. 返回项目列表搜索该项目。 + +测试数据: +- 项目名称:`UAT-CTMS-角色功能验收项目` +- 项目编号:`UAT-CTMS-RUAT-001` + +期望结果: +- 项目创建成功。 +- 项目列表可查询到该项目。 +- 项目详情显示与输入一致。 +- 项目创建动作写入审计日志。 + +通过标准: +- 后续角色可选择该项目或被加入该项目。 + +### 场景 6:创建中心并绑定 CRA + +适用角色:ADMIN +前置条件:UAT 项目已存在,CRA 用户已启用。 +操作路径:管理后台 -> 项目管理 -> 项目详情 -> 中心管理。 + +测试步骤: +1. 进入 UAT 项目的中心管理。 +2. 新建 `UAT-中心-01`。 +3. 填写机构名称、中心编号、PI、联系电话等字段。 +4. 保存。 +5. 新建 `UAT-中心-02`。 +6. 在中心 CRA 绑定页面,将 `uat-cra@example.com` 绑定到 `UAT-中心-01`。 + +测试数据: +- 中心 1:`UAT-中心-01` +- 中心 2:`UAT-中心-02` +- CRA:`uat-cra@example.com` + +期望结果: +- 两个中心创建成功。 +- `UAT-中心-01` 显示已绑定 CRA。 +- 中心创建和 CRA 绑定动作写入审计日志。 + +通过标准: +- CRA 后续能看到或使用绑定中心完成受试者测试。 + +### 场景 7:添加项目成员并分配 6 个项目角色 + +适用角色:ADMIN +前置条件:UAT 项目和测试用户均已存在。 +操作路径:管理后台 -> 权限管理 -> 项目权限配置 -> 成员。 + +测试步骤: +1. 进入 UAT 项目的项目权限配置。 +2. 打开成员配置。 +3. 添加 PM、CRA、PV、MEDICAL_REVIEW、IMP、QA 六个账号。 +4. 分别设置对应项目角色。 +5. 确认 `uat-no-role@example.com` 不在项目成员中。 + +测试数据: +- 参考总说明测试账号表。 + +期望结果: +- 六个业务角色均成为 UAT 项目成员。 +- 每个成员角色正确。 +- 非项目成员账号不在项目成员列表中。 +- 成员变更写入审计日志。 + +通过标准: +- 六个业务角色后续可进入项目工作区。 + +### 场景 8:查看和调整项目权限矩阵 + +适用角色:ADMIN +前置条件:UAT 项目已有成员。 +操作路径:管理后台 -> 权限管理 -> 项目权限配置。 + +测试步骤: +1. 进入项目权限配置。 +2. 查看角色权限矩阵。 +3. 确认 PM 权限全部放行。 +4. 临时关闭 CRA 的“创建参与者”权限。 +5. 保存权限。 +6. 使用 CRA 登录,尝试创建受试者。 +7. 返回 ADMIN,恢复 CRA 的“创建参与者”权限并保存。 +8. 使用 CRA 再次验证创建受试者入口恢复。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` +- 角色:CRA +- 权限:创建参与者 + +期望结果: +- PM 权限不可被实际削弱或始终具备项目内全权限。 +- CRA 权限关闭后无法创建受试者。 +- CRA 权限恢复后可继续创建受试者。 +- 权限变更写入审计日志。 + +通过标准: +- 权限变更能被真实角色用户感知,且不会破坏 PM 全权限规则。 + +### 场景 9:锁定和解锁项目 + +适用角色:ADMIN +前置条件:UAT 项目未锁定。 +操作路径:管理后台 -> 项目管理 -> 项目详情。 + +测试步骤: +1. 打开 UAT 项目详情。 +2. 执行锁定项目。 +3. 使用 PM 或 CRA 登录并进入项目。 +4. 尝试执行一个写操作,例如新建受试者或保存立项配置。 +5. 返回 ADMIN 解锁项目。 +6. 使用同一角色再次尝试写操作。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 锁定后项目只读或写操作被明确阻止。 +- 解锁后写操作恢复。 +- 锁定和解锁动作写入审计日志。 + +通过标准: +- 项目锁定规则对所有项目角色生效。 + +### 场景 10:查看和导出审计日志 + +适用角色:ADMIN +前置条件:已完成若干账号、项目、权限或业务操作。 +操作路径:管理后台 -> 审计日志。 + +测试步骤: +1. 进入审计日志。 +2. 按操作人筛选 `uat-admin@example.com`。 +3. 按对象或事件筛选项目、用户、权限变更记录。 +4. 设置时间范围。 +5. 导出系统审计日志。 +6. 如支持项目审计,选择 UAT 项目导出项目审计日志。 + +测试数据: +- 操作人:`uat-admin@example.com` +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 审计日志列表可按条件筛选。 +- 导出前出现敏感信息确认提示。 +- 导出文件包含筛选范围内的关键操作。 + +通过标准: +- 管理员能追溯用户、项目、权限、锁定等关键动作。 + +### 场景 11:验证 ADMIN 项目内兜底权限 + +适用角色:ADMIN +前置条件:UAT 项目已存在,ADMIN 未必是项目成员。 +操作路径:项目工作区 -> 项目总览 / 受试者 / 费用 / 立项配置。 + +测试步骤: +1. 以 ADMIN 身份进入 UAT 项目。 +2. 查看项目总览。 +3. 尝试进入受试者管理。 +4. 尝试进入合同费用管理。 +5. 尝试进入立项配置或里程碑页面。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- ADMIN 可访问项目内主要页面。 +- ADMIN 不因缺少项目成员身份被拒绝。 +- ADMIN 写操作能力与 PM 保持一致。 + +通过标准: +- ADMIN 具备系统治理和项目内兜底能力。 + +## 4. ADMIN 权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 待审核用户登录 | 被拒绝 | +| 禁用用户登录 | 被拒绝 | +| 非项目成员访问 UAT 项目 | 被拒绝或只能看到允许范围 | +| 项目锁定后业务写操作 | 被拒绝 | +| 权限关闭后对应角色操作 | 被拒绝 | +| 权限恢复后对应角色操作 | 恢复 | +| 审计日志导出 | 需要确认,且可追溯 | + +## 5. 完成标准 + +- 所有测试账号准备完成。 +- UAT 项目、中心、成员、权限准备完成。 +- 项目锁定、权限变更、审计日志三个高风险规则通过。 +- 后续 6 个项目角色可以开始业务验收。 diff --git a/docs/guides/role-uat/02-PM-项目负责人测试手册.md b/docs/guides/role-uat/02-PM-项目负责人测试手册.md new file mode 100644 index 00000000..0dbbdff2 --- /dev/null +++ b/docs/guides/role-uat/02-PM-项目负责人测试手册.md @@ -0,0 +1,279 @@ +# PM 项目负责人测试手册 + +## 1. 角色定位 + +PM 是项目内最高业务权限角色,负责项目主数据、里程碑、立项配置、费用、FAQ、项目成员协同和关键关闭/删除动作。项目内权限规则要求 PM 始终具备项目内全权限。 + +## 2. 测试前置 + +- 使用 `uat-pm@example.com` 登录。 +- 已被加入 `UAT-CTMS-角色功能验收项目`,项目角色为 PM。 +- UAT 项目未锁定。 +- 已存在 `UAT-中心-01` 和 `UAT-中心-02`。 + +## 3. 核心场景 + +### 场景 1:登录并进入 UAT 项目 + +适用角色:PM +前置条件:PM 账号启用且已加入项目。 +操作路径:登录页 -> 项目列表或当前项目 -> 项目总览。 + +测试步骤: +1. 使用 `uat-pm@example.com` 登录。 +2. 在项目列表中选择 `UAT-CTMS-角色功能验收项目`。 +3. 进入项目总览。 +4. 查看项目关键指标、中心、受试者和待办信息。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- PM 可进入项目。 +- 项目总览正常显示。 +- 无权限不足提示。 + +通过标准: +- PM 可以作为项目业务负责人进入项目工作区。 + +### 场景 2:维护立项配置草稿 + +适用角色:PM +前置条件:已进入 UAT 项目。 +操作路径:项目工作区 -> 立项配置或相关入口。 + +测试步骤: +1. 打开立项配置页面。 +2. 创建或编辑立项配置草稿。 +3. 填写项目基本信息、中心计划、访视窗口或药品配置等可编辑项。 +4. 保存草稿。 +5. 刷新页面后重新打开草稿。 + +测试数据: +- 配置名称:`UAT-SETUP-DRAFT-001` + +期望结果: +- 草稿保存成功。 +- 刷新后数据仍存在。 +- 保存动作写入审计日志。 + +通过标准: +- PM 可以维护项目配置草稿。 + +### 场景 3:发布和回滚立项配置 + +适用角色:PM +前置条件:存在可发布的立项配置草稿。 +操作路径:项目工作区 -> 立项配置。 + +测试步骤: +1. 打开已保存的配置草稿。 +2. 点击发布。 +3. 确认发布结果和版本号。 +4. 修改草稿并再次发布一个新版本。 +5. 执行回滚到上一版本。 +6. 查看当前生效版本。 + +测试数据: +- 版本 1:`UAT-SETUP-V1` +- 版本 2:`UAT-SETUP-V2` + +期望结果: +- 发布成功并生成版本记录。 +- 回滚后当前版本恢复到指定版本。 +- 发布和回滚动作写入审计日志。 + +通过标准: +- PM 可以控制项目配置版本生命周期。 + +### 场景 4:维护项目里程碑 + +适用角色:PM +前置条件:已进入 UAT 项目。 +操作路径:项目工作区 -> 项目里程碑。 + +测试步骤: +1. 打开项目里程碑页面。 +2. 新增或编辑一个里程碑。 +3. 设置计划日期、负责人和状态。 +4. 保存。 +5. 修改状态为已完成或延期。 + +测试数据: +- 里程碑:`UAT-MILESTONE-001` + +期望结果: +- 里程碑保存成功。 +- 状态变更后列表和详情一致。 +- 操作写入审计日志或项目历史。 + +通过标准: +- PM 可以维护项目计划节点。 + +### 场景 5:创建费用合同 + +适用角色:PM +前置条件:至少存在一个中心。 +操作路径:项目工作区 -> 合同费用管理 -> 新建。 + +测试步骤: +1. 进入合同费用管理。 +2. 点击新建合同。 +3. 填写合同编号、中心、金额、付款计划等必填信息。 +4. 保存。 +5. 返回列表查看合同。 +6. 进入详情核对字段。 + +测试数据: +- 合同编号:`UAT-CONTRACT-001` +- 中心:`UAT-中心-01` +- 合同金额:`10000` + +期望结果: +- 合同创建成功。 +- 列表和详情展示一致。 +- 合同创建动作写入审计日志。 + +通过标准: +- PM 可以维护费用合同。 + +### 场景 6:维护付款节点 + +适用角色:PM +前置条件:存在 `UAT-CONTRACT-001`。 +操作路径:项目工作区 -> 合同费用管理 -> 合同详情。 + +测试步骤: +1. 打开 `UAT-CONTRACT-001`。 +2. 新增第一个付款节点。 +3. 新增第二个付款节点。 +4. 编辑其中一个付款节点金额或日期。 +5. 删除一个测试付款节点。 + +测试数据: +- 节点 1:启动费,金额 `3000` +- 节点 2:入组费,金额 `7000` + +期望结果: +- 付款节点可新增、编辑和删除。 +- 合同详情中的金额汇总正确。 +- 操作写入审计日志。 + +通过标准: +- PM 可以完成费用分期维护。 + +### 场景 7:维护 FAQ + +适用角色:PM +前置条件:已进入 UAT 项目。 +操作路径:项目工作区 -> FAQ 或共享库相关入口。 + +测试步骤: +1. 打开 FAQ 页面。 +2. 新建 FAQ 分类。 +3. 新建问题 `UAT-FAQ-001`。 +4. 填写问题、答案、适用范围。 +5. 保存后编辑答案。 +6. 删除测试问题或测试分类。 + +测试数据: +- FAQ:`UAT-FAQ-001` + +期望结果: +- PM 可维护 FAQ 分类和内容。 +- 其他角色后续可查看。 +- 创建、编辑、删除动作写入审计日志。 + +通过标准: +- PM 可以维护项目知识问答。 + +### 场景 8:管理项目成员 + +适用角色:PM +前置条件:项目权限允许 PM 管理成员。 +操作路径:管理后台 -> 权限管理 -> 项目权限配置 -> 成员。 + +测试步骤: +1. 使用 PM 进入项目权限配置。 +2. 查看项目成员列表。 +3. 添加或移除一个测试成员。 +4. 修改该成员项目角色。 +5. 恢复到总说明要求的成员状态。 + +测试数据: +- 临时成员:`uat-no-role@example.com` + +期望结果: +- PM 可以查看和调整项目成员。 +- 成员变更后对应账号项目访问权限变化。 +- 成员变更写入审计日志。 + +通过标准: +- PM 具备项目成员管理能力。 + +### 场景 9:验证 PM 全权限规则 + +适用角色:PM +前置条件:ADMIN 尝试关闭某个 PM 权限或权限矩阵存在变更。 +操作路径:项目工作区多个模块。 + +测试步骤: +1. 进入受试者管理,确认可新建或编辑。 +2. 进入合同费用管理,确认可新建或编辑。 +3. 进入药品流向管理,确认可新建或编辑。 +4. 进入监查访视问题,确认可创建和关闭问题。 +5. 进入权限管理,确认可查看项目权限。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- PM 在项目内关键模块均可执行写操作。 +- 若权限矩阵页面显示 PM 权限,PM 权限应保持全部放行。 + +通过标准: +- PM 不被误降权。 + +### 场景 10:项目锁定后的写操作拦截 + +适用角色:PM +前置条件:ADMIN 已锁定 UAT 项目。 +操作路径:项目工作区 -> 任一写操作页面。 + +测试步骤: +1. 进入项目总览,确认仍可查看项目。 +2. 尝试保存立项配置。 +3. 尝试新建或编辑费用合同。 +4. 记录系统提示。 +5. 等 ADMIN 解锁项目后重复一次写操作。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 项目锁定后写操作被阻止。 +- 解锁后写操作恢复。 + +通过标准: +- 项目锁定规则对 PM 也生效。 + +## 4. PM 权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 项目总览 | 可查看 | +| 立项配置保存/发布/回滚 | 可执行 | +| 项目里程碑维护 | 可执行 | +| 合同费用维护 | 可执行 | +| 受试者和访视维护 | 可执行 | +| 药品和物资维护 | 可执行 | +| FAQ 维护 | 可执行 | +| 项目成员和权限配置 | 可执行 | +| 项目锁定后写操作 | 被阻止 | + +## 5. 完成标准 + +- PM 能完成项目内主流程。 +- PM 全权限规则通过。 +- 项目锁定对 PM 写操作生效。 +- PM 的关键写操作可被审计追溯。 diff --git a/docs/guides/role-uat/03-CRA-临床监查员测试手册.md b/docs/guides/role-uat/03-CRA-临床监查员测试手册.md new file mode 100644 index 00000000..bece05fb --- /dev/null +++ b/docs/guides/role-uat/03-CRA-临床监查员测试手册.md @@ -0,0 +1,274 @@ +# CRA 临床监查员测试手册 + +## 1. 角色定位 + +CRA 负责项目现场执行相关工作,重点验证中心查看、受试者、访视、PDS、受试者历史、监查问题、文档和附件。CRA 应能执行与临床监察相关的写操作,但不能管理项目权限、项目成员或高风险删除类操作。 + +## 2. 测试前置 + +- 使用 `uat-cra@example.com` 登录。 +- 已加入 `UAT-CTMS-角色功能验收项目`,项目角色为 CRA。 +- `UAT-中心-01` 已绑定该 CRA。 +- 项目未锁定。 + +## 3. 核心场景 + +### 场景 1:登录并进入项目 + +适用角色:CRA +前置条件:CRA 账号启用且已加入项目。 +操作路径:登录页 -> 项目列表 -> 项目总览。 + +测试步骤: +1. 使用 `uat-cra@example.com` 登录。 +2. 选择 `UAT-CTMS-角色功能验收项目`。 +3. 进入项目总览。 +4. 查看项目关键指标和中心信息。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- CRA 可进入项目。 +- 项目总览正常展示。 +- 无权限不足提示。 + +通过标准: +- CRA 可查看项目基础运行信息。 + +### 场景 2:查看中心并确认 CRA 绑定 + +适用角色:CRA +前置条件:`UAT-中心-01` 已绑定 CRA。 +操作路径:项目工作区 -> 中心相关入口或项目总览。 + +测试步骤: +1. 查看中心列表或中心信息。 +2. 找到 `UAT-中心-01`。 +3. 确认中心联系人或 CRA 绑定信息。 +4. 尝试编辑中心基础信息。 + +测试数据: +- 中心:`UAT-中心-01` + +期望结果: +- CRA 可查看中心信息。 +- CRA 不能编辑中心基础信息或提交后被提示权限不足。 + +通过标准: +- 中心读权限和写权限边界正确。 + +### 场景 3:创建受试者 + +适用角色:CRA +前置条件:项目未锁定,存在可用中心。 +操作路径:项目工作区 -> 参与者管理 -> 新建。 + +测试步骤: +1. 进入参与者管理。 +2. 点击新建。 +3. 选择 `UAT-中心-01`。 +4. 输入受试者编号 `UAT-SUBJ-001`。 +5. 填写筛选、入组或基线相关必填字段。 +6. 保存。 +7. 返回列表搜索该受试者。 + +测试数据: +- 受试者编号:`UAT-SUBJ-001` +- 中心:`UAT-中心-01` + +期望结果: +- 受试者创建成功。 +- 列表和详情页数据一致。 +- 创建动作写入审计日志。 + +通过标准: +- CRA 可完成受试者创建。 + +### 场景 4:更新受试者状态 + +适用角色:CRA +前置条件:存在 `UAT-SUBJ-001`。 +操作路径:项目工作区 -> 参与者管理 -> 受试者详情。 + +测试步骤: +1. 打开 `UAT-SUBJ-001` 详情。 +2. 编辑受试者状态。 +3. 将状态更新为入组或完成当前允许状态。 +4. 保存。 +5. 刷新详情页。 + +测试数据: +- 受试者:`UAT-SUBJ-001` + +期望结果: +- 状态更新成功。 +- 刷新后状态保持一致。 +- 状态变更写入审计日志或受试者历史。 + +通过标准: +- CRA 可维护受试者状态。 + +### 场景 5:创建和更新访视 + +适用角色:CRA +前置条件:存在 `UAT-SUBJ-001`,且有可用访视配置。 +操作路径:项目工作区 -> 参与者管理 -> 受试者详情 -> 访视。 + +测试步骤: +1. 打开 `UAT-SUBJ-001` 详情。 +2. 新建一次访视记录。 +3. 填写访视日期、访视类型和备注。 +4. 保存。 +5. 编辑访视备注并保存。 + +测试数据: +- 访视:`UAT-VISIT-001` + +期望结果: +- 访视创建和更新成功。 +- 访视记录展示在受试者详情中。 +- 操作写入审计日志或受试者历史。 + +通过标准: +- CRA 可维护访视信息。 + +### 场景 6:维护 PDS 或方案偏离 + +适用角色:CRA +前置条件:存在 `UAT-SUBJ-001`。 +操作路径:项目工作区 -> 风险问题 -> PD 或受试者详情 -> PDS。 + +测试步骤: +1. 进入 PD/PDS 页面。 +2. 新建 `UAT-PD-001`。 +3. 选择关联受试者和中心。 +4. 填写偏离类型、发生日期、描述和处理措施。 +5. 保存。 +6. 编辑处理措施。 + +测试数据: +- PD 编号:`UAT-PD-001` +- 受试者:`UAT-SUBJ-001` + +期望结果: +- PD/PDS 记录创建和更新成功。 +- 记录可在列表和详情中查看。 + +通过标准: +- CRA 可维护与现场执行相关的偏离记录。 + +### 场景 7:创建监查访视问题 + +适用角色:CRA +前置条件:存在可用中心。 +操作路径:项目工作区 -> 风险问题 -> 监查访视问题。 + +测试步骤: +1. 进入监查访视问题页面。 +2. 新建 `UAT-MONITOR-001`。 +3. 选择中心、问题分类、严重程度和责任人。 +4. 填写问题描述和整改要求。 +5. 保存。 +6. 修改问题状态或补充整改信息。 + +测试数据: +- 问题编号:`UAT-MONITOR-001` +- 中心:`UAT-中心-01` + +期望结果: +- 监查问题创建和更新成功。 +- 问题状态变化可追踪。 + +通过标准: +- CRA 可完成监查问题管理。 + +### 场景 8:上传附件或维护文档 + +适用角色:CRA +前置条件:存在受试者或监查问题记录。 +操作路径:相关详情页 -> 附件;或项目工作区 -> 文件版本管理。 + +测试步骤: +1. 打开 `UAT-SUBJ-001` 或 `UAT-MONITOR-001` 详情。 +2. 上传一个测试 PDF 或图片附件。 +3. 保存。 +4. 下载或预览附件。 +5. 如页面支持,编辑附件说明。 + +测试数据: +- 附件名称:`UAT-CRA-附件-001` + +期望结果: +- 附件上传成功。 +- 附件可查看或下载。 +- 附件操作写入审计日志。 + +通过标准: +- CRA 可完成现场文档或附件维护。 + +### 场景 9:查看费用合同但不能维护合同 + +适用角色:CRA +前置条件:PM 已创建 `UAT-CONTRACT-001`。 +操作路径:项目工作区 -> 合同费用管理。 + +测试步骤: +1. 进入合同费用管理。 +2. 打开 `UAT-CONTRACT-001`。 +3. 查看合同金额、中心和付款节点。 +4. 尝试新建或编辑合同。 + +测试数据: +- 合同:`UAT-CONTRACT-001` + +期望结果: +- CRA 可查看合同。 +- CRA 不能创建、编辑或删除合同,或提交后被权限拦截。 + +通过标准: +- 费用读写边界符合角色职责。 + +### 场景 10:权限边界验证 + +适用角色:CRA +前置条件:已登录并进入项目。 +操作路径:多个模块。 + +测试步骤: +1. 尝试进入项目权限配置。 +2. 尝试添加项目成员。 +3. 尝试删除受试者。 +4. 尝试删除中心。 +5. 尝试发布或回滚立项配置。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- CRA 不能配置权限。 +- CRA 不能管理项目成员。 +- CRA 不能执行 PM 专属删除、发布、回滚类操作。 + +通过标准: +- 越权操作被明确阻止。 + +## 4. CRA 权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 项目总览 | 可查看 | +| 中心信息 | 可查看,不可维护 | +| 受试者创建/更新 | 可执行 | +| 访视创建/更新 | 可执行 | +| PD/PDS 创建/更新 | 可执行 | +| 监查问题创建/更新/关闭 | 可执行 | +| 合同费用 | 可查看,不可维护合同主数据 | +| 项目成员和权限配置 | 不可执行 | +| 高风险删除 | 不可执行或仅允许明确授权范围 | + +## 5. 完成标准 + +- CRA 可完成现场监察主流程。 +- CRA 不能越权执行 PM 或 ADMIN 治理操作。 +- CRA 写操作可被审计追溯。 diff --git a/docs/guides/role-uat/04-PV-药物警戒测试手册.md b/docs/guides/role-uat/04-PV-药物警戒测试手册.md new file mode 100644 index 00000000..c0dd0a6f --- /dev/null +++ b/docs/guides/role-uat/04-PV-药物警戒测试手册.md @@ -0,0 +1,244 @@ +# PV 药物警戒测试手册 + +## 1. 角色定位 + +PV 负责药物安全相关信息处理,重点验证 AE/SAE、风险问题、医学相关信息查看和监查问题协作。PV 应能参与不良事件和部分风险问题处理,但不能维护项目成员、中心、费用合同、药品流向或项目配置。 + +## 2. 测试前置 + +- 使用 `uat-pv@example.com` 登录。 +- 已加入 `UAT-CTMS-角色功能验收项目`,项目角色为 PV。 +- 项目未锁定。 +- 至少存在一个受试者 `UAT-SUBJ-001`。 + +## 3. 核心场景 + +### 场景 1:登录并进入项目 + +适用角色:PV +前置条件:PV 账号启用且已加入项目。 +操作路径:登录页 -> 项目列表 -> 项目总览。 + +测试步骤: +1. 使用 `uat-pv@example.com` 登录。 +2. 选择 `UAT-CTMS-角色功能验收项目`。 +3. 进入项目总览。 +4. 查看项目基础信息。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- PV 可进入项目并查看总览。 +- 无权限不足提示。 + +通过标准: +- PV 可以访问项目基础信息。 + +### 场景 2:查看受试者信息 + +适用角色:PV +前置条件:存在 `UAT-SUBJ-001`。 +操作路径:项目工作区 -> 参与者管理。 + +测试步骤: +1. 打开参与者管理。 +2. 搜索 `UAT-SUBJ-001`。 +3. 进入受试者详情。 +4. 查看中心、状态、访视和医学相关信息。 +5. 尝试编辑受试者基础资料。 + +测试数据: +- 受试者:`UAT-SUBJ-001` + +期望结果: +- PV 可查看受试者详情。 +- PV 不能编辑受试者基础资料。 + +通过标准: +- 受试者信息对 PV 只读。 + +### 场景 3:创建 AE/SAE + +适用角色:PV +前置条件:存在受试者和中心。 +操作路径:项目工作区 -> 风险问题 -> AE/SAE。 + +测试步骤: +1. 进入 AE/SAE 页面。 +2. 点击新建。 +3. 选择 `UAT-SUBJ-001` 和 `UAT-中心-01`。 +4. 填写事件名称、发生日期、严重程度、处理措施和报告状态。 +5. 保存。 +6. 返回列表搜索 `UAT-AE-001`。 + +测试数据: +- AE 编号:`UAT-AE-001` +- 受试者:`UAT-SUBJ-001` +- 中心:`UAT-中心-01` + +期望结果: +- AE/SAE 创建成功。 +- 列表和详情展示一致。 +- 创建动作写入审计日志。 + +通过标准: +- PV 可创建药物安全相关事件。 + +### 场景 4:更新 AE/SAE + +适用角色:PV +前置条件:存在 `UAT-AE-001`。 +操作路径:项目工作区 -> 风险问题 -> AE/SAE -> 详情。 + +测试步骤: +1. 打开 `UAT-AE-001`。 +2. 编辑事件严重程度、处理措施或随访信息。 +3. 保存。 +4. 刷新详情页。 + +测试数据: +- AE:`UAT-AE-001` + +期望结果: +- 更新成功。 +- 刷新后数据保持一致。 +- 更新动作写入审计日志。 + +通过标准: +- PV 可维护 AE/SAE 处理信息。 + +### 场景 5:关闭 AE/SAE + +适用角色:PV +前置条件:存在开放状态 `UAT-AE-001`。 +操作路径:项目工作区 -> 风险问题 -> AE/SAE -> 详情。 + +测试步骤: +1. 打开 `UAT-AE-001`。 +2. 执行关闭或完成操作。 +3. 填写关闭原因或结论。 +4. 保存。 +5. 返回列表确认状态。 + +测试数据: +- AE:`UAT-AE-001` + +期望结果: +- AE 状态变为关闭或完成。 +- 关闭动作写入审计日志。 + +通过标准: +- PV 可完成 AE/SAE 生命周期处理。 + +### 场景 6:查看和协作处理监查问题 + +适用角色:PV +前置条件:存在 `UAT-MONITOR-001`。 +操作路径:项目工作区 -> 风险问题 -> 监查访视问题。 + +测试步骤: +1. 打开监查访视问题页面。 +2. 搜索 `UAT-MONITOR-001`。 +3. 查看问题详情。 +4. 如页面支持,补充 PV 相关说明或更新处理信息。 + +测试数据: +- 监查问题:`UAT-MONITOR-001` + +期望结果: +- PV 可查看监查问题。 +- 如权限允许,可更新与风险协作相关字段。 +- 不允许删除监查问题。 + +通过标准: +- PV 可参与风险问题协作,但不能执行 PM 专属删除。 + +### 场景 7:维护知识库笔记 + +适用角色:PV +前置条件:项目未锁定。 +操作路径:项目工作区 -> 共享库 -> 注意事项。 + +测试步骤: +1. 进入注意事项页面。 +2. 新建 `UAT-NOTE-001`。 +3. 填写标题、分类和内容。 +4. 保存。 +5. 编辑内容并保存。 +6. 尝试删除该笔记。 + +测试数据: +- 笔记:`UAT-NOTE-001` + +期望结果: +- PV 可创建和编辑知识库笔记。 +- PV 不能删除知识库笔记,或删除操作被权限拦截。 + +通过标准: +- 知识库协作权限和删除边界正确。 + +### 场景 8:附件上传边界 + +适用角色:PV +前置条件:存在 AE 或风险问题记录。 +操作路径:AE/SAE 详情 -> 附件。 + +测试步骤: +1. 打开 `UAT-AE-001` 详情。 +2. 上传一个安全性报告附件。 +3. 保存。 +4. 下载或预览附件。 +5. 尝试删除 CRA 上传的附件。 + +测试数据: +- 附件:`UAT-PV-安全性报告-001` + +期望结果: +- PV 可上传和查看附件。 +- 删除他人附件按系统规则被允许或被拒绝,实际结果需记录。 + +通过标准: +- 附件权限表现明确且可追溯。 + +### 场景 9:权限边界验证 + +适用角色:PV +前置条件:已登录并进入项目。 +操作路径:多个模块。 + +测试步骤: +1. 尝试新建受试者。 +2. 尝试维护费用合同。 +3. 尝试创建药品发货。 +4. 尝试进入项目成员管理。 +5. 尝试发布立项配置。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- PV 不能执行上述非职责范围操作。 +- 页面应隐藏入口、禁用按钮或提交后提示权限不足。 + +通过标准: +- PV 越权操作被明确阻止。 + +## 4. PV 权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 项目总览 | 可查看 | +| 受试者详情 | 可查看,不可维护基础资料 | +| AE/SAE 创建/更新/关闭 | 可执行 | +| 监查问题查看/协作 | 可执行授权范围内操作 | +| 知识库笔记创建/编辑 | 可执行 | +| 费用合同维护 | 不可执行 | +| 药品流向维护 | 不可执行 | +| 项目成员和权限配置 | 不可执行 | + +## 5. 完成标准 + +- PV 可完成药物警戒主流程。 +- PV 不能越权维护项目、费用、药品或受试者主数据。 +- PV 关键动作可被审计追溯。 diff --git a/docs/guides/role-uat/05-MEDICAL_REVIEW-医学审核测试手册.md b/docs/guides/role-uat/05-MEDICAL_REVIEW-医学审核测试手册.md new file mode 100644 index 00000000..ce1ef823 --- /dev/null +++ b/docs/guides/role-uat/05-MEDICAL_REVIEW-医学审核测试手册.md @@ -0,0 +1,219 @@ +# MEDICAL_REVIEW 医学审核测试手册 + +## 1. 角色定位 + +医学审核负责医学相关信息核查和专业协作,重点验证 AE/SAE、PD、医学咨询、知识库、受试者医学信息和风险问题查看。医学审核可以参与医学相关记录维护,但不能执行项目治理、费用、药品流向或受试者主数据维护。 + +## 2. 测试前置 + +- 使用 `uat-medical@example.com` 登录。 +- 已加入 `UAT-CTMS-角色功能验收项目`,项目角色为 MEDICAL_REVIEW。 +- 项目未锁定。 +- 至少存在 `UAT-SUBJ-001` 和 `UAT-AE-001`。 + +## 3. 核心场景 + +### 场景 1:登录并进入项目 + +适用角色:MEDICAL_REVIEW +前置条件:账号启用且已加入项目。 +操作路径:登录页 -> 项目列表 -> 项目总览。 + +测试步骤: +1. 使用 `uat-medical@example.com` 登录。 +2. 选择 `UAT-CTMS-角色功能验收项目`。 +3. 进入项目总览。 +4. 查看项目基础信息。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 医学审核可进入项目并查看总览。 +- 无权限不足提示。 + +通过标准: +- 医学审核可以访问项目基础信息。 + +### 场景 2:查看受试者医学相关信息 + +适用角色:MEDICAL_REVIEW +前置条件:存在 `UAT-SUBJ-001`。 +操作路径:项目工作区 -> 参与者管理 -> 受试者详情。 + +测试步骤: +1. 打开参与者管理。 +2. 搜索 `UAT-SUBJ-001`。 +3. 进入详情。 +4. 查看受试者状态、访视、AE/SAE、PD/PDS 和历史记录。 +5. 尝试编辑受试者基础资料。 + +测试数据: +- 受试者:`UAT-SUBJ-001` + +期望结果: +- 医学审核可查看受试者相关信息。 +- 医学审核不能编辑受试者基础资料。 + +通过标准: +- 医学审核具备医学判断所需读权限,但不能改主数据。 + +### 场景 3:查看和更新 AE/SAE 医学信息 + +适用角色:MEDICAL_REVIEW +前置条件:存在 `UAT-AE-001`。 +操作路径:项目工作区 -> 风险问题 -> AE/SAE。 + +测试步骤: +1. 进入 AE/SAE 页面。 +2. 搜索并打开 `UAT-AE-001`。 +3. 查看事件描述、严重程度、处理措施和随访信息。 +4. 如页面支持医学意见字段,填写医学审核意见。 +5. 保存。 + +测试数据: +- AE:`UAT-AE-001` +- 医学意见:`UAT-医学审核意见-001` + +期望结果: +- 医学审核可查看 AE/SAE 详情。 +- 授权范围内的医学意见可保存。 +- 操作写入审计日志或事件历史。 + +通过标准: +- 医学审核可完成医学专业协作。 + +### 场景 4:创建或维护风险问题 + +适用角色:MEDICAL_REVIEW +前置条件:存在受试者和中心。 +操作路径:项目工作区 -> 风险问题 -> AE/SAE 或监查访视问题。 + +测试步骤: +1. 进入风险问题页面。 +2. 新建一条医学相关风险记录,或打开已有记录。 +3. 填写医学描述、判断依据和建议措施。 +4. 保存。 +5. 返回列表确认记录。 + +测试数据: +- 风险记录:`UAT-MED-RISK-001` + +期望结果: +- 医学审核可在授权范围内创建或更新医学相关风险记录。 +- 删除操作不可执行或被权限拦截。 + +通过标准: +- 医学审核可参与风险处理,但不能执行 PM 专属删除。 + +### 场景 5:使用医学咨询 + +适用角色:MEDICAL_REVIEW +前置条件:项目未锁定。 +操作路径:项目工作区 -> 共享库 -> 医学咨询。 + +测试步骤: +1. 打开医学咨询页面。 +2. 查看咨询列表。 +3. 打开一条咨询详情。 +4. 如页面支持回复或记录意见,填写 `UAT-医学咨询回复-001`。 +5. 保存。 + +测试数据: +- 医学咨询回复:`UAT-医学咨询回复-001` + +期望结果: +- 医学审核可查看医学咨询。 +- 授权范围内可回复或维护医学意见。 + +通过标准: +- 医学咨询流程对医学审核可用。 + +### 场景 6:维护知识库笔记 + +适用角色:MEDICAL_REVIEW +前置条件:项目未锁定。 +操作路径:项目工作区 -> 共享库 -> 注意事项。 + +测试步骤: +1. 进入注意事项页面。 +2. 新建 `UAT-MED-NOTE-001`。 +3. 填写标题、分类和医学注意事项内容。 +4. 保存。 +5. 编辑内容。 +6. 尝试删除该笔记。 + +测试数据: +- 笔记:`UAT-MED-NOTE-001` + +期望结果: +- 医学审核可创建和编辑知识库笔记。 +- 删除操作不可执行或被权限拦截。 + +通过标准: +- 医学知识协作权限和删除边界正确。 + +### 场景 7:查看伦理和可行性信息 + +适用角色:MEDICAL_REVIEW +前置条件:PM 已创建伦理或可行性记录。 +操作路径:项目工作区 -> 立项与伦理。 + +测试步骤: +1. 打开立项与伦理页面。 +2. 查看可行性记录。 +3. 查看伦理记录。 +4. 尝试新建或编辑伦理记录。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 医学审核可查看伦理和可行性信息。 +- 医学审核不能新建、编辑或删除伦理记录。 + +通过标准: +- 医学审核可获取医学评估所需信息,但不能维护立项主流程。 + +### 场景 8:权限边界验证 + +适用角色:MEDICAL_REVIEW +前置条件:已登录并进入项目。 +操作路径:多个模块。 + +测试步骤: +1. 尝试新建受试者。 +2. 尝试维护合同费用。 +3. 尝试创建药品发货。 +4. 尝试进入项目成员管理。 +5. 尝试发布或回滚立项配置。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 医学审核不能执行非医学职责范围操作。 +- 越权操作被隐藏、禁用或提交后拦截。 + +通过标准: +- 医学审核权限边界清晰。 + +## 4. 医学审核权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 项目总览 | 可查看 | +| 受试者详情 | 可查看,不可维护基础资料 | +| AE/SAE 查看和医学协作 | 可执行授权范围内操作 | +| 医学咨询 | 可查看,可执行授权范围内协作 | +| 知识库笔记创建/编辑 | 可执行 | +| 伦理和可行性 | 可查看,不可维护 | +| 费用合同维护 | 不可执行 | +| 药品流向维护 | 不可执行 | +| 项目成员和权限配置 | 不可执行 | + +## 5. 完成标准 + +- 医学审核可完成医学信息查看和协作。 +- 医学审核不能越权维护业务主数据。 +- 医学审核关键写操作可被审计追溯。 diff --git a/docs/guides/role-uat/06-IMP-药品管理员测试手册.md b/docs/guides/role-uat/06-IMP-药品管理员测试手册.md new file mode 100644 index 00000000..d8d874c5 --- /dev/null +++ b/docs/guides/role-uat/06-IMP-药品管理员测试手册.md @@ -0,0 +1,244 @@ +# IMP 药品管理员测试手册 + +## 1. 角色定位 + +IMP 负责药品、物资和设备相关管理,重点验证药品发货、药品流向、物资、设备、预算和合同信息查看。IMP 不应维护受试者主数据、AE/SAE、项目成员、权限或立项配置。 + +## 2. 测试前置 + +- 使用 `uat-imp@example.com` 登录。 +- 已加入 `UAT-CTMS-角色功能验收项目`,项目角色为 IMP。 +- 项目未锁定。 +- 已存在 `UAT-中心-01` 和 `UAT-中心-02`。 + +## 3. 核心场景 + +### 场景 1:登录并进入项目 + +适用角色:IMP +前置条件:IMP 账号启用且已加入项目。 +操作路径:登录页 -> 项目列表 -> 项目总览。 + +测试步骤: +1. 使用 `uat-imp@example.com` 登录。 +2. 选择 `UAT-CTMS-角色功能验收项目`。 +3. 进入项目总览。 +4. 查看项目基础信息。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- IMP 可进入项目并查看总览。 +- 无权限不足提示。 + +通过标准: +- IMP 可以访问项目基础信息。 + +### 场景 2:查看中心信息 + +适用角色:IMP +前置条件:项目存在中心。 +操作路径:项目工作区 -> 项目总览或中心相关入口。 + +测试步骤: +1. 查看中心列表或中心信息。 +2. 打开 `UAT-中心-01`。 +3. 查看中心名称、编号、联系人和状态。 +4. 尝试编辑中心信息。 + +测试数据: +- 中心:`UAT-中心-01` + +期望结果: +- IMP 可查看中心信息。 +- IMP 不能维护中心主数据。 + +通过标准: +- 药品发货所需中心读权限可用,中心写权限受限。 + +### 场景 3:创建药品发货记录 + +适用角色:IMP +前置条件:存在可用中心。 +操作路径:项目工作区 -> 药品管理 -> 药品流向管理 -> 新建。 + +测试步骤: +1. 进入药品流向管理。 +2. 点击新建。 +3. 选择 `UAT-中心-01`。 +4. 填写药品批次 `UAT-DRUG-BATCH-001`、数量、发货日期和承运信息。 +5. 保存。 +6. 返回列表搜索该批次。 + +测试数据: +- 药品批次:`UAT-DRUG-BATCH-001` +- 中心:`UAT-中心-01` +- 数量:`10` + +期望结果: +- 药品发货记录创建成功。 +- 列表和详情展示一致。 +- 创建动作写入审计日志。 + +通过标准: +- IMP 可创建药品流向记录。 + +### 场景 4:更新药品发货记录 + +适用角色:IMP +前置条件:存在 `UAT-DRUG-BATCH-001` 发货记录。 +操作路径:项目工作区 -> 药品流向管理 -> 详情或编辑。 + +测试步骤: +1. 打开 `UAT-DRUG-BATCH-001` 发货记录。 +2. 修改承运信息、备注或收货状态。 +3. 保存。 +4. 刷新详情页。 + +测试数据: +- 药品批次:`UAT-DRUG-BATCH-001` + +期望结果: +- 更新成功。 +- 刷新后数据保持一致。 +- 更新动作写入审计日志。 + +通过标准: +- IMP 可维护药品流向。 + +### 场景 5:删除药品发货记录边界 + +适用角色:IMP +前置条件:存在药品发货记录。 +操作路径:项目工作区 -> 药品流向管理。 + +测试步骤: +1. 打开药品流向列表。 +2. 找到一条测试发货记录。 +3. 尝试删除。 +4. 记录系统表现。 + +测试数据: +- 药品批次:`UAT-DRUG-BATCH-001` + +期望结果: +- IMP 不能删除药品发货记录,或删除按钮不可见。 +- 如果系统允许删除,必须记录为待确认权限项。 + +通过标准: +- 删除类高风险操作符合权限矩阵。 + +### 场景 6:维护物资 + +适用角色:IMP +前置条件:项目未锁定。 +操作路径:项目工作区 -> 物资管理。 + +测试步骤: +1. 打开物资管理页面。 +2. 新建 `UAT-MATERIAL-001`。 +3. 填写名称、类型、数量、存放位置和备注。 +4. 保存。 +5. 编辑数量或备注。 + +测试数据: +- 物资:`UAT-MATERIAL-001` + +期望结果: +- 物资创建和更新成功。 +- 列表和详情展示一致。 + +通过标准: +- IMP 可维护物资信息。 + +### 场景 7:维护设备 + +适用角色:IMP +前置条件:项目未锁定。 +操作路径:项目工作区 -> 设备管理。 + +测试步骤: +1. 打开设备管理页面。 +2. 新建 `UAT-EQUIPMENT-001`。 +3. 填写设备名称、编号、中心、状态和校准信息。 +4. 保存。 +5. 编辑设备状态或备注。 +6. 尝试删除设备。 + +测试数据: +- 设备:`UAT-EQUIPMENT-001` + +期望结果: +- 设备创建和更新按权限执行。 +- 删除操作如果被拒绝,提示清晰;如果允许,需记录为权限确认项。 + +通过标准: +- IMP 设备管理权限表现清晰。 + +### 场景 8:查看预算和合同费用 + +适用角色:IMP +前置条件:PM 已创建 `UAT-CONTRACT-001`。 +操作路径:项目工作区 -> 合同费用管理;启动与授权或预算相关页面。 + +测试步骤: +1. 打开合同费用管理。 +2. 查看 `UAT-CONTRACT-001`。 +3. 查看合同金额、中心和付款节点。 +4. 尝试编辑合同。 +5. 打开预算或启动授权相关页面并查看记录。 + +测试数据: +- 合同:`UAT-CONTRACT-001` + +期望结果: +- IMP 可查看合同和预算相关信息。 +- IMP 不能维护合同主数据或付款节点。 + +通过标准: +- 财务相关读写边界正确。 + +### 场景 9:权限边界验证 + +适用角色:IMP +前置条件:已登录并进入项目。 +操作路径:多个模块。 + +测试步骤: +1. 尝试新建受试者。 +2. 尝试创建 AE/SAE。 +3. 尝试创建或关闭监查问题。 +4. 尝试进入项目成员管理。 +5. 尝试发布立项配置。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- IMP 不能执行非药品物资职责范围操作。 +- 越权操作被隐藏、禁用或提交后拦截。 + +通过标准: +- IMP 权限边界清晰。 + +## 4. IMP 权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 项目总览 | 可查看 | +| 中心信息 | 可查看,不可维护 | +| 药品发货创建/更新 | 可执行 | +| 药品发货删除 | 不可执行或需权限确认 | +| 物资维护 | 可执行 | +| 设备维护 | 可执行授权范围内操作 | +| 合同和预算 | 可查看,不可维护 | +| 受试者维护 | 不可执行 | +| AE/SAE 维护 | 不可执行 | +| 项目成员和权限配置 | 不可执行 | + +## 5. 完成标准 + +- IMP 可完成药品、物资、设备主流程。 +- IMP 不能越权维护临床、医学、费用或项目治理数据。 +- IMP 关键写操作可被审计追溯。 diff --git a/docs/guides/role-uat/07-QA-质量稽查测试手册.md b/docs/guides/role-uat/07-QA-质量稽查测试手册.md new file mode 100644 index 00000000..457598a7 --- /dev/null +++ b/docs/guides/role-uat/07-QA-质量稽查测试手册.md @@ -0,0 +1,247 @@ +# QA 质量稽查测试手册 + +## 1. 角色定位 + +QA 负责质量稽查、审计核查和只读监督,重点验证审计日志、监查稽查、文档、物资、受试者和 AE/SAE 的只读查看。QA 不应修改业务主数据,除非项目权限明确授权。 + +## 2. 测试前置 + +- 使用 `uat-qa@example.com` 登录。 +- 已加入 `UAT-CTMS-角色功能验收项目`,项目角色为 QA。 +- 项目未锁定。 +- 项目中已存在受试者、AE/SAE、药品流向、物资和审计日志。 + +## 3. 核心场景 + +### 场景 1:登录并进入项目 + +适用角色:QA +前置条件:QA 账号启用且已加入项目。 +操作路径:登录页 -> 项目列表 -> 项目总览。 + +测试步骤: +1. 使用 `uat-qa@example.com` 登录。 +2. 选择 `UAT-CTMS-角色功能验收项目`。 +3. 进入项目总览。 +4. 查看项目基础信息。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- QA 可进入项目并查看总览。 +- 无权限不足提示。 + +通过标准: +- QA 可以访问项目基础信息。 + +### 场景 2:查看审计日志 + +适用角色:QA +前置条件:项目已有审计记录。 +操作路径:管理后台 -> 审计日志,或项目审计入口。 + +测试步骤: +1. 进入审计日志页面。 +2. 按项目筛选 `UAT-CTMS-角色功能验收项目`。 +3. 按操作人筛选 `uat-pm@example.com` 或 `uat-cra@example.com`。 +4. 按操作类型筛选创建、更新、权限变更或导出记录。 +5. 打开一条审计详情。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- QA 可查看项目审计日志。 +- 筛选条件生效。 +- 审计详情包含时间、操作人、对象、动作和结果。 + +通过标准: +- QA 能完成项目审计追溯。 + +### 场景 3:导出审计日志 + +适用角色:QA +前置条件:存在可导出的审计记录。 +操作路径:审计日志 -> 导出。 + +测试步骤: +1. 设置项目和时间范围。 +2. 点击导出项目审计。 +3. 确认敏感信息导出提示。 +4. 打开导出文件。 +5. 核对文件中是否包含筛选范围内记录。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- 导出前有确认提示。 +- 导出成功。 +- 文件内容与筛选条件一致。 +- 导出动作本身写入审计日志。 + +通过标准: +- QA 可完成审计导出并保留导出留痕。 + +### 场景 4:查看受试者和访视 + +适用角色:QA +前置条件:存在 `UAT-SUBJ-001`。 +操作路径:项目工作区 -> 参与者管理。 + +测试步骤: +1. 打开参与者管理。 +2. 搜索 `UAT-SUBJ-001`。 +3. 进入受试者详情。 +4. 查看访视、状态、附件和历史记录。 +5. 尝试编辑受试者基础资料。 +6. 尝试新建访视。 + +测试数据: +- 受试者:`UAT-SUBJ-001` + +期望结果: +- QA 可查看受试者和访视。 +- QA 不能编辑受试者或新建访视。 + +通过标准: +- 受试者和访视对 QA 为只读。 + +### 场景 5:查看 AE/SAE 和风险问题 + +适用角色:QA +前置条件:存在 `UAT-AE-001` 和 `UAT-MONITOR-001`。 +操作路径:项目工作区 -> 风险问题。 + +测试步骤: +1. 打开 AE/SAE 页面。 +2. 查看 `UAT-AE-001` 详情。 +3. 打开监查访视问题页面。 +4. 查看 `UAT-MONITOR-001` 详情。 +5. 尝试编辑或关闭问题。 + +测试数据: +- AE:`UAT-AE-001` +- 监查问题:`UAT-MONITOR-001` + +期望结果: +- QA 可查看风险问题详情。 +- QA 不能编辑、关闭或删除风险问题,除非项目权限明确授权。 + +通过标准: +- 风险问题对 QA 的只读边界正确。 + +### 场景 6:查看药品流向、物资和设备 + +适用角色:QA +前置条件:存在药品流向、物资和设备记录。 +操作路径:项目工作区 -> 药品管理 / 物资管理 / 设备管理。 + +测试步骤: +1. 打开药品流向管理。 +2. 查看 `UAT-DRUG-BATCH-001`。 +3. 打开物资管理,查看 `UAT-MATERIAL-001`。 +4. 打开设备管理,查看 `UAT-EQUIPMENT-001`。 +5. 尝试编辑任一记录。 + +测试数据: +- 药品批次:`UAT-DRUG-BATCH-001` +- 物资:`UAT-MATERIAL-001` +- 设备:`UAT-EQUIPMENT-001` + +期望结果: +- QA 可查看药品、物资和设备信息。 +- QA 不能编辑药品、物资或设备。 + +通过标准: +- QA 可完成质量核查所需查看,不能改业务数据。 + +### 场景 7:查看文档和附件 + +适用角色:QA +前置条件:项目中存在文档或附件。 +操作路径:项目工作区 -> 文件版本管理;相关详情页 -> 附件。 + +测试步骤: +1. 打开文件版本管理。 +2. 查看一份项目文档。 +3. 打开受试者或 AE 详情中的附件。 +4. 下载或预览附件。 +5. 尝试上传或删除附件。 + +测试数据: +- 附件:任一 `UAT-` 前缀附件。 + +期望结果: +- QA 可查看文档和附件。 +- QA 不能上传或删除附件,除非项目权限明确授权。 + +通过标准: +- 文档和附件满足稽查只读需求。 + +### 场景 8:监查稽查页面核查 + +适用角色:QA +前置条件:系统提供监查稽查或稽查入口。 +操作路径:项目工作区 -> 监查稽查 / 稽查。 + +测试步骤: +1. 打开监查稽查页面。 +2. 查看列表或占位信息。 +3. 如存在记录,打开详情。 +4. 尝试新建或编辑稽查记录。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- QA 可访问质量稽查相关页面。 +- 若当前版本仅展示占位信息,记录为不适用或待实现。 +- QA 不应越权修改非授权数据。 + +通过标准: +- QA 稽查入口表现符合当前产品范围。 + +### 场景 9:权限边界验证 + +适用角色:QA +前置条件:已登录并进入项目。 +操作路径:多个模块。 + +测试步骤: +1. 尝试新建受试者。 +2. 尝试创建 AE/SAE。 +3. 尝试创建药品发货。 +4. 尝试维护合同费用。 +5. 尝试进入项目权限配置。 + +测试数据: +- 项目:`UAT-CTMS-角色功能验收项目` + +期望结果: +- QA 不能执行业务主数据写操作。 +- QA 不能配置权限或管理项目成员。 + +通过标准: +- QA 只读监督边界清晰。 + +## 4. QA 权限边界核查 + +| 检查项 | 期望结果 | +|---|---| +| 项目总览 | 可查看 | +| 审计日志查看 | 可执行 | +| 审计日志导出 | 可执行 | +| 受试者和访视 | 可查看,不可维护 | +| AE/SAE 和风险问题 | 可查看,不可维护 | +| 药品、物资、设备 | 可查看,不可维护 | +| 文档和附件 | 可查看,上传/删除受限 | +| 合同费用 | 默认不可维护 | +| 项目成员和权限配置 | 不可执行 | + +## 5. 完成标准 + +- QA 可完成质量核查和审计追溯。 +- QA 不能越权修改业务主数据。 +- QA 导出审计日志时有确认和留痕。 diff --git a/docs/guides/role-uat/08-权限与规则交叉测试清单.md b/docs/guides/role-uat/08-权限与规则交叉测试清单.md new file mode 100644 index 00000000..ad886938 --- /dev/null +++ b/docs/guides/role-uat/08-权限与规则交叉测试清单.md @@ -0,0 +1,133 @@ +# 权限与规则交叉测试清单 + +## 1. 使用方式 + +本清单用于在各角色手册执行完成后做集中复核。执行人可以是 ADMIN、PM、QA 或测试负责人。每条规则至少记录一次实际测试结果,失败项必须登记缺陷。 + +结果填写: + +| 规则编号 | 执行角色 | 测试账号 | 结果 | 备注 | +|---|---|---|---|---| +| 例如 R-001 | ADMIN | `uat-admin@example.com` | 通过 / 失败 / 阻塞 | | + +## 2. 账号和登录规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-001 | 启用用户可登录 | 使用启用状态测试账号登录 | 登录成功 | +| R-002 | 待审核用户不可登录 | 注册新用户但不审核,尝试登录 | 被拒绝,提示待审核或认证失败 | +| R-003 | 禁用用户不可登录 | ADMIN 禁用 `uat-no-role@example.com` 后尝试登录 | 被拒绝 | +| R-004 | 密码规则生效 | 创建或修改密码时输入弱密码 | 保存失败并提示规则 | +| R-005 | 退出登录生效 | 登录后退出,再访问项目页面 | 跳转登录或要求重新认证 | + +## 3. 项目成员和项目访问规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-101 | 项目成员可进入项目 | PM/CRA/PV/医学审核/IMP/QA 选择 UAT 项目 | 可进入项目总览 | +| R-102 | 非项目成员不可进入项目 | `uat-no-role@example.com` 尝试访问 UAT 项目 | 被拒绝或看不到项目 | +| R-103 | 停用成员权限失效 | PM 或 ADMIN 临时移除某成员,再让该账号访问项目 | 不能继续访问项目 | +| R-104 | 恢复成员后权限恢复 | 重新添加成员并分配原角色 | 可重新进入项目 | +| R-105 | ADMIN 不依赖项目成员身份 | ADMIN 进入 UAT 项目 | 可访问项目内主要页面 | + +## 4. 项目锁定规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-201 | 锁定后读操作保留 | ADMIN 锁定项目后,各角色查看项目总览 | 可查看 | +| R-202 | 锁定后写操作被阻止 | PM 保存立项配置或 CRA 新建受试者 | 被拒绝并提示项目锁定或不可操作 | +| R-203 | 锁定对 PM 生效 | PM 尝试费用、里程碑、受试者任一写操作 | 被拒绝 | +| R-204 | 锁定对普通项目角色生效 | CRA/PV/IMP 尝试各自写操作 | 被拒绝 | +| R-205 | 解锁后写操作恢复 | ADMIN 解锁项目后重复写操作 | 按角色权限恢复 | + +## 5. 权限矩阵规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-301 | PM 项目内全权限 | PM 分别访问受试者、费用、药品、权限配置 | 可执行项目内写操作 | +| R-302 | ADMIN 可配置项目权限 | ADMIN 打开项目权限配置 | 可查看和保存权限矩阵 | +| R-303 | PM 可配置项目权限 | PM 打开项目权限配置 | 可查看和保存权限矩阵 | +| R-304 | 非 PM 不能配置权限 | CRA/PV/医学审核/IMP/QA 尝试进入权限配置 | 被拒绝或无入口 | +| R-305 | 权限关闭即时生效 | 关闭 CRA 创建受试者权限,CRA 尝试创建 | 被拒绝 | +| R-306 | 权限恢复即时生效 | 恢复 CRA 创建受试者权限,CRA 再次创建 | 可执行 | +| R-307 | 未配置覆盖时使用默认权限 | 清除某角色临时覆盖后复测默认动作 | 与默认权限一致 | + +## 6. 前置权限规则 + +系统部分写操作依赖前置读权限。测试时可由 ADMIN 临时关闭前置权限验证。 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-401 | 创建受试者需要中心读权限 | 关闭 CRA `sites:read` 后尝试创建受试者 | 被拒绝 | +| R-402 | 更新受试者需要中心读权限 | 关闭 CRA `sites:read` 后尝试编辑受试者 | 被拒绝 | +| R-403 | 创建访视需要受试者读和中心读 | 关闭 CRA `subjects:read` 或 `sites:read` 后创建访视 | 被拒绝 | +| R-404 | 创建 AE/SAE 需要受试者读和中心读 | 关闭 PV 前置读权限后创建 AE | 被拒绝 | +| R-405 | 创建药品发货需要中心读权限 | 关闭 IMP `sites:read` 后创建发货 | 被拒绝 | +| R-406 | 恢复前置权限后操作恢复 | 恢复对应前置权限后重复操作 | 按角色权限恢复 | + +## 7. 模块读写规则 + +| 编号 | 模块 | 角色 | 期望结果 | +|---|---|---|---| +| R-501 | 项目总览 | PM/CRA/PV/医学审核/IMP/QA | 均可查看 | +| R-502 | 受试者 | PM/CRA | 可创建和更新 | +| R-503 | 受试者 | PV/医学审核/QA/IMP | 可查看或按权限受限,不可维护主数据 | +| R-504 | AE/SAE | PM/CRA/PV/医学审核 | 可创建或更新授权范围内信息 | +| R-505 | AE/SAE | IMP/QA | 默认只读或不可维护 | +| R-506 | 合同费用 | PM | 可维护 | +| R-507 | 合同费用 | CRA/IMP | 可查看,不可维护主数据 | +| R-508 | 合同费用 | PV/医学审核/QA | 默认不可维护 | +| R-509 | 药品流向 | PM/IMP | 可创建和更新 | +| R-510 | 药品流向 | CRA/QA | 可查看 | +| R-511 | 药品流向 | PV/医学审核 | 默认不可维护 | +| R-512 | 审计日志 | ADMIN/PM/QA | 可查看或导出授权范围内日志 | +| R-513 | 审计日志 | CRA/PV/医学审核/IMP | 默认不可查看系统审计 | +| R-514 | FAQ | PM | 可维护 | +| R-515 | FAQ | 其他项目成员 | 可查看,回复或协作按权限执行 | +| R-516 | 知识库笔记 | PM/CRA/PV/医学审核 | 可创建和编辑 | +| R-517 | 知识库笔记 | IMP/QA | 可查看,不可维护 | + +## 8. 删除和关闭类高风险规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-601 | 受试者删除仅高权限 | CRA/PV/医学审核/IMP/QA 尝试删除受试者 | 被拒绝 | +| R-602 | 中心删除仅高权限 | 非 ADMIN/PM 尝试删除中心 | 被拒绝 | +| R-603 | 费用合同删除仅 PM | 非 PM 尝试删除合同 | 被拒绝 | +| R-604 | 药品发货删除仅高权限 | IMP 尝试删除药品发货 | 按权限矩阵执行,结果需记录 | +| R-605 | AE 关闭权限 | PV 关闭 AE,QA/IMP 尝试关闭 AE | PV 可执行,QA/IMP 被拒绝 | +| R-606 | 监查问题关闭权限 | CRA 关闭监查问题,QA/IMP 尝试关闭 | CRA 可执行,QA/IMP 被拒绝 | + +## 9. 审计日志规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-701 | 用户创建留痕 | ADMIN 创建测试用户 | 审计日志有记录 | +| R-702 | 用户审核留痕 | ADMIN 审核注册用户 | 审计日志有记录 | +| R-703 | 项目创建留痕 | ADMIN 创建 UAT 项目 | 审计日志有记录 | +| R-704 | 中心创建和 CRA 绑定留痕 | ADMIN 创建中心并绑定 CRA | 审计日志有记录 | +| R-705 | 权限变更留痕 | ADMIN/PM 修改 CRA 权限 | 审计日志有记录 | +| R-706 | 项目锁定留痕 | ADMIN 锁定和解锁项目 | 审计日志有记录 | +| R-707 | 业务写操作留痕 | CRA 创建受试者、PV 创建 AE、IMP 创建发货 | 审计日志或业务历史有记录 | +| R-708 | 审计导出留痕 | ADMIN/QA 导出审计日志 | 导出动作本身有记录 | + +## 10. 数据校验规则 + +| 编号 | 规则 | 操作 | 期望结果 | +|---|---|---|---| +| R-801 | 必填字段校验 | 新建受试者时留空必填字段 | 保存失败并提示 | +| R-802 | 日期字段校验 | 输入明显非法日期或结束早于开始 | 保存失败或提示 | +| R-803 | 编号唯一性 | 重复创建 `UAT-SUBJ-001` | 保存失败或提示重复 | +| R-804 | 附件格式校验 | 上传不支持格式文件 | 被拒绝或提示格式不支持 | +| R-805 | 金额字段校验 | 合同金额输入负数或非数字 | 保存失败或提示 | +| R-806 | 数量字段校验 | 药品数量输入负数或非数字 | 保存失败或提示 | + +## 11. 完成标准 + +交叉测试完成需满足: + +- `R-001` 到 `R-307` 全部通过。 +- 前置权限规则至少覆盖 CRA、PV、IMP 三类角色。 +- 审计日志规则至少覆盖账号、项目、权限、业务写操作和导出。 +- 所有失败项均已登记缺陷。 +- 所有临时关闭的权限已恢复到 UAT 默认状态。 diff --git a/output/doc/role-uat/00-测试总说明.docx b/output/doc/role-uat/00-测试总说明.docx new file mode 100644 index 00000000..71570434 Binary files /dev/null and b/output/doc/role-uat/00-测试总说明.docx differ diff --git a/output/doc/role-uat/01-ADMIN-系统管理员测试手册.docx b/output/doc/role-uat/01-ADMIN-系统管理员测试手册.docx new file mode 100644 index 00000000..cc059d64 Binary files /dev/null and b/output/doc/role-uat/01-ADMIN-系统管理员测试手册.docx differ diff --git a/output/doc/role-uat/02-PM-项目负责人测试手册.docx b/output/doc/role-uat/02-PM-项目负责人测试手册.docx new file mode 100644 index 00000000..c26316e1 Binary files /dev/null and b/output/doc/role-uat/02-PM-项目负责人测试手册.docx differ diff --git a/output/doc/role-uat/03-CRA-临床监查员测试手册.docx b/output/doc/role-uat/03-CRA-临床监查员测试手册.docx new file mode 100644 index 00000000..78d83b22 Binary files /dev/null and b/output/doc/role-uat/03-CRA-临床监查员测试手册.docx differ diff --git a/output/doc/role-uat/04-PV-药物警戒测试手册.docx b/output/doc/role-uat/04-PV-药物警戒测试手册.docx new file mode 100644 index 00000000..486b9f8e Binary files /dev/null and b/output/doc/role-uat/04-PV-药物警戒测试手册.docx differ diff --git a/output/doc/role-uat/05-MEDICAL_REVIEW-医学审核测试手册.docx b/output/doc/role-uat/05-MEDICAL_REVIEW-医学审核测试手册.docx new file mode 100644 index 00000000..046e474e Binary files /dev/null and b/output/doc/role-uat/05-MEDICAL_REVIEW-医学审核测试手册.docx differ diff --git a/output/doc/role-uat/06-IMP-药品管理员测试手册.docx b/output/doc/role-uat/06-IMP-药品管理员测试手册.docx new file mode 100644 index 00000000..7db57d27 Binary files /dev/null and b/output/doc/role-uat/06-IMP-药品管理员测试手册.docx differ diff --git a/output/doc/role-uat/07-QA-质量稽查测试手册.docx b/output/doc/role-uat/07-QA-质量稽查测试手册.docx new file mode 100644 index 00000000..0e96a2ec Binary files /dev/null and b/output/doc/role-uat/07-QA-质量稽查测试手册.docx differ diff --git a/output/doc/role-uat/08-权限与规则交叉测试清单.docx b/output/doc/role-uat/08-权限与规则交叉测试清单.docx new file mode 100644 index 00000000..79bfb13b Binary files /dev/null and b/output/doc/role-uat/08-权限与规则交叉测试清单.docx differ