/* eslint-disable */ /** * 红线可计算触发条件:将红线绑定到某项度量(月净利率/月毛利率/客户平均逾期天数/单客户集中度), * 配合比较运算符与阈值,使红线可在评估时自动判定命中(而非一律"待核实")。 * * - linked_metric: 关联度量键(netMargin / grossMargin / avgOverdueDays / concentration), * 为空表示该红线仍需人工核实(合规/资质类红线)。 * - compare_op: 比较运算符(>=, <=, >, <)。 * - threshold: 阈值;百分比类度量(净利率/毛利率/集中度)按百分数填写(如 0 表示 0%、5 表示 5%), * 逾期天数按天填写。 */ exports.up = (pgm) => { pgm.sql(` ALTER TABLE redline_rules ADD COLUMN IF NOT EXISTS linked_metric TEXT; ALTER TABLE redline_rules ADD COLUMN IF NOT EXISTS compare_op TEXT; ALTER TABLE redline_rules ADD COLUMN IF NOT EXISTS threshold DOUBLE PRECISION; `); // 为内置数值型红线预置可计算条件(仅当字段为空时设置,避免覆盖人工配置)。 pgm.sql(` UPDATE redline_rules SET linked_metric='netMargin', compare_op='<', threshold=0 WHERE id='negative-margin-3m' AND linked_metric IS NULL; UPDATE redline_rules SET linked_metric='avgOverdueDays', compare_op='>', threshold=90 WHERE id='overdue-90days' AND linked_metric IS NULL; UPDATE redline_rules SET linked_metric='concentration', compare_op='>', threshold=50 WHERE id='concentration-50pct' AND linked_metric IS NULL; `); }; exports.down = (pgm) => { pgm.sql(` ALTER TABLE redline_rules DROP COLUMN IF EXISTS linked_metric; ALTER TABLE redline_rules DROP COLUMN IF EXISTS compare_op; ALTER TABLE redline_rules DROP COLUMN IF EXISTS threshold; `); };