2. 供应商目录管理基础:数据模型、核心字段与生命周期管理

供应商目录是采购管理平台的核心主数据资产,它不仅是供应商信息的静态存储库,更是驱动资质变更自动通知、风险预警和协同流程的基础骨架。理解供应商目录的数据模型、核心字段设计以及生命周期管理,是构建自动化通知功能的前提。

2.1 供应商目录数据模型

供应商目录的数据模型通常采用“主-子-扩展”三层结构,以平衡通用性与行业扩展性。核心模型包含以下实体:

实体层 实体名称 核心职责 示例字段
主实体 供应商主表 (Supplier) 唯一标识一个法人实体,全局唯一 供应商ID、统一社会信用代码、企业名称、注册地址、状态
子实体 供应商资质表 (Qualification) 存储供应商持有的各类资质证件 资质ID、供应商ID、资质类型、资质编号、有效期起止、附件URL
扩展实体 供应商联系人表 (Contact) 管理供应商对接人员信息 联系人ID、供应商ID、姓名、手机、邮箱、是否主联系人
扩展实体 供应商品类表 (Category) 定义供应商可提供的商品/服务范围 品类ID、供应商ID、品类编码、授权等级、生效日期
架构提示: 在微服务架构中,供应商目录服务通常独立部署,通过事件总线(如 Kafka)发布“资质变更事件”,供通知服务、风控服务、采购寻源服务订阅消费。

2.2 核心字段深度解析

在供应商目录中,以下字段直接决定了资质变更自动通知的触发逻辑与准确性:

2.2.1 资质有效期(Validity Period)

资质有效期是通知功能的核心时间轴。通常设计为 start_date 和 end_date 两个日期字段,系统通过计算当前日期与 end_date 的差值,触发不同级别的通知。

  • 过期前提醒(预警): 例如提前 30 天、15 天、7 天发送提醒。
  • 过期当天通知: 资质到期日自动触发紧急通知。
  • 过期后升级: 过期后仍未更新,自动升级通知层级(如通知采购经理、暂停供应商交易资格)。

2.2.2 资质类型(Qualification Type)

资质类型决定了通知的接收方、处理流程和紧急程度。常见的资质类型包括:

资质类型编码 资质类型名称 通知优先级 典型通知对象
LICENSE 营业执照 高 供应商管理员、采购经理
ISO_QUALITY ISO 质量体系认证 中 供应商管理员、品类经理
PROD_CERT 产品安全认证(如 3C、CE) 高 品类经理、质量工程师
ENV_LICENSE 环保许可证 中 供应商管理员、EHS 部门
FIN_REPORT 年度财务审计报告 低 财务部、供应商管理员
设计建议: 在数据模型中为资质类型增加“通知模板ID”字段,实现不同类型资质使用不同的通知文案和渠道(邮件、短信、站内信)。

2.3 供应商目录生命周期管理

供应商目录的生命周期管理(Lifecycle Management)定义了供应商从引入到退出的完整状态流转,每个状态变更都可能触发资质校验与通知。

供应商目录生命周期状态流转图 潜在供应商 准入审核中 合格供应商 暂停交易 黑名单 已退出 提交申请 审核通过 资质过期/违规 整改完成 严重违规 执行退出 主动退出 说明: 每个状态变更节点(如“合格→暂停”)都应触发资质变更通知;虚线箭头表示可逆流程,实线箭头表示单向流程。

2.4 生命周期各阶段的通知触发点

结合生命周期状态,资质变更自动通知的触发点可以归纳为以下关键事件:

  1. 准入审核阶段: 供应商提交资质后,系统自动校验资质完整性,若缺少关键资质(如营业执照),立即通知供应商补充。
  2. 合格供应商阶段: 系统每日扫描资质有效期,对即将过期的资质发送预警通知;资质更新后,自动通知采购方进行复核。
  3. 暂停交易阶段: 因资质过期触发暂停后,自动通知供应商管理员和供应商联系人,告知暂停原因及恢复条件。
  4. 退出/黑名单阶段: 供应商退出后,系统自动归档所有资质记录,并通知相关采购人员清理关联数据。
常见陷阱: 不要将资质有效期仅设计为单个日期字段。必须区分“生效日期”和“失效日期”,否则无法处理资质提前续期、延期变更等场景,导致通知逻辑混乱。

2.5 数据模型核心代码示例

以下是一个简化的供应商资质表 DDL 示例,展示了核心字段的设计:

CREATE TABLE supplier_qualification (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT,
    supplier_id     BIGINT NOT NULL COMMENT '供应商ID',
    qual_type       VARCHAR(50) NOT NULL COMMENT '资质类型编码',
    qual_number     VARCHAR(100) COMMENT '资质证书编号',
    start_date      DATE NOT NULL COMMENT '资质生效日期',
    end_date        DATE NOT NULL COMMENT '资质失效日期',
    attachment_url  VARCHAR(500) COMMENT '资质文件附件URL',
    status          TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 1-有效, 2-即将过期, 3-已过期, 4-已作废',
    notify_template_id BIGINT COMMENT '关联的通知模板ID',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    INDEX idx_supplier_type (supplier_id, qual_type),
    INDEX idx_end_date (end_date),
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商资质表';
索引优化建议: 在 end_date 和 status 字段上建立联合索引,可以大幅提升每日资质过期扫描任务的查询性能,避免全表扫描。

通过以上数据模型、核心字段与生命周期管理的设计,采购管理平台能够精准识别“何时、何资质、通知谁”,为后续的自动通知功能奠定坚实的数据基础。