77 lines
2.4 KiB
JavaScript
77 lines
2.4 KiB
JavaScript
|
|
// scripts/agents/balance-checker.js
|
||
|
|
// Balance Checker · 天平校验器
|
||
|
|
// ZY-P1-TWIN-003 · Phase 1 · Twin Balance Agent
|
||
|
|
// 版权:国作登字-2026-A-00037559
|
||
|
|
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 检查双子平衡状态 · 天平是否倾斜
|
||
|
|
* @param {{ left: { composite: number }, right: { composite: number }, balance: number }} mergeResult
|
||
|
|
* @returns {{ balanced: boolean, balance: number, drift: number, alert: null|object }}
|
||
|
|
*/
|
||
|
|
function check(mergeResult) {
|
||
|
|
const { left, right, balance } = mergeResult;
|
||
|
|
const drift = Math.round(Math.abs(left.composite - right.composite) * 10000) / 10000;
|
||
|
|
|
||
|
|
// 天平完全平衡
|
||
|
|
if (balance >= 1.0) {
|
||
|
|
return { balanced: true, balance, drift: 0, alert: null };
|
||
|
|
}
|
||
|
|
|
||
|
|
// 天平倾斜 — 生成告警
|
||
|
|
const laggingSide = left.composite < right.composite ? 'left (EXE-Engine)' : 'right (Grid-DB)';
|
||
|
|
const leadingSide = left.composite >= right.composite ? 'left (EXE-Engine)' : 'right (Grid-DB)';
|
||
|
|
const deficit = drift;
|
||
|
|
|
||
|
|
let level;
|
||
|
|
if (drift < 0.05) {
|
||
|
|
level = 'low';
|
||
|
|
} else if (drift < 0.15) {
|
||
|
|
level = 'medium';
|
||
|
|
} else {
|
||
|
|
level = 'high';
|
||
|
|
}
|
||
|
|
|
||
|
|
const recommendations = {
|
||
|
|
low: '轻微偏差,建议关注但无需立即处理',
|
||
|
|
medium: '中等偏差,建议加强落后侧开发或修复测试',
|
||
|
|
high: '严重偏差,需要立即介入,可能存在架构问题'
|
||
|
|
};
|
||
|
|
|
||
|
|
return {
|
||
|
|
balanced: false,
|
||
|
|
balance,
|
||
|
|
drift,
|
||
|
|
alert: {
|
||
|
|
level,
|
||
|
|
laggingSide,
|
||
|
|
leadingSide,
|
||
|
|
deficit,
|
||
|
|
recommendation: recommendations[level]
|
||
|
|
}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── CLI 入口 ─────────────────────────────────────────────────────────────
|
||
|
|
if (require.main === module) {
|
||
|
|
const { collectBoth } = require('./twin-collector');
|
||
|
|
const { merge } = require('./twin-merge');
|
||
|
|
|
||
|
|
console.log('🔍 Balance Checker · 天平校验\n');
|
||
|
|
const data = collectBoth();
|
||
|
|
const merged = merge(data.left, data.right);
|
||
|
|
const result = check(merged);
|
||
|
|
|
||
|
|
if (result.balanced) {
|
||
|
|
console.log(' ✅ 双子天平完全平衡');
|
||
|
|
} else {
|
||
|
|
console.log(` ⚠️ 偏差等级: ${result.alert.level}`);
|
||
|
|
console.log(` 📉 落后侧: ${result.alert.laggingSide}`);
|
||
|
|
console.log(` 📊 偏差值: ${result.drift}`);
|
||
|
|
console.log(` 💡 建议: ${result.alert.recommendation}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = { check };
|