UNPKG

code996

Version:

通过分析 Git commit 的时间分布,计算出项目的'996指数'

168 lines 7.16 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.printDetailedAnalysis = printDetailedAnalysis; exports.printRecommendation = printRecommendation; exports.generateRecommendation = generateRecommendation; const chalk_1 = __importDefault(require("chalk")); /** 打印详细分析和建议 */ function printDetailedAnalysis(result, parsedData) { console.log(chalk_1.default.blue('📋 详细分析:')); console.log(); const analysis = []; // 1. 加班强度分析(与 calculator 的描述保持一致) const index = result.index996; if (index <= 0) { analysis.push(`🎉 ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } else if (index <= 21) { analysis.push(`✅ ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } else if (index <= 48) { analysis.push(`🤔 ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } else if (index <= 63) { analysis.push(`⚠️ ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } else if (index <= 100) { analysis.push(`🚨 ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } else if (index <= 130) { analysis.push(`🔥 ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } else { analysis.push(`💀 ${result.index996Str}(加班比例 ${result.overTimeRadio.toFixed(1)}%)`); } // 2. 工作日加班分析 if (parsedData.weekdayOvertime) { const weekdayMax = Math.max(parsedData.weekdayOvertime.monday, parsedData.weekdayOvertime.tuesday, parsedData.weekdayOvertime.wednesday, parsedData.weekdayOvertime.thursday, parsedData.weekdayOvertime.friday); if (weekdayMax > 50) { analysis.push(`⚠️ 工作日加班频繁,${parsedData.weekdayOvertime.peakDay}是加班高峰(${weekdayMax}次提交)`); } else if (weekdayMax > 20) { analysis.push(`📊 工作日有一定加班,${parsedData.weekdayOvertime.peakDay}加班相对较多(${weekdayMax}次提交)`); } } // 3. 周末加班分析 if (parsedData.weekendOvertime) { const weekend = parsedData.weekendOvertime; if (weekend.realOvertimeDays > 15) { analysis.push(`⚠️ 周末加班严重(${weekend.realOvertimeDays}天真正加班),工作侵占休息时间`); } else if (weekend.realOvertimeDays > 8) { analysis.push(`📅 周末有较多加班(${weekend.realOvertimeDays}天),需警惕!`); } else if (weekend.realOvertimeDays > 0) { analysis.push(`📝 偶有周末加班(${weekend.realOvertimeDays}天),大部分是临时修复`); } else if (weekend.casualFixDays > 0) { analysis.push(`✅ 周末基本无加班,仅${weekend.casualFixDays}天临时修复`); } } // 4. 深夜加班分析 if (parsedData.lateNightAnalysis) { const lateNight = parsedData.lateNightAnalysis; const totalLateNight = lateNight.midnight + lateNight.dawn; if (totalLateNight > 20) { analysis.push(`🌙 深夜加班频繁(${totalLateNight}天),严重影响健康`); } else if (totalLateNight > 10) { analysis.push(`🌃 存在深夜加班情况(${totalLateNight}天),需注意休息`); } else if (totalLateNight > 0) { analysis.push(`💡 偶有深夜加班(${totalLateNight}天),整体可控`); } if (lateNight.midnightRate > 10) { analysis.push(`⚠️ ${lateNight.midnightRate.toFixed(1)}% 的工作日有深夜/凌晨提交,需警惕健康风险`); } } // 输出分析 analysis.forEach((item) => { console.log(` ${item}`); }); console.log(); } /** 输出综合建议模块 */ function printRecommendation(result, parsedData) { const recommendation = generateRecommendation(result, parsedData); console.log(chalk_1.default.bold('💬 综合建议:')); console.log(); console.log(` ${recommendation.emoji} ${chalk_1.default.bold(recommendation.action)}`); console.log(); if (recommendation.reason) { console.log(chalk_1.default.gray(` 理由: ${recommendation.reason}`)); console.log(); } } /** 生成综合建议 */ function generateRecommendation(result, parsedData) { // 计算各项指标的严重程度分数 let score = 0; // 996指数权重最高 if (result.index996 > 130) score += 40; else if (result.index996 > 100) score += 30; else if (result.index996 > 63) score += 20; else if (result.index996 > 48) score += 10; // 周末加班 if (parsedData.weekendOvertime) { if (parsedData.weekendOvertime.realOvertimeDays > 15) score += 20; else if (parsedData.weekendOvertime.realOvertimeDays > 8) score += 10; } // 深夜加班 if (parsedData.lateNightAnalysis) { const totalLateNight = parsedData.lateNightAnalysis.midnight + parsedData.lateNightAnalysis.dawn; if (totalLateNight > 20) score += 20; else if (totalLateNight > 10) score += 10; if (parsedData.lateNightAnalysis.midnightRate > 10) score += 15; else if (parsedData.lateNightAnalysis.midnightRate > 5) score += 8; } // 根据总分给出建议 if (score >= 70) { return { emoji: '🏃‍♂️', action: '快跑!这个项目加班文化严重', reason: '工作强度过大,长期如此会严重影响身心健康。建议尽快寻找更好的工作环境。', }; } else if (score >= 50) { return { emoji: '⚠️', action: '需警惕,加班情况较严重', reason: '存在明显的加班文化,需要评估是否值得长期投入。如果短期项目可以接受,长期建议重新考虑。', }; } else if (score >= 30) { return { emoji: '🤔', action: '谨慎评估,有一定加班但可接受', reason: '有一定的加班情况,但在可控范围内。建议关注自身感受,如果压力过大及时调整。', }; } else if (score >= 15) { return { emoji: '👌', action: '可以待,工作强度适中', reason: '工作节奏相对健康,偶有加班属于正常范围。是个不错的工作环境。', }; } else { return { emoji: '🎉', action: '非常好!工作生活平衡良好', reason: '加班很少,工作环境健康。这是难得的好团队,值得长期发展。', }; } } //# sourceMappingURL=analysis.js.map