Files
hyungi 13b09ef2ae 🚀 초기 프로젝트 설정 완료
 기능:
- 기간제 근로자 작업관리 시스템 기본 구조
- 한국어 기반 프론트엔드 (로그인, 대시보드, 작업자 관리)
- Node.js Express 백엔드 API 서버 구조
- MySQL 데이터베이스 스키마 설계
- 14000번대 포트 구성으로 충돌 방지

📁 구조:
- frontend/ : HTML, CSS, JS (Bootstrap 5)
- backend/ : Node.js, Express, MySQL
- database/ : 초기화 스크립트
- docs/ : 문서

🔌 포트:
- 웹: 14000, API: 14001, DB: 14002, phpMyAdmin: 14003

🎯 다음 단계: 백엔드 API 라우트 구현 및 Docker 설정
2025-10-20 13:31:39 +09:00

125 lines
5.4 KiB
SQL

-- 기간제 근로자 작업관리 시스템 DB 초기화 스크립트
CREATE DATABASE IF NOT EXISTS worker_management;
USE worker_management;
-- 사용자 테이블 (admin/user 권한)
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
role ENUM('admin', 'user') DEFAULT 'user',
name VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 작업자 테이블 (용접사/배관사)
CREATE TABLE workers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
job_type ENUM('welder', 'plumber') NOT NULL COMMENT '용접사/배관사',
phone VARCHAR(20),
hire_date DATE,
status ENUM('active', 'inactive') DEFAULT 'active',
created_by INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (created_by) REFERENCES users(id)
);
-- 일일 작업 기록 테이블
CREATE TABLE daily_work (
id INT AUTO_INCREMENT PRIMARY KEY,
worker_id INT NOT NULL,
work_date DATE NOT NULL,
work_description TEXT,
start_time TIME,
end_time TIME,
work_hours DECIMAL(4,2) COMMENT '작업 시간',
location VARCHAR(200) COMMENT '작업 위치',
status ENUM('planned', 'in_progress', 'completed', 'cancelled') DEFAULT 'planned',
notes TEXT COMMENT '특이사항',
created_by INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (worker_id) REFERENCES workers(id),
FOREIGN KEY (created_by) REFERENCES users(id),
INDEX idx_work_date (work_date),
INDEX idx_worker_date (worker_id, work_date)
);
-- 에러사항 기록 테이블
CREATE TABLE error_reports (
id INT AUTO_INCREMENT PRIMARY KEY,
worker_id INT,
error_date DATE NOT NULL,
error_time TIME,
error_type ENUM('equipment', 'safety', 'quality', 'process', 'other') NOT NULL,
error_description TEXT NOT NULL,
location VARCHAR(200),
severity ENUM('low', 'medium', 'high', 'critical') DEFAULT 'medium',
status ENUM('reported', 'investigating', 'resolved', 'closed') DEFAULT 'reported',
resolution TEXT COMMENT '해결 방안',
resolved_at TIMESTAMP NULL,
resolved_by INT,
created_by INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (worker_id) REFERENCES workers(id),
FOREIGN KEY (resolved_by) REFERENCES users(id),
FOREIGN KEY (created_by) REFERENCES users(id),
INDEX idx_error_date (error_date),
INDEX idx_status (status)
);
-- 요청사항 테이블 (장비/소모품)
CREATE TABLE requests (
id INT AUTO_INCREMENT PRIMARY KEY,
worker_id INT,
request_type ENUM('equipment', 'supplies', 'maintenance', 'other') NOT NULL,
item_name VARCHAR(200) NOT NULL,
quantity INT DEFAULT 1,
description TEXT,
urgency ENUM('low', 'normal', 'high', 'urgent') DEFAULT 'normal',
status ENUM('pending', 'approved', 'ordered', 'delivered', 'rejected') DEFAULT 'pending',
requested_date DATE NOT NULL,
needed_date DATE COMMENT '필요 날짜',
approved_by INT,
approved_at TIMESTAMP NULL,
notes TEXT COMMENT '관리자 메모',
created_by INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (worker_id) REFERENCES workers(id),
FOREIGN KEY (approved_by) REFERENCES users(id),
FOREIGN KEY (created_by) REFERENCES users(id),
INDEX idx_request_date (requested_date),
INDEX idx_status (status)
);
-- 기본 데이터 삽입
INSERT INTO users (username, password, role, name) VALUES
('admin', '$2b$10$rOzJqQjQjQjQjQjQjQjQjOzJqQjQjQjQjQjQjQjQjQjQjQjQjQjQjQ', 'admin', '관리자'),
('user', '$2b$10$rOzJqQjQjQjQjQjQjQjQjOzJqQjQjQjQjQjQjQjQjQjQjQjQjQjQjQ', 'user', '사용자');
-- 샘플 작업자 데이터
INSERT INTO workers (name, job_type, phone, hire_date, created_by) VALUES
('김용접', 'welder', '010-1234-5678', '2024-01-15', 1),
('이배관', 'plumber', '010-2345-6789', '2024-02-01', 1),
('박용접', 'welder', '010-3456-7890', '2024-03-01', 1);
-- 샘플 일일 작업 데이터
INSERT INTO daily_work (worker_id, work_date, work_description, start_time, end_time, work_hours, location, status, created_by) VALUES
(1, CURDATE(), '파이프 용접 작업', '09:00:00', '17:00:00', 8.0, '1층 작업장', 'completed', 1),
(2, CURDATE(), '배관 설치 작업', '09:00:00', '16:00:00', 7.0, '2층 화장실', 'in_progress', 1);
-- 샘플 에러사항 데이터
INSERT INTO error_reports (worker_id, error_date, error_time, error_type, error_description, location, severity, created_by) VALUES
(1, CURDATE(), '14:30:00', 'equipment', '용접기 과열로 인한 작업 중단', '1층 작업장', 'medium', 1);
-- 샘플 요청사항 데이터
INSERT INTO requests (worker_id, request_type, item_name, quantity, description, urgency, requested_date, needed_date, created_by) VALUES
(1, 'supplies', '용접봉', 10, 'STS 용접봉 필요', 'normal', CURDATE(), DATE_ADD(CURDATE(), INTERVAL 3 DAY), 1),
(2, 'equipment', '파이프 커터', 1, '대형 파이프 절단용', 'high', CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 1);