Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions docs/design/04-security-and-portal.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ SRM 同时服务内部员工和互相竞争的供应商,权限设计的首要
## 2. 角色、岗位与权限集

平台把**能做什么**(权限集)和**看多大范围**(OWD、共享规则、RLS、层级范围)分开。
本设计的权限集挂在岗位上,员工通过岗位任命获得权限;唯一的例外是门户管理员权限集,
它直接授予具体的供应商用户(§3.3)。
本设计的权限集挂在岗位上,员工通过岗位任命获得权限;供应商的门户用户同样经静态门户岗位获得权限,
门户管理员按人任命到 `srm_portal_admin`(§3.1 第 6 条、§3.3)。

### 2.1 内部岗位

Expand All @@ -53,7 +53,7 @@ SRM 同时服务内部员工和互相竞争的供应商,权限设计的首要
|---|---|
| `srm_internal_base` | 内部员工的基础:读品类、物料、工厂、供应商主数据(不含银行账号)、价格库;**不是** `isDefault` |
| `srm_sourcing` | 寻源单、寻源明细的增改(状态只经 screen flow 推进);邀请、技术评分、定标只经 screen flow;读报价(受封标 RLS 约束);新建合同 |
| `srm_supplier_admin` | 供应商档案、联系人、证书、准入申请、审核、供货品类资格、处置单、合同的增改;开通门户 |
| `srm_supplier_admin` | 供应商档案、联系人、证书、准入申请、审核、供货品类资格、处置单、合同的增改;门户邀请(提出开通需求,开通本身由组织管理员操作,§3.3) |
| `srm_buyer` | 供应商档案、合同、交付记录读;物料只改 `category` 关联(其余字段 FLS 只读,不新建、不删除);代供应商发起变更单(v0.6 前;银行账户变更要填完整账号,由持完整账号能力的品类经理或采购主管发起);ERP 集成后加订单、送货单的内部字段 |
| `srm_quality` | 审核、交付记录(录入)、整改单的增改;证书只读,核验经 screen flow |
| `srm_iqc` | 交付记录的录入(没有质量系统的客户) |
Expand All @@ -64,7 +64,7 @@ SRM 同时服务内部员工和互相竞争的供应商,权限设计的首要
| `srm_auditor` | 全部 SRM 对象只读(报价同样受封标约束),可读审批历史与字段历史,不可导出银行账号 |
| `srm_admin` | 品类、指标库、编码、通知模板的配置;物料导入与维护;存量供应商、联系人、证书的导入(v0.2,唯一能写「存量导入」标记的权限集,[导入说明](../implementation/legacy-supplier-import.md));不授予报价读权限 |
| `srm_portal_supplier` | 供应商门户用户:见 §3.2 |
| `srm_portal_supplier_admin` | 在 `srm_portal_supplier` 之上:维护本公司联系人、银行账户,提交变更申请与绩效申诉;直接授予具体用户 |
| `srm_portal_admin` | 在 `srm_portal_supplier` 之上:维护本公司联系人、银行账户,看完整银行账号,提交变更申请与绩效申诉;挂在门户管理员岗位 `srm_portal_admin` 上,按人任命 |
| `srm_integration` | 预留(ERP 集成后):集成服务账号,物料、交付记录、订单镜像的写入;供应商仅可写 `erp_vendor_code`,价格记录只读;**不**授予报价单与银行账号 |

**为什么 SRM 不用 `isDefault` 权限集**:`isDefault` 的权限集绑定到组织的每一个成员。
Expand Down Expand Up @@ -233,6 +233,7 @@ flowchart LR
| 联系人离职 / 停用 | 联系人 `active = false`(名册过滤条件),下一个请求起看不到数据;组织管理员随后撤销门户岗位任命并移出组织 |
| 供应商冻结 | 账号与门户功能保持不变:整改单仍要回复,资料仍要维护;冻结只阻止新的询价邀请(BR-03),新订单由 ERP 侧冻结标志拦截 |
| 供应商淘汰 / 黑名单 | `srm_disposition_apply` 执行时清掉该供应商全部联系人上的 `portal_user`,门户访问即刻失效,不靠人工停用联系人;岗位任命与组织成员身份由组织管理员随后移除(处置 flow 写不了任命,07 §6 V2)。重新准入通过后要重新开通门户 |
| 准入未通过 | 申请驳回、供应商退回 `potential`(重新准入的旧档回 `eliminated`)时清掉该供应商联系人上的 `portal_user`(03 §3 第 8 步,v0.6 U3);已合格供应商增加品类的申请被驳回不动门户。岗位任命与组织成员身份由组织管理员随后移除 |
| 季度复核 | 报表列出每家供应商的门户账号与在职联系人,差异由采购主管确认 |

### 3.4 RLS 示例
Expand Down Expand Up @@ -368,15 +369,15 @@ export const PortalSupplier = definePermissionSet({
报价明细是报价单的 `master_detail` 子对象,跟随父记录,自动同样受限。要点:

- **管理员也不例外**:`srm_admin` 不授予报价读权限;平台超级管理员的数据库级访问在
运维制度里约束(访问留痕、双人授权),不在应用权限里放开;
体系文件 GL-10 第 6.8 条里约束(双人授权、访问留痕),不在应用权限里放开;
- **AI 助手不例外**:AI 以提问者的身份查询,同一条 RLS 生效([06 §3](./06-integration-and-ai.md#3-ai-助手));
- **数量可见、内容不可见**:寻源单上的 `submitted_quote_count` 由平台在报价写入时重算,
内部能看到「已报价 N 家」;
- **开标由 flow 以系统身份执行**:它需要更新内部尚不可见的报价,这是唯一被允许的
系统身份写入,flow 本身留有运行记录;
- **价格记录不受封标约束**:`srm_supplier_admin`、`srm_buyer` 对价格记录可读,但价格记录
在定标后才由 flow 产生,与中标报价一一对应,不泄露封标期间的任何报价;
- **平台管理员的数据库级访问**是已知例外,写进运维制度(GL-10)而不是应用权限。
- **平台管理员的数据库级访问**是已知例外,写进体系文件 GL-10 第 6.8 条(双人授权、报价截止前不访问报价、访问留痕定期检查)而不是应用权限。

### 4.2 字段级权限(FLS)

Expand Down
8 changes: 4 additions & 4 deletions governance/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# hotsrm 体系文件(管理制度)模板

> 状态:v0.5(2026-10-26)。生成脚本、参数文件首版和 17 份核心模板(ZC-01~ZC-03、SP-01、QP-01~QP-04、GL-01~GL-08、WI-01)已完成;
> 状态:v0.6(2026-11-02)。生成脚本、参数文件首版和 18 份核心模板(ZC-01~ZC-03、SP-01、QP-01~QP-04、GL-01~GL-08、GL-10、WI-01)已完成;
> 其余模板按 §6 的计划随核心版本补齐。审批权限以核心设计 03 §12 的审批矩阵为唯一来源,ZC-02 等按它编写(2026-10-23,P-D1)。
> 模板代号、名称和编写状态以 [`templates/index.yaml`](./templates/index.yaml) 为准。

Expand Down Expand Up @@ -54,7 +54,7 @@ hotsrm 把管理制度和系统放在一起维护:
| GL-07 | 供应商质量问题整改管理办法 | 三级 | 触发条件、8D 时限、审核验证、质量索赔 | QP-04 | 03 §8 |
| GL-08 | 供应商处置管理办法 | 三级 | 冻结、解冻、淘汰、黑名单及解除 | QP-01 | 03 §5 |
| GL-09 | 供应商对账与付款管理办法 | 三级 | 对账周期、差异处理、发票、付款 | QP-02 | 03 §9 |
| GL-10 | 供应商门户账号与信息安全管理规定 | 三级 | 账号开通与回收、权限、报价保密 | QP-01 | 04 §3 |
| GL-10 | 供应商门户账号与信息安全管理规定 | 三级 | 门户为正式渠道、邀请注册、账号开通与授权、使用、回收与季度复核、供应商之间零可见、报价保密、平台运维访问、个人信息保护 | QP-01 | 04 §3、§4.1、§8 |

### 3.2 扩展包模板(组合了对应扩展包时启用;扩展包设计保留、未排期)

Expand Down Expand Up @@ -215,8 +215,8 @@ python3 <hotsrm>/governance/scripts/build.py --instance governance --check #
|---|---|---|
| 已完成 | QP-01、QP-02、ZC-01~ZC-03、SP-01、GL-01、WI-01、GL-02、GL-04、GL-05 | v0.1–v0.3 已有依据;GL-02 的系统控制在 v0.7 落地 |
| 第二批(已完成) | GL-03(合同)、GL-08(处置)、GL-07(整改)、QP-03、QP-04 | v0.3 合同与处置、v0.4 质量 |
| 第三批 | GL-06(绩效,已完成)、GL-10(门户账号与信息安全) | v0.5 绩效、v0.6 门户 |
| 第三批(已完成) | GL-06(绩效)、GL-10(门户账号与信息安全) | v0.5 绩效、v0.6 门户 |
| 暂不编写 | GL-09(对账与付款):对账、发票、付款留在 ERP(ADR-0008),只在客户要求把 ERP 侧流程写进体系文件时编写;各扩展包模板随扩展包立项 | — |

已完成:生成脚本、`params/` 参数文件首版、模板登记表、上表前两行的 16 份模板和第三批的 GL-06。QP-03、QP-04 是「修订用条款」:客户已有这两份程序的,把第 6 章并入现行程序(模板第 2.3 条是可覆盖的 block)。扩展包的表单
已完成:生成脚本、`params/` 参数文件首版、模板登记表、上表前三行的 18 份模板。QP-03、QP-04 是「修订用条款」:客户已有这两份程序的,把第 6 章并入现行程序(模板第 2.3 条是可覆盖的 block)。扩展包的表单
代号在编写对应模板时登记。
2 changes: 2 additions & 0 deletions governance/org.example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ dept:
finance: 财务部
legal: 法务部门
oversight: 法务、审计、纪检监察部门
# 负责信息系统账号、认证配置与信息安全的部门;SRM 的组织管理员通常在这里
it: 信息技术部门
audit: 审计部门
warehouse: 仓储部门
discipline: 监察部门
Expand Down
5 changes: 3 additions & 2 deletions governance/templates/core/GL-01.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ title: 供应商准入与资质管理办法
- {{doc.BK-01}} <!-- pack:bulk -->
- {{doc.GL-04}}
- {{doc.GL-05}}
- {{doc.GL-10}}
- {{doc.HZ-02}} <!-- pack:hazmat -->
- 《危险化学品安全管理条例》 <!-- pack:hazmat -->
- 《危险化学品经营许可证管理办法》 <!-- pack:hazmat -->
Expand Down Expand Up @@ -69,7 +70,7 @@ title: 供应商准入与资质管理办法

## 6.1 注册受理

6.1.1 潜在供应商通过 SRM 系统供应商门户的公开注册入口提交注册申请,填写企业基本信息、统一社会信用代码(境外供应商为注册号)、拟供物资类别、联系人、企业概况(规模、产能、主要客户),上传营业执照,并完成关联关系申报和{{doc.QR-15.title}}签署。
6.1.1 潜在供应商按{{org.dept.procurement}}的邀请注册账号后,在 SRM 系统中提交注册申请(公司开放公开注册入口的,也可经该入口提交),填写企业基本信息、统一社会信用代码(境外供应商为注册号)、拟供物资类别、联系人、企业概况(规模、产能、主要客户),并完成关联关系申报和{{doc.QR-15.title}}签署。营业执照等文件在登录供应商门户后上传,公开注册入口不收附件(见{{doc.GL-10}}第 6.2 条)。

6.1.2 {{org.dept.procurement}}在收到注册申请后 {{param.registration_accept_days}} 个工作日内按下列要求完成受理:

Expand All @@ -83,7 +84,7 @@ d) **需求匹配**:拟供物资不在公司采购需求范围内的,保留

上述查重和黑名单比对由 SRM 系统在受理时自动完成;失信与违法核查由{{org.dept.procurement}}完成,核查结果截图作为附件存入准入申请。

6.1.3 受理通过的,SRM 系统建立潜在供应商档案,申请进入资料审核;{{org.dept.procurement}}邀请供应商联系人开通供应商门户账号,由供应商在门户中补充资料和证书。
6.1.3 受理通过的,SRM 系统建立潜在供应商档案,申请进入资料审核;{{org.dept.procurement}}按{{doc.GL-10.title}}为供应商联系人申请开通供应商门户账号,由供应商在门户中补充资料和证书。

## 6.2 资料审核

Expand Down
Loading
Loading