feat(purchase): 카테고리 테이블 분리 + 동적 로드 + tkuser 관리
- DB: consumable_categories 테이블 생성, ENUM→VARCHAR 변환, 시드 4개 - API: GET/POST/PUT/DEACTIVATE /api/consumable-categories - 프론트: 3개 JS 하드코딩 CAT_LABELS 제거 → API loadCategories() 동적 로드 - tkuser: 카테고리 관리 섹션 추가, select 옵션 동적 생성 - 별칭 시드 SQL (INSERT IGNORE 기반) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
-- 소모품 카테고리 테이블 분리 (ENUM → 마스터 테이블)
|
||||
|
||||
-- 1단계: 카테고리 마스터 테이블 생성
|
||||
CREATE TABLE IF NOT EXISTS consumable_categories (
|
||||
category_id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
category_code VARCHAR(30) NOT NULL UNIQUE COMMENT '코드 (consumable, safety 등)',
|
||||
category_name VARCHAR(50) NOT NULL COMMENT '표시명',
|
||||
icon VARCHAR(30) DEFAULT 'fa-box' COMMENT 'Font Awesome 아이콘',
|
||||
color_bg VARCHAR(30) DEFAULT '#dbeafe' COMMENT '배경색',
|
||||
color_fg VARCHAR(30) DEFAULT '#1e40af' COMMENT '글자색',
|
||||
sort_order INT DEFAULT 0,
|
||||
is_active TINYINT(1) DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 2단계: 기존 4개 시드
|
||||
INSERT IGNORE INTO consumable_categories (category_code, category_name, icon, color_bg, color_fg, sort_order) VALUES
|
||||
('consumable', '소모품', 'fa-box', '#dbeafe', '#1e40af', 1),
|
||||
('safety', '안전용품', 'fa-hard-hat', '#dcfce7', '#166534', 2),
|
||||
('repair', '수선비', 'fa-wrench', '#fef3c7', '#92400e', 3),
|
||||
('equipment', '설비', 'fa-cogs', '#f3e8ff', '#7e22ce', 4);
|
||||
|
||||
-- 3단계: ENUM → VARCHAR 변환
|
||||
ALTER TABLE consumable_items MODIFY COLUMN category VARCHAR(30) DEFAULT 'consumable';
|
||||
ALTER TABLE purchase_requests MODIFY COLUMN custom_category VARCHAR(30) NULL;
|
||||
ALTER TABLE purchase_batches MODIFY COLUMN category VARCHAR(30) NULL;
|
||||
27
system1-factory/api/db/migrations/20260401_seed_aliases.sql
Normal file
27
system1-factory/api/db/migrations/20260401_seed_aliases.sql
Normal file
@@ -0,0 +1,27 @@
|
||||
-- 소모품 별칭 시드 데이터 (item_name LIKE 매칭, 데이터 없으면 무시)
|
||||
|
||||
-- 장갑류
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '장갑' FROM consumable_items WHERE item_name LIKE '%면장갑%';
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '목장갑' FROM consumable_items WHERE item_name LIKE '%면장갑%';
|
||||
|
||||
-- 테이프류
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '테이프' FROM consumable_items WHERE item_name LIKE '%절연테이프%';
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '전기테이프' FROM consumable_items WHERE item_name LIKE '%절연테이프%';
|
||||
|
||||
-- 연마류
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '사포' FROM consumable_items WHERE item_name LIKE '%연마지%' OR item_name LIKE '%연마석%';
|
||||
|
||||
-- 마스크
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '마스크' FROM consumable_items WHERE item_name LIKE '%방진마스크%' OR item_name LIKE '%방독마스크%';
|
||||
|
||||
-- 안전화
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '작업화' FROM consumable_items WHERE item_name LIKE '%안전화%';
|
||||
INSERT IGNORE INTO item_aliases (item_id, alias_name)
|
||||
SELECT item_id, '신발' FROM consumable_items WHERE item_name LIKE '%안전화%';
|
||||
Reference in New Issue
Block a user