✨ 기능: - 기간제 근로자 작업관리 시스템 기본 구조 - 한국어 기반 프론트엔드 (로그인, 대시보드, 작업자 관리) - 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 설정
125 lines
5.4 KiB
SQL
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);
|