- Adds knex.js to manage database schema changes systematically. - Creates an initial migration file based on `hyungi_schema_v2.sql` to represent the current database state. - Adds npm scripts (`db:migrate`, `db:rollback`, etc.) for easy execution of migration tasks. - Archives legacy SQL files and old migration scripts into the `db_archive/` directory to prevent confusion and clean up the project structure.
68 lines
3.1 KiB
SQL
68 lines
3.1 KiB
SQL
-- 009_add_overtime_warning_columns.sql
|
|
-- monthly_summary 테이블에 12시간 초과(확인필요) 상태 컬럼 추가
|
|
|
|
-- monthly_summary 테이블에 컬럼 추가
|
|
ALTER TABLE monthly_summary
|
|
ADD COLUMN overtime_warning_workers INT DEFAULT 0 COMMENT '확인필요(12시간초과) 작업자 수' AFTER error_workers,
|
|
ADD COLUMN has_overtime_warning BOOLEAN DEFAULT FALSE COMMENT '확인필요 상태 있음' AFTER has_errors;
|
|
|
|
-- UpdateDailySummary 프로시저 업데이트
|
|
DROP PROCEDURE IF EXISTS UpdateDailySummary;
|
|
DELIMITER //
|
|
CREATE PROCEDURE UpdateDailySummary(
|
|
IN p_date DATE
|
|
)
|
|
BEGIN
|
|
DECLARE v_year INT;
|
|
DECLARE v_month INT;
|
|
|
|
SET v_year = YEAR(p_date);
|
|
SET v_month = MONTH(p_date);
|
|
|
|
INSERT INTO monthly_summary (
|
|
year, month, date,
|
|
total_workers, working_workers,
|
|
incomplete_workers, partial_workers, complete_workers,
|
|
overtime_workers, vacation_workers, error_workers, overtime_warning_workers,
|
|
total_work_hours, total_work_count, total_error_count,
|
|
has_issues, has_errors, has_overtime_warning
|
|
)
|
|
SELECT
|
|
v_year, v_month, p_date,
|
|
COUNT(*) as total_workers,
|
|
COUNT(CASE WHEN work_status != 'incomplete' THEN 1 END) as working_workers,
|
|
COUNT(CASE WHEN work_status = 'incomplete' THEN 1 END) as incomplete_workers,
|
|
COUNT(CASE WHEN work_status = 'partial' THEN 1 END) as partial_workers,
|
|
COUNT(CASE WHEN work_status IN ('complete', 'overtime', 'vacation-full', 'vacation-half', 'vacation-quarter', 'vacation-half-half') THEN 1 END) as complete_workers,
|
|
COUNT(CASE WHEN work_status = 'overtime' THEN 1 END) as overtime_workers,
|
|
COUNT(CASE WHEN work_status LIKE 'vacation%' THEN 1 END) as vacation_workers,
|
|
COUNT(CASE WHEN work_status = 'error' THEN 1 END) as error_workers,
|
|
COUNT(CASE WHEN work_status = 'overtime-warning' THEN 1 END) as overtime_warning_workers,
|
|
SUM(total_work_hours) as total_work_hours,
|
|
SUM(total_work_count) as total_work_count,
|
|
SUM(error_work_count) as total_error_count,
|
|
MAX(has_issues) as has_issues,
|
|
MAX(has_error) as has_errors,
|
|
MAX(CASE WHEN work_status = 'overtime-warning' THEN 1 ELSE 0 END) as has_overtime_warning
|
|
FROM monthly_worker_status
|
|
WHERE date = p_date
|
|
ON DUPLICATE KEY UPDATE
|
|
total_workers = VALUES(total_workers),
|
|
working_workers = VALUES(working_workers),
|
|
incomplete_workers = VALUES(incomplete_workers),
|
|
partial_workers = VALUES(partial_workers),
|
|
complete_workers = VALUES(complete_workers),
|
|
overtime_workers = VALUES(overtime_workers),
|
|
vacation_workers = VALUES(vacation_workers),
|
|
error_workers = VALUES(error_workers),
|
|
overtime_warning_workers = VALUES(overtime_warning_workers),
|
|
total_work_hours = VALUES(total_work_hours),
|
|
total_work_count = VALUES(total_work_count),
|
|
total_error_count = VALUES(total_error_count),
|
|
has_issues = VALUES(has_issues),
|
|
has_errors = VALUES(has_errors),
|
|
has_overtime_warning = VALUES(has_overtime_warning),
|
|
last_updated = CURRENT_TIMESTAMP;
|
|
END //
|
|
DELIMITER ;
|