Group presign counts by project and team, include totals and unassigned rows, and reuse count drill-down. Remove the standalone footer while retaining presignTotal compatibility and the four formal business types. Related to issue #13. Independent source review completed; no tests or builds run under user self-test arrangement.
6.9 KiB
6.9 KiB
ADDED Requirements
Requirement: 按业务识别历史归属单据
历史归属维护 SHALL 按细胞存储、科研捐赠、中试服务、基础实验展示四个 tab,并提供对应业务识别字段和关键词搜索;列表保持主单分页,右侧固定归属与审计操作。
Scenario: 存储和捐赠以样本编码识别
- WHEN 查看细胞存储或科研捐赠 tab
- THEN 展示样本编码列而非协议单号/捐赠单号列;多个有效编码在同一主单行去重展示,无编码显示破折号,支持按任一编码搜索;跨租户或已删除的样本不用于展示和匹配,分页和归属仍以主单为单位。
Scenario: 按联系人或业务信息定位
- WHEN 用户在某类业务输入姓名、电话、医院/专员、渠道/服务订单或课题/客户等该业务支持的关键词
- THEN 仅返回当前租户及数据权限内匹配的有效主单,展示对应业务信息,多条子记录不重复计数;删除和跨租户关联数据不用于匹配或展示。
Scenario: 切换业务及请求竞争
- WHEN 用户切换 tab 或旧请求在新请求后返回
- THEN 切换时清空关键词、状态、项目组/项目并回到第一页,保留日期与仅未归属条件;过时响应不得覆盖当前业务的列表或计数,失败可重试且不保留旧列表。
Scenario: 业务联系信息权限
- WHEN 仅有统计权限的用户读取统计钻取或尝试调用归属维护详情接口
- THEN 统计专用详情接口按
project:statistics:list返回其租户及主单数据权限内的业务识别和联系信息;归属维护详情接口仍拒绝无project:assignment:edit权限的访问,全部项目选择权限不扩大主单数据范围。
Scenario: 归属调整仍按关联链执行
- WHEN 用户从某个业务 tab 调整归属
- THEN 目标候选按该单据业务类型及项目权限加载,仍先预览关联单据再确认提交;关联预签约纳入预览和审计,不新增独立预签约 tab。
Requirement: 项目管理三级导航
Web SHALL 使用“项目 → 项目管理 → 项目组管理 / 项目管理 / 业务统计 / 历史归属维护”层级,复用现有导航组件;原页面权限、名称和功能保持。
Scenario: 现有角色升级
- WHEN 执行项目管理分组迁移
- THEN 保留子页面 ID 与原授权,仅为已授权子页面/编辑按钮的角色补齐目录祖先;全部项目选择权限仍独立挂在项目一级下,不授予管理页面权限。
Scenario: 旧地址访问
- WHEN 访问
/project/{页面}或/market/project-management/{页面} - THEN 携带原查询参数及 hash 跳转至
/project/management/{页面},目标仍按原页面权限检查。
Requirement: 组织信息与业务地点独立
系统 SHALL 维护项目组负责人、成员及区域医院资料,区域医院仅为信息记录。
Scenario: 修改负责医院
- WHEN 项目组医院发生修改
- THEN 已有订单、业务地区医院候选与权限均保持原有行为。
Requirement: 稳定且受控的项目归属
系统 SHALL 在业务主单保存项目归属,限制同租户授权选择,人员调整不得迁移历史订单。
Scenario: 转换单据
- WHEN 预签约转协议或存储捐赠互转
- THEN 目标继承来源项目,记录来源关联。
Scenario: 历史单据编辑
- WHEN 已停用项目的历史单据修改其他字段
- THEN 保留其项目归属,不因项目停用拒绝无关编辑。
Scenario: 归属纠正
- WHEN 有授权的管理员预览并确认调整关联单据归属
- THEN 服务端核对权限、关联集合及旧值,统一事务更新并留审计;不一致时拒绝。
Requirement: 权限内统计
系统 SHALL 按认证租户和现有数据权限统计四类业务,预签约另计,未归属单据单列。
Scenario: 预签约独立统计列
- WHEN 按项目或项目组查看业务统计
- THEN 表格以“预签约”独立列展示每组、业务总量、未归属的全状态有效预签约单数,包含只有预签约的组;移除左下角独立计数文字,点击数量可查看同筛选明细,不将预签约数量加入四类正式业务数量。
Scenario: 汇总钻取
- WHEN 用户打开某项目的某类业务明细
- THEN 明细总数与相同筛选条件汇总一致,不因子行联接重复计数。
Scenario: 四类统计明细展示业务字段
- WHEN 点击细胞存储、科研捐赠、中试服务、基础实验的统计数量
- THEN 原明细弹窗复用历史归属维护对应 tab 的业务列与关键词能力,存储/捐赠显示样本编码,保留汇总传入的筛选条件和只读权限,不显示归属维护操作;预签约仍沿用原行为。
Requirement: 沿用现有界面样式
Web与移动 SHALL 复用同端现有组件、布局模式和全局样式。
Scenario: 新增管理界面
- WHEN 实现已确认Figma布局
- THEN 列表、弹窗、按钮、标签及选择器遵循现有界面,不引入平行主题。
Requirement: 所属项目范围与独立全部项目权限
系统 SHALL 在 Web 和移动的所属项目候选及后端归属写入中使用同一范围:本人作为项目组负责人或有效成员所在组的项目,或显式 project:project:all 授权下的当前租户项目。多组、有效角色及职位继承角色取并集。普通管理员、项目负责人或归属维护权限本身不得绕过组成员限制;super_admin 沿用系统全部权限语义且不得跨租户。
Scenario: 无跨组权限
- WHEN 用户未加入某项目组且不是该组负责人
- THEN 下拉框不返回其项目,伪造项目 ID 提交被后端拒绝;仅担任该项目负责人不构成组成员资格。
Scenario: 分配或撤销全部项目
- WHEN 角色或继承职位授予全部项目权限,或该授权被撤销/停用
- THEN 后续候选和写入即时按有效授权判定,其他租户、停用项目和不支持业务类型仍不可新选。
Scenario: 历史归属与数据权限
- WHEN 用户调组或项目停用后查看、编辑历史订单
- THEN 原项目仍可回显且无关编辑保留归属;筛选候选取项目范围与原业务数据范围交集,全部项目权限不扩大订单查看和维护权限。
Scenario: 禁止业务用户自行授权
- WHEN 普通业务管理员直接调用角色菜单、用户角色/职位、职位角色/用户或菜单权限码等变更接口
- THEN 缺少对应系统管理权限时返回拒绝;有管理权限者也只能变更当前租户目标和关联,用户账号重置/启停同样受管理权限保护。
Scenario: 角色菜单保存
- WHEN 管理员只勾选全部项目功能权限
- THEN 保存其同租户祖先但不授予其他功能,断链/循环/跨租户节点导致整次保存拒绝。