Files
tk-factory-services/tkpurchase/migrations/001_create_tables.sql
Hyungi Ahn 281f5d35d1 feat: tkpurchase 시스템 Phase 1 - 협력업체 마스터 + 당일 방문 관리
신규 독립 시스템 tkpurchase (구매/방문 관리) 구축:
- 협력업체 CRUD + 소속 작업자 관리 (마스터 데이터 소유)
- 당일 방문 등록/체크인/체크아웃 + 일괄 마감
- 업체 자동완성, CSV 내보내기, 집계 통계
- 자정 자동 체크아웃 (node-cron)
- tkuser 협력업체 읽기 전용 탭 + 권한 그리드(tkpurchase-perms) 추가
- docker-compose에 tkpurchase-api/web 서비스 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:45:37 +09:00

76 lines
2.6 KiB
SQL

-- tkpurchase Phase 1: 협력업체 + 방문 관리 테이블
-- ① 협력업체
CREATE TABLE IF NOT EXISTS partner_companies (
id INT AUTO_INCREMENT PRIMARY KEY,
company_name VARCHAR(200) NOT NULL,
business_number VARCHAR(20) UNIQUE,
representative VARCHAR(100),
contact_name VARCHAR(100),
contact_phone VARCHAR(20),
address VARCHAR(500),
business_type JSON,
insurance_number VARCHAR(30),
insurance_expiry DATE,
notes TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- ② 협력업체 소속 작업자
CREATE TABLE IF NOT EXISTS partner_workers (
id INT AUTO_INCREMENT PRIMARY KEY,
company_id INT NOT NULL,
worker_name VARCHAR(100) NOT NULL,
position VARCHAR(50),
is_team_leader BOOLEAN DEFAULT FALSE,
phone VARCHAR(20),
safety_training_date DATE,
notes TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (company_id) REFERENCES partner_companies(id)
);
-- ③ 당일 방문 기록
CREATE TABLE IF NOT EXISTS daily_visits (
id INT AUTO_INCREMENT PRIMARY KEY,
visit_date DATE NOT NULL,
company_id INT,
company_name VARCHAR(200),
visitor_name VARCHAR(100) NOT NULL,
visitor_count INT DEFAULT 1,
purpose ENUM('day_labor','equipment_repair','inspection','delivery',
'safety_audit','client_audit','construction','other') NOT NULL,
purpose_detail VARCHAR(500),
workplace_name VARCHAR(200),
safety_education_yn BOOLEAN DEFAULT FALSE,
vehicle_number VARCHAR(20),
check_in_time DATETIME,
check_out_time DATETIME,
checkout_note VARCHAR(500),
notes TEXT,
status ENUM('checked_in','checked_out','auto_checkout','cancelled') DEFAULT 'checked_in',
managing_department VARCHAR(50),
registered_by INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_visit_date (visit_date),
INDEX idx_company (company_id),
INDEX idx_status (status),
FOREIGN KEY (company_id) REFERENCES partner_companies(id) ON DELETE SET NULL
);
-- ④ 방문 건별 개별 인원 명단
CREATE TABLE IF NOT EXISTS daily_visit_workers (
id INT AUTO_INCREMENT PRIMARY KEY,
daily_visit_id INT NOT NULL,
partner_worker_id INT,
worker_name VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (daily_visit_id) REFERENCES daily_visits(id) ON DELETE CASCADE,
FOREIGN KEY (partner_worker_id) REFERENCES partner_workers(id) ON DELETE SET NULL
);