简介:上海通用汽车供应商质量要求规定(2008年第二版)是一份面向汽车供应链质量管理人员的规范性文件,系统阐述了SGM对供应商在质量声明、APQP、FE/MC、PPAP、受控发运及GP9等环节的明确要求,为供应商质量工程师、审核员及零部件厂商提供统一的管理框架。压缩包内共1个PDF文件,容量1.26MB,内容共46页,包含中英双语修订记录及完整条款,便于按章节查阅。目前已有177人学习下载,适合正在准备SGM/GM审核或建立供应商质量体系的团队参考。文档以2004至2008年主要修订记录为线索,清晰呈现了从QS9000过渡到ISO/TS16949、增加海外设计国内生产供应商附加要求、细化集成供货供应商职责等关键变化;同时包含PPAP临时批准分类调整、一级/二级受控发运程序、QSB相关要求及2008版新增的章节编号和翻译修订,读者可直接对照自身流程查漏补缺,理解SGM最新期望,降低审核不符合项风险。
1. SGM供应商质量要求:一份厂内文件为什么值得IT和SQE一起读
拿到一份08年第二版的SGM供应商质量要求PDF,很多人的第一反应是“这都老掉牙了,还能有什么用”。实际上,这份文件里定义的框架——从潜在供应商评审、PPAP批准、GP系列流程到批量供货后的绩效监控——至今仍是国内主流整车厂供应商质量管理体系的骨架。上汽通用(SGM)当年把通用的全球要求本地化,形成了这份可以落地的执行细则,后来不少自主品牌的质量条款都参考过它的逻辑。
这篇博文不打算逐字复述文件条款,而是站在两类人的角度去拆:一类是SQE(供应商质量工程师),需要把纸面要求变成日常审核和改善动作;另一类是IT或数字化转型岗位,需要把“质量要求”翻译成系统里的主数据、流程节点和报警规则。前者可以把你手头的版本当作业务事实标准来核对,后者则能从中提炼出一套可配置的QMS(质量管理信息系统)业务蓝图。下面先讲清楚文件的核心结构,再给出能直接抄的落地方法和参数配置。哪怕是08年的文件,只要骨架没变,实施路径就依然可靠。
2. 文件核心拆解:SGM供应商质量要求的五层骨架
2.1 准入层:从潜在供应商评审到PPAP批准的门槛逻辑
这份文件对“供应商”的定义,不是签了合同就算数,而是必须通过SGM的潜在供应商评审(PSA,Potential Supplier Assessment)并拿到PPAP(生产件批准程序)批准。第二版相比第一版,明显加强了“初始过程能力”的权重,尤其是对关键和重要特性,要求Cpk≥1.33成为批量供货的前置条件。
文件里这部分最值得IT关注的,是它定义了清晰的阶段门(Stage Gate):
- 第一阶段:潜在供应商评审,考察质量体系(通常依据IATF 16949,但在2008年时是TS 16949)、财务健康度、技术能力;
- 第二阶段:供应商提交PPAP全套文件(通常18项以上要素,含PFMEA、控制计划、MSA、全尺寸报告、材料报告等);
- 第三阶段:SGM SQE进行现场过程审核(通常按VDA 6.3或AIAG CQI系列专项审核),确认批量条件。
从系统角度讲,这个准入层对应的就是“供应商状态机”。常见做法是,用一张供应商主数据表保存状态字段,由未评审、评审中、待批准、 approved 、暂停、取消六个状态构成生命周期。状态之间不是任意跳转,而是有强制的前置文件作为“门”。比如说,提交PSW(零件提交保证书)之前,控制计划必须是批准状态;Cpk不达标,系统就要禁止PPAP提交。这种硬校验,就是从文件条款里提炼出来的业务规则。
2.2 批量供货层:GP-9、GP-8和年度试验的触发条件
量产之后,文件规定了三类持续要求,这里直接关系到SQE的日常节奏,也是很多QMS系统做业务流时候容易漏掉的部分。
第一类是GP-9(全球采购质量协议)里的“变更通知”条款。供应商一旦发生以下变更:工艺路线调整、模具转移、二级供应商更换、生产地点搬迁,必须在实施前至少提前提交变更申请,得到SGM书面批准后才能切换。文件对这个时间窗口有明确约定,通常是30天以上,但具体以当时签署的协议为准。
第二类是GP-8(问题解决与报告)。一旦出现SGM现场投诉、PPM超标或质量逃逸,供应商必须按GP-8要求在规定时限内提交8D报告,并且有明确的时间节点要求:24小时内提交遏制报告,5个工作日提交根本原因分析,14个工作日提交完整的8D最终报告。这个时间窗口,在系统里就应该做成自动升级的SLA(服务等级协议)。
第三类是年度试验和全尺寸检验。文件要求供应商按既定的年度计划,对每一种零件执行全尺寸检验和性能试验,即便没有任何质量问题也不能跳过。SQE在年初就要确认年度试验计划并录入系统,检验完成后上传报告,系统再根据到期日自动触发提醒。
2.3 指标层:PPM、CSL、DUNS,这些数字怎么定义和统计
SGM文件里对供应商质量表现的量化考核,主要有几个硬指标。先把口径弄清楚,再谈统计逻辑,否则数据库里取数会得出完全不同的结论。
| 指标 | 定义 | 计算口径 | 数据来源 |
|---|---|---|---|
| PPM | 每百万件零件中的不良数 | 不合格零件数 ÷ 交付零件总数 × 10^6 | SGM进货检验记录、产线PPM投诉 |
| CSL(受控发运等级) | 供应商质量风险等级 | 由PPM趋势、8D响应时效、审核结论综合评定 | SQE综合评分 |
| DUNS | 邓白氏编号,全球唯一供应商标识 | 按法人主体分配,不因工厂变化而变 | 申请获得 |
| GP-8按时关闭率 | 8D报告在14个工作日内关闭的比例 | 按时关闭数 ÷ 应当关闭总数 | QMS工单系统 |
注意PPM的口径,文件里通常区分“到货检验PPM”和“产线PPM”。前者是SGM IQC抽检或全检发现的不合格;后者是供应商零件在SGM总装或冲压等产线上被挑出的不良。两者的业务含义完全不同,到货检验PPM偏高,说明出厂检验有效性差;产线PPM偏高,说明过程能力不足或防错缺失。如果只用一个PPM数值,分析方向就会出错。
这里给一个IT实施层面的建议:不要只存最终PPM值,至少要存“不良零件数”和“交付总零件数”两个底表字段。因为PPM是比率指标,要看趋势就要能按时间段重算,只存结果值就没法支持任意日期区间的分析。
3. 将文件要求转成系统逻辑:数据模型、状态机和校验规则
3.1 从条款到字段:把自然语言转换成系统配置
要把一份08年的PDF变成可执行的系统逻辑,第一步不是写代码,而是逐条梳理条款,归类成“主数据字段”“流程节点”“校验规则”“预警阈值”四类。常见做法是建一张配置清单,格式类似这样:
| 条款主题 | 条款要求 | 系统实现方式 | 触发时机 |
|---|---|---|---|
| 供应商代码 | 必须使用DUNS号码作为主键 | 主数据唯一索引 | 新增供应商时 |
| PPAP批准 | 关键特性Cpk≥1.33才能提交PSW | 提交按钮禁用 | 提交时校验 |
| 变更管理 | 变更需提前30天申请 | 变更单流程 | 提交后启动计时 |
| 年度试验 | 全尺寸检验不能超期 | 年度计划自动生成任务 | 每年1月1日 |
| 遏制要求 | 24小时内提交遏制报告 | 工单升级规则 | 8D创建后计时 |
把文件条款做成了表格,就等于把散落的段落变成了结构化需求,接下来写SQL建表和维护页面的时候,就不会出现“不知道字段建多少个”的情况。
3.2 供应商绩效自动评分的SQL实现
假设你已经在系统里存储了供应商每月的交付数、不合格数和8D状态,那么年度绩效评分就可以用一个视图来算。这里给出一个MySQL下可以直接改用的示例:
SELECT s.duns_id, s.supplier_name, IFNULL(SUM(CASE WHEN q.incoming_inspected = 'FAIL' THEN 1 ELSE 0 END), 0) AS fail_parts, IFNULL(SUM(q.delivered_qty), 0) AS total_delivered, IFNULL( ROUND(SUM(CASE WHEN q.incoming_inspected = 'FAIL' THEN 1 ELSE 0 END) * 1000000.0 / NULLIF(SUM(q.delivered_qty), 0), 2), 0 ) AS ppm_calc, COUNT(DISTINCT CASE WHEN g8.due_date < CURDATE() AND g8.status NOT IN ('CLOSED') THEN g8.eightd_id END) AS overdue_8d, CASE WHEN SUM(q.delivered_qty) = 0 THEN 0 ELSE ROUND( SUM(CASE WHEN q.incoming_inspected = 'FAIL' THEN 1 ELSE 0 END) * 1000000.0 / NULLIF(SUM(q.delivered_qty), 0), 2 ) END < 500 AND COUNT(DISTINCT CASE WHEN g8.due_date < CURDATE() AND g8.status NOT IN ('CLOSED') THEN g8.eightd_id END) = 0 THEN 'B' ELSE 'C' END AS performance_grade FROM supplier_master s LEFT JOIN quality_inspection q ON s.duns_id = q.duns_id AND q.inspection_month BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 12 MONTH), '%Y-%m-01') AND DATE_FORMAT(CURDATE(), '%Y-%m-01') LEFT JOIN eightd_report g8 ON s.duns_id = g8.duns_id GROUP BY s.duns_id, s.supplier_name这里的逻辑说明:先按供应商分组,统计过去12个月的到货检验不合格件数和总交付量,两个数相除再放大一百万倍得到PPM值。同时统计超期未关闭的8D工单数量。最后用CASE做一个分级:PPM小于500且没有超期8D的评为B级,否则是C级。A级通常还要结合现场审核分数,这个例子里没有纳入,所以只区分了B和C。参数方面要注意,PPM的统计周期是滚动12个月,年初的阈值可以适当放宽(例如调整到800),年末再收紧。
3.3 哪些规则做成硬校验,哪些做成提示
文件里的条款,不是每条都要硬卡流程。做系统时如果全部做成强校验,供应商审核员会被搞疯。自己的经验是分成三档:
第一档:强制拦截类。包括供应商资质不在有效期内禁止新增订单、关键特性Cpk不达标禁止提交PSW、未批准变更不允许切换供应商。这类做硬校验,页面直接阻止操作并给出原因。
第二档:限时督办类。包括GP-8的24小时遏制报告、年度试验超期等。这类的特征是“可以有条件延期”,但必须有书面批准。系统默认开门提醒,超时未关闭自动升级给SQE主管。
第三档:趋势预警类。包括PPM连续三个月上升、同一失效模式重复出现两次以上等。这类不做流程阻断,而是生成风险日志,由SQE判断是否需要启动CSL专项审核。这个分层思路,无论在SAP QM、QMS还是自研系统里都适用,差异只是实现路径。
4. 实战:用一张供应商质量看板管理量产零件的健康度
4.1 面板设计的原则
有了系统数据和逻辑,下一步就是把数据呈现在看板。SGM要求的供应商质量管理,核心是“不让问题带到下一天”,所以在设计看板时,我个人习惯遵循三个原则:第一,第一屏只放“今天必须处理的”,例如超期8D、待审批变更、今日到期的遏制计划;第二,趋势数据只放近13个月(用于同比环比);第三,任何指标超过阈值,要有明显变色和点击下钻功能,不允许在总览页只看到汇总、看不到明细。
4.2 计算连续三个月PPM上升趋势的Python脚本
对于一个自研看板,如果不想每次在SQL里写窗口函数,也可以通过Python脚本定时算好趋势结果再回填到报表库。这里给一个简单的示例:
import pandas as pd import numpy as np def calc_ppm_trend(df: pd.DataFrame) -> pd.DataFrame: """ 计算每家供应商过去6个月的PPM以及是否连续3个月上升 df需要包含: supplier_code, month, delivered_qty, defective_qty """ df = df.sort_values(['supplier_code', 'month']).copy() df['ppm'] = (df['defective_qty'] / df['delivered_qty'].replace(0, np.nan)) * 1_000_000 df['ppm_trend_up'] = ( df.groupby('supplier_code')['ppm'] .transform(lambda x: (x > x.shift(1)) & (x.shift(1) > x.shift(2))) ) return df # 使用示例: # 从数据库查询最近6个月的收货质量数据后调用 calc_ppm_trend这段脚本的关键说明:首先会将原始数据按供应商和月份排序,然后计算PPM。核心是ppm_trend_up这列,用的是shift错位比对法,如果本月PPM大于上月且上月大于上上个月,就标记为“连续上升”。看板上就可以把这个字段做成红色小箭头。参数可根据供应商风险等级调整周期,比如对电池类关键安全件,可以缩短为连续2个月上升即报警。
4.3 看板上的阈值推荐
以下是一套经过现场使用磨合过的默认阈值,写在这里仅供参考,具体需要结合产品的安全等级做调整:
| 指标 | 绿色 | 黄色预警 | 红色报警 |
|---|---|---|---|
| 月度PPM | ≤100 | 100~500 | >500 |
| 8D超期数 | 0 | 1~2 | ≥3 |
| 年度试验到期 | ≥60天 | 30~60天 | <30天 |
| CSL等级 | A/B | C | D |
需要注意,这里的PPM阈值是按一般内饰件或结构件来定的;如果零件是发动机内部件、转向或制动系统,阈值普遍要缩到原来的三分之一甚至更低。原因在于失效后果的严重度不同,SGM GP-11里对安全特性(SC)的管控要比普通特性严得多。实际配置时,建议按“零件安全等级”分表维护阈值,不要做全厂统一值。
5. GP-12早期生产遏制:从文件条款到可操作的每日流程
GP-12是SGM供应商质量要求里很有特色的一个章节。在零件全新投产或变更后,供应商必须执行一段时间的加强检验,通常称为“早期生产遏制”。很多SQE在实战中反馈,最容易出问题的不是检验本身,而是“什么时候开始、什么时候结束”的判定,以及过程记录是否经得起追溯。
常见做法是,将GP-12定义为一个有时间范围且带明确退出条件的项目任务。开始条件通常是:SGM下发了GP-12启动通知,或者是PPAP批准后首批量产件发货时。退出条件则是同时满足三个指标:连续一定批次的PPM为零(通常是15个生产批次)、过程能力达到Cpk≥1.67、无安全特性相关投诉。文件里给出的时间/数量范围,一般不会少于一定的班次数,这里不照搬具体数,因为版本差异较大。
在IT系统里实现时,要设计一个GP-12遏制任务表,包含起始日期、计划结束日期、当前状态、检验样本量、每日不合格数和退出评审结论。当每日不良数不为零时,退出倒计时就要重置,而不是简单按日期判断。这个逻辑和SPC(统计过程控制)里“连续合格批次”的口径类似,在GP-12的数字化实现里,业界常用的做法是采用“滚动后移窗口”——从当前日期往前数N批,必须全部合格才能判定满足退出条件。
假设系统通过API接入了ERP的生产批次报工数据和MES的检验记录,后端就可以用下面的规则代码片段来判定退出条件是否满足:
// 判定GP-12是否满足退出条件 function canExitGP12(batches, requiredCleanBatches = 15, maxAllowedPpm = 0) { const recent = batches.slice(-requiredCleanBatches); const isClean = recent.every(batch => batch.ppm <= maxAllowedPpm); const noSafetyIssue = recent.every(batch => batch.safetyRelated === false); return isClean && noSafetyIssue; }这段 JavaScript 所做的事情是:取出最近15个批次的记录,逐批确认PPM为0且无安全相关问题,全部满足则允许GP-12退出。参数requiredCleanBatches保守一点可以设置为20,激进一点可以设为10,视供应商以往的质量稳定度而定。
最后提一个容易忽略的点:GP-12退出的“审批链”也要在系统里固化。不能代码判断满足条件就直接自动关闭,至少要让SQE基于这份判定结果做一次书面确认,签字时间要留痕。这样既照顾了效率,也保留了人工判断的余地,和文件本身的逻辑不冲突。
本文还有配套的精品资源,点击获取