오류 수정, 통계 보강

This commit is contained in:
2025-06-08 20:21:37 +09:00
parent 1a3706d7a5
commit 141a0de6d0
42 changed files with 2645 additions and 799 deletions
+26 -4
View File
@@ -13,6 +13,7 @@ const models = require('../models');
const { Event, EventParticipant, Member, EventScore, Club, EventTeam, ClubMember, EventTeamMember } = models;
const { Op, Sequelize } = require('sequelize');
const { sequelize } = require('../models');
const averageService = require('../services/averageService');
// 업로드 디렉토리 설정
const uploadDir = path.join(__dirname, '../uploads');
@@ -163,22 +164,34 @@ exports.parseEventFile = async (req, res) => {
}
const clubMembers = await club.getMembers({
attributes: ['id', 'name', 'gender', 'average', 'handicap'],
attributes: ['id', 'name', 'gender', 'handicap'],
through: { where: { status: 'active' } }
});
// 각 회원의 동적 에버리지 계산
const memberMap = new Map();
clubMembers.forEach(member => {
for (const member of clubMembers) {
if (member && member.name) {
let dynamicAverage = 0;
try {
const averageData = await averageService.calculateMemberAverageByClubSetting(
member.id,
clubId
);
dynamicAverage = averageData.average;
} catch (error) {
console.error(`회원 ${member.id}의 에버리지 계산 오류:`, error);
}
memberMap.set(member.name, {
id: member.id,
name: member.name,
gender: member.gender,
average: member.average,
average: dynamicAverage,
handicap: member.handicap
});
}
});
};
// 파일 형식에 따른 처리
if (fileExt === '.xlsx' || fileExt === '.xls') {
@@ -194,6 +207,15 @@ exports.parseEventFile = async (req, res) => {
return res.status(400).json({ message: '지원되지 않는 파일 형식입니다.' });
}
// 참가자별 동적 에버리지 계산 호출 (memberId가 있을 때만)
if (parsedData && parsedData.participants) {
for (const p of parsedData.participants) {
if (p.memberId) {
await averageService.calculateMemberAverageByClubSetting(p.memberId, clubId);
}
}
}
res.json({
message: '파일 파싱 완료',
data: parsedData