来源说明:文中《中科兴皖需求 V0.3》及其章节引用为历史出处,原文已清理;以下既有 SHALL 要求继续有效,当前入口见根
AGENTS.md与本工程标准。
所有面向业务数据的查询接口 SHALL 仅返回 tenant_no 等于当前登录用户租户编号的数据;所有写入或更新类接口 SHALL 将目标业务行的 tenant_no 设置为当前登录用户的 tenant_no(与《中科兴皖需求 V0.3》§3 一致)。
tenant_notenant_no SHALL 等于当前登录用户租户,且不得信任客户端单独提交的租户覆盖服务端策略(除非经安全评审的多租户管理接口)除超级管理员等需求明确豁免的场景外,所有业务查询接口 SHALL 叠加当前登录用户全部角色合并后的数据权限范围进行过滤(与需求 §2.1.5「多角色取权限之和」一致)。
在无单独产品排序要求的前提下,列表类接口返回的数据集合 SHALL 按 create_time 降序排列(与需求 §3 一致)。
create_time DESC对外 HTTP API SHALL 使用统一前缀(当前仓库为 /api 及版本/子路径,见 AGENTS.md);新增路由 SHALL 注册到既有路由聚合机制,避免绕过中间件(鉴权、加解密、审计等)。
app/api/ 增加新的路由模块app/api/__init__.py 与 app/main.py 中完成注册,并符合现有认证与租户上下文注入模式细胞存储场景下,将协议样本行(biz_protocol_sample)与下游业务(样本接收 biz_sample_reception、质检工单 biz_qc_work_order 等)进行业务匹配时,关联键 SHALL 仅为 tenant_no + sample_code(租户内样本编码唯一且不变;接收/工单表须持久化 sample_code 快照)。不得使用 collection_protocol_id 或 protocol_sample_id 作为查询、列表排除、详情回显的关联依据(协议单可换号/转科研、编辑保存会重建样本行 id,但样本编码不变)。
sample_code 已登记接收sampleReception(及同规则的 qcInfo),与当前协议单 ID、样本行 id 是否变更无关sample_code 已存在有效接收记录(del_flag=0)tenant_no + sample_code 校验是否已接收,已存在则拒绝重复登记