feat: 모델 및 데이터베이스 구조 개선

- 모델 파일들의 데이터베이스 연결 및 쿼리 최적화
- 마이그레이션 파일 정리 및 통합
- Docker 설정 파일 추가
- 프로젝트 시작/중지 스크립트 추가
- README 및 문서 업데이트
This commit is contained in:
hyungi
2025-10-27 10:01:12 +09:00
parent f96604b01e
commit 5ff0c7cd60
19 changed files with 13972 additions and 33 deletions

View File

@@ -54,7 +54,7 @@ const createDailyReport = async (reportData, callback) => {
const [existingReports] = await conn.query(
`SELECT dwr.created_by, u.name as created_by_name, COUNT(*) as count, SUM(dwr.work_hours) as total_hours
FROM daily_work_reports dwr
LEFT JOIN Users u ON dwr.created_by = u.user_id
LEFT JOIN users u ON dwr.created_by = u.user_id
WHERE dwr.report_date = ? AND dwr.worker_id = ?
GROUP BY dwr.created_by`,
[report_date, worker_id]
@@ -82,7 +82,7 @@ const [existingReports] = await conn.query(
const [finalReports] = await conn.query(
`SELECT dwr.created_by, u.name as created_by_name, COUNT(*) as count, SUM(dwr.work_hours) as total_hours
FROM daily_work_reports dwr
LEFT JOIN Users u ON dwr.created_by = u.user_id
LEFT JOIN users u ON dwr.created_by = u.user_id
WHERE dwr.report_date = ? AND dwr.worker_id = ?
GROUP BY dwr.created_by`,
[report_date, worker_id]
@@ -164,7 +164,7 @@ const getMyAccumulatedHours = async (date, worker_id, created_by, callback) => {
ORDER BY created_at
) as my_entries
FROM daily_work_reports dwr
LEFT JOIN Projects p ON dwr.project_id = p.project_id
LEFT JOIN projects p ON dwr.project_id = p.project_id
WHERE dwr.report_date = ? AND dwr.worker_id = ? AND dwr.created_by = ?
`;
@@ -216,8 +216,8 @@ const getContributorsByDate = async (date, worker_id, callback) => {
ORDER BY dwr.created_at SEPARATOR ', '
) as entry_details
FROM daily_work_reports dwr
LEFT JOIN Users u ON dwr.created_by = u.user_id
LEFT JOIN Projects p ON dwr.project_id = p.project_id
LEFT JOIN users u ON dwr.created_by = u.user_id
LEFT JOIN projects p ON dwr.project_id = p.project_id
WHERE dwr.report_date = ? AND dwr.worker_id = ?
GROUP BY dwr.created_by
ORDER BY total_hours DESC, first_entry ASC
@@ -245,9 +245,9 @@ const removeSpecificEntry = async (entry_id, deleted_by, callback) => {
const [entryInfo] = await conn.query(
`SELECT dwr.*, w.worker_name, p.project_name, u.name as created_by_name
FROM daily_work_reports dwr
LEFT JOIN Workers w ON dwr.worker_id = w.worker_id
LEFT JOIN Projects p ON dwr.project_id = p.project_id
LEFT JOIN Users u ON dwr.created_by = u.user_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 users u ON dwr.created_by = u.user_id
WHERE dwr.id = ?`,
[entry_id]
);
@@ -333,12 +333,12 @@ const getSelectQuery = () => `
dwr.created_at,
dwr.updated_at
FROM daily_work_reports dwr
LEFT JOIN Workers w ON dwr.worker_id = w.worker_id
LEFT JOIN Projects p ON dwr.project_id = p.project_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
LEFT JOIN error_types et ON dwr.error_type_id = et.id
LEFT JOIN Users u ON dwr.created_by = u.user_id
LEFT JOIN users u ON dwr.created_by = u.user_id
`;
/**
@@ -524,7 +524,7 @@ const getSummaryByDate = async (date, callback) => {
COUNT(*) as work_entries_count,
SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as error_count
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 = ?
GROUP BY dwr.worker_id, dwr.report_date
ORDER BY w.worker_name ASC
@@ -553,7 +553,7 @@ const getSummaryByWorker = async (worker_id, callback) => {
COUNT(*) as work_entries_count,
SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as error_count
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.worker_id = ?
GROUP BY dwr.report_date, dwr.worker_id
ORDER BY dwr.report_date DESC
@@ -587,8 +587,8 @@ const getMonthlySummary = async (year, month, callback) => {
GROUP_CONCAT(DISTINCT p.project_name ORDER BY p.project_name) as projects,
GROUP_CONCAT(DISTINCT wt.name ORDER BY wt.name) as work_types
FROM daily_work_reports dwr
LEFT JOIN Workers w ON dwr.worker_id = w.worker_id
LEFT JOIN Projects p ON dwr.project_id = p.project_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
WHERE dwr.report_date BETWEEN ? AND ?
GROUP BY dwr.report_date, dwr.worker_id