Files
performance-evaluation-system/backend/insert-mock-ai-result.ts
2026-04-11 11:51:54 +08:00

96 lines
4.1 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import mysql from 'mysql2/promise';
import dotenv from 'dotenv';
dotenv.config();
async function insertMockAIResult() {
try {
const conn = await mysql.createConnection({
host: process.env.DB_HOST || 'localhost',
port: Number(process.env.DB_PORT) || 3306,
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'employee_performance',
});
// 为每个已提交的绩效记录创建模拟AI评分
const [perfRecords] = await conn.query(`
SELECT perf_id FROM performance_month WHERE status = 'submitted'
`);
for (const record of perfRecords as any[]) {
const perfId = record.perf_id;
// 模拟AI评分详情
const aiScoreDetail = [
{ itemName: '工作目标完成情况', weight: 15, aiScore: 85, scoreExplanation: '工作目标基本完成,但部分细节需要改进' },
{ itemName: '工作质量', weight: 10, aiScore: 88, scoreExplanation: '工作质量良好,符合标准' },
{ itemName: '工作效率', weight: 10, aiScore: 82, scoreExplanation: '效率有待提升' },
{ itemName: '业务能力', weight: 10, aiScore: 86, scoreExplanation: '业务能力扎实' },
{ itemName: '创新能力', weight: 5, aiScore: 80, scoreExplanation: '有一定创新意识' },
{ itemName: '问题解决能力', weight: 5, aiScore: 84, scoreExplanation: '能够独立解决问题' },
{ itemName: '项目推进能力', weight: 5, aiScore: 83, scoreExplanation: '项目推进较为顺利' },
{ itemName: '客户服务', weight: 5, aiScore: 87, scoreExplanation: '客户反馈良好' },
{ itemName: '成本控制', weight: 5, aiScore: 85, scoreExplanation: '成本控制意识较强' },
{ itemName: '团队协作', weight: 5, aiScore: 89, scoreExplanation: '团队协作能力突出' },
{ itemName: '沟通能力', weight: 5, aiScore: 86, scoreExplanation: '沟通顺畅' },
{ itemName: '学习成长', weight: 5, aiScore: 88, scoreExplanation: '学习态度积极' },
{ itemName: '责任心', weight: 5, aiScore: 90, scoreExplanation: '责任心强' },
{ itemName: '执行力', weight: 5, aiScore: 87, scoreExplanation: '执行力较好' },
{ itemName: '职业素养', weight: 5, aiScore: 89, scoreExplanation: '职业素养良好' },
{ itemName: '工作态度', weight: 5, aiScore: 91, scoreExplanation: '工作态度端正' },
];
const aiTotalScore = 85.5;
const problems = [
'工作效率有待提升,部分任务完成时间较长',
'创新能力需要加强,建议多尝试新方法',
'项目文档记录不够完善,需要改进'
];
const suggestions = [
'建议制定更详细的工作计划,提高时间管理能力',
'多参加技术分享和培训,拓展知识面',
'加强项目文档编写,形成良好的工作习惯',
'主动承担更多挑战性任务,提升综合能力'
];
// 插入AI评分结果
await conn.query(`
INSERT INTO ai_result (perf_id, ai_score_json, ai_total_score, problems, suggestions, api_response)
VALUES (?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ai_score_json = VALUES(ai_score_json),
ai_total_score = VALUES(ai_total_score),
problems = VALUES(problems),
suggestions = VALUES(suggestions)
`, [
perfId,
JSON.stringify(aiScoreDetail),
aiTotalScore,
JSON.stringify(problems),
JSON.stringify(suggestions),
'模拟AI评分结果'
]);
// 更新performance_month表的ai_score
await conn.query(`
UPDATE performance_month SET ai_score = ? WHERE perf_id = ?
`, [aiTotalScore, perfId]);
console.log(`✓ 已为绩效记录 ${perfId} 创建模拟AI评分`);
}
console.log('\n✅ 模拟AI评分数据插入完成');
await conn.end();
process.exit(0);
} catch (error: any) {
console.error('错误:', error.message);
process.exit(1);
}
}
insertMockAIResult();