feat: 모델 및 데이터베이스 구조 개선
- 모델 파일들의 데이터베이스 연결 및 쿼리 최적화 - 마이그레이션 파일 정리 및 통합 - Docker 설정 파일 추가 - 프로젝트 시작/중지 스크립트 추가 - README 및 문서 업데이트
This commit is contained in:
@@ -31,7 +31,7 @@ class WorkAnalysis {
|
||||
totalHours: parseFloat(stats.total_hours) || 0,
|
||||
totalReports: parseInt(stats.total_reports) || 0,
|
||||
activeProjects: parseInt(stats.active_projects) || 0,
|
||||
activeWorkers: parseInt(stats.active_workers) || 0,
|
||||
activeworkers: parseInt(stats.active_workers) || 0,
|
||||
errorRate: parseFloat(errorRate.toFixed(2)) || 0,
|
||||
avgHoursPerReport: parseFloat(stats.avg_hours_per_report) || 0
|
||||
};
|
||||
@@ -82,7 +82,7 @@ class WorkAnalysis {
|
||||
SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as errorCount,
|
||||
COUNT(DISTINCT dwr.report_date) as workingDays
|
||||
FROM daily_work_reports dwr
|
||||
LEFT JOIN Workers w ON dwr.worker_id = w.worker_id
|
||||
LEFT JOIN workers w ON dwr.worker_id = w.worker_id
|
||||
WHERE dwr.report_date BETWEEN ? AND ?
|
||||
GROUP BY dwr.worker_id, w.worker_name
|
||||
ORDER BY totalHours DESC
|
||||
@@ -201,7 +201,7 @@ class WorkAnalysis {
|
||||
u.name as created_by_name,
|
||||
dwr.created_at
|
||||
FROM daily_work_reports dwr
|
||||
LEFT JOIN Workers w ON dwr.worker_id = w.worker_id
|
||||
LEFT JOIN workers w ON dwr.worker_id = w.worker_id
|
||||
LEFT JOIN Projects p ON dwr.project_id = p.project_id
|
||||
LEFT JOIN work_types wt ON dwr.work_type_id = wt.id
|
||||
LEFT JOIN work_status_types wst ON dwr.work_status_id = wst.id
|
||||
@@ -269,7 +269,7 @@ class WorkAnalysis {
|
||||
totalHours: parseFloat(row.total_hours) || 0,
|
||||
totalReports: parseInt(row.total_reports) || 0,
|
||||
avgHours: parseFloat(row.avg_hours) || 0,
|
||||
activeWorkers: parseInt(row.active_workers) || 0
|
||||
activeworkers: parseInt(row.active_workers) || 0
|
||||
}));
|
||||
} catch (error) {
|
||||
throw new Error(`요일별 패턴 분석 실패: ${error.message}`);
|
||||
@@ -301,7 +301,7 @@ class WorkAnalysis {
|
||||
error_type_name: row.error_type_name || `에러유형 ${row.error_type_id}`,
|
||||
errorCount: parseInt(row.error_count) || 0,
|
||||
totalHours: parseFloat(row.total_hours) || 0,
|
||||
affectedWorkers: parseInt(row.affected_workers) || 0,
|
||||
affectedworkers: parseInt(row.affected_workers) || 0,
|
||||
affectedProjects: parseInt(row.affected_projects) || 0
|
||||
}));
|
||||
} catch (error) {
|
||||
@@ -333,7 +333,7 @@ class WorkAnalysis {
|
||||
monthName: row.month_name,
|
||||
totalHours: parseFloat(row.total_hours) || 0,
|
||||
totalReports: parseInt(row.total_reports) || 0,
|
||||
activeWorkers: parseInt(row.active_workers) || 0,
|
||||
activeworkers: parseInt(row.active_workers) || 0,
|
||||
activeProjects: parseInt(row.active_projects) || 0,
|
||||
errorCount: parseInt(row.error_count) || 0,
|
||||
errorRate: row.total_reports > 0 ? parseFloat(((row.error_count / row.total_reports) * 100).toFixed(2)) : 0
|
||||
@@ -362,7 +362,7 @@ class WorkAnalysis {
|
||||
AND report_date BETWEEN ? AND ?
|
||||
)) * 100, 2) as percentage
|
||||
FROM daily_work_reports dwr
|
||||
LEFT JOIN Workers w ON dwr.worker_id = w.worker_id
|
||||
LEFT JOIN workers w ON dwr.worker_id = w.worker_id
|
||||
LEFT JOIN work_types wt ON dwr.work_type_id = wt.id
|
||||
LEFT JOIN Projects p ON dwr.project_id = p.project_id
|
||||
WHERE dwr.report_date BETWEEN ? AND ?
|
||||
|
||||
Reference in New Issue
Block a user