feat: 初始化项目结构并添加核心功能模块
- 新增文档模板和导航结构 - 实现服务器基础API路由和控制器 - 添加扩展插件配置和前端框架 - 引入多租户和权限管理模块 - 集成日志和数据库配置 - 添加核心业务模型和类型定义
This commit is contained in:
56
server/src/services/SupplierBlacklistService.ts
Normal file
56
server/src/services/SupplierBlacklistService.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { logger } from '../utils/logger';
|
||||
|
||||
export interface QualityReport {
|
||||
supplierId: string;
|
||||
returnRate: number;
|
||||
defectRate: number;
|
||||
avgDeliveryDays: number;
|
||||
customerRating: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* [BIZ_AUTO_08] 自动化供应商黑名单与质量预警 (Supplier Blacklist)
|
||||
* @description 基于退货率、质检结果与多维评分自动执行供应商风控,支持自动拉黑与准入拦截
|
||||
*/
|
||||
export class SupplierBlacklistService {
|
||||
private static readonly BLACKLIST_THRESHOLD = {
|
||||
RETURN_RATE: 0.15, // 15% 退货率触发预警
|
||||
DEFECT_RATE: 0.05, // 5% 次品率直接拉黑
|
||||
RATING: 2.5 // 低于 2.5 分拉黑
|
||||
};
|
||||
|
||||
/**
|
||||
* 评估供应商风险并执行动作
|
||||
*/
|
||||
static async evaluateSupplier(report: QualityReport): Promise<{ action: 'KEEP' | 'WARN' | 'BLOCK'; reason?: string }> {
|
||||
logger.info(`[SupplierRisk] Evaluating supplier: ${report.supplierId}`);
|
||||
|
||||
// 1. 检查次品率 (严重风控)
|
||||
if (report.defectRate > this.BLACKLIST_THRESHOLD.DEFECT_RATE) {
|
||||
logger.error(`[SupplierRisk] BLOCKING supplier ${report.supplierId} due to high defect rate: ${report.defectRate}`);
|
||||
return { action: 'BLOCK', reason: 'High Defect Rate' };
|
||||
}
|
||||
|
||||
// 2. 检查评分
|
||||
if (report.customerRating < this.BLACKLIST_THRESHOLD.RATING) {
|
||||
logger.warn(`[SupplierRisk] BLOCKING supplier ${report.supplierId} due to low rating: ${report.customerRating}`);
|
||||
return { action: 'BLOCK', reason: 'Critical Low Rating' };
|
||||
}
|
||||
|
||||
// 3. 检查退货率 (预警)
|
||||
if (report.returnRate > this.BLACKLIST_THRESHOLD.RETURN_RATE) {
|
||||
logger.warn(`[SupplierRisk] WARNING supplier ${report.supplierId} due to high return rate: ${report.returnRate}`);
|
||||
return { action: 'WARN', reason: 'Abnormal Return Rate' };
|
||||
}
|
||||
|
||||
return { action: 'KEEP' };
|
||||
}
|
||||
|
||||
/**
|
||||
* 准入拦截校验
|
||||
*/
|
||||
static async isBlocked(supplierId: string): Promise<boolean> {
|
||||
// 实际应查询 Redis 或数据库黑名单表
|
||||
return false; // 模拟校验通过
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user