-compose
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
services:
|
||||
# 1. Database Service (พระเอกของเรา)
|
||||
db:
|
||||
image: mysql:8.0 # หรือ mariadb:latest ตามโจทย์ระบุ
|
||||
container_name: skill_db_container
|
||||
@@ -11,13 +10,13 @@ services:
|
||||
MYSQL_PASSWORD: password
|
||||
TZ: Asia/Bangkok
|
||||
ports:
|
||||
# 🔥 สำคัญมาก: เปิด Port 3306 ออกมาเพื่อให้
|
||||
# สำคัญมาก: เปิด Port 3306 ออกมาเพื่อให้
|
||||
# Backend (ที่รันบนเครื่อง) และ HeidiSQL/DBeaver เข้าถึงได้
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- db_data:/var/lib/mysql
|
||||
# ถ้ามีไฟล์ schema.sql ให้ map เข้าไปรันออโต้เลย (ประหยัดเวลา import)
|
||||
# - ./schema.sql:/docker-entrypoint-initdb.d/00-schema.sql:ro
|
||||
- ./schema.sql:/docker-entrypoint-initdb.d/00-schema.sql:ro
|
||||
networks:
|
||||
- skill_net
|
||||
|
||||
|
||||
551
schema.sql
Normal file
551
schema.sql
Normal file
@@ -0,0 +1,551 @@
|
||||
-- Single-file init: schema + seed
|
||||
-- MySQL 8.x
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS skills_db
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
USE skills_db;
|
||||
|
||||
-- Drop old objects (order matters)
|
||||
DROP VIEW IF EXISTS v_evidence_progress;
|
||||
|
||||
DROP TABLE IF EXISTS attachments;
|
||||
DROP TABLE IF EXISTS evaluation_results;
|
||||
DROP TABLE IF EXISTS assignments;
|
||||
DROP TABLE IF EXISTS indicator_evidence;
|
||||
DROP TABLE IF EXISTS evidence_types;
|
||||
DROP TABLE IF EXISTS indicators;
|
||||
DROP TABLE IF EXISTS evaluation_topics;
|
||||
DROP TABLE IF EXISTS evaluation_periods;
|
||||
DROP TABLE IF EXISTS users;
|
||||
DROP TABLE IF EXISTS dept_fields;
|
||||
DROP TABLE IF EXISTS departments;
|
||||
DROP TABLE IF EXISTS org_groups;
|
||||
DROP TABLE IF EXISTS vocational_fields;
|
||||
DROP TABLE IF EXISTS vocational_categories;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
-- =========================
|
||||
-- SCHEMA
|
||||
-- =========================
|
||||
|
||||
CREATE TABLE vocational_categories (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(10) NOT NULL UNIQUE,
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE vocational_fields (
|
||||
code VARCHAR(10) PRIMARY KEY,
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
category_id INT NOT NULL,
|
||||
CONSTRAINT fk_vf_cat
|
||||
FOREIGN KEY (category_id) REFERENCES vocational_categories(id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE org_groups (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(20) NOT NULL UNIQUE,
|
||||
name_th VARCHAR(255) NOT NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE departments (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(20) NOT NULL UNIQUE,
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
category_id INT NOT NULL,
|
||||
org_group_id INT NOT NULL,
|
||||
CONSTRAINT fk_dept_cat
|
||||
FOREIGN KEY (category_id) REFERENCES vocational_categories(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_dept_org
|
||||
FOREIGN KEY (org_group_id) REFERENCES org_groups(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE dept_fields (
|
||||
dept_id INT NOT NULL,
|
||||
field_code VARCHAR(10) NOT NULL,
|
||||
PRIMARY KEY (dept_id, field_code),
|
||||
CONSTRAINT fk_df_dept
|
||||
FOREIGN KEY (dept_id) REFERENCES departments(id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_df_field
|
||||
FOREIGN KEY (field_code) REFERENCES vocational_fields(code)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE users (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
email VARCHAR(255) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL, -- ใช้ชื่อคอลัมน์ให้ตรงกับ seed
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
role ENUM('admin','evaluator','evaluatee') NOT NULL,
|
||||
status ENUM('active','disabled') NOT NULL DEFAULT 'active',
|
||||
department_id INT NULL,
|
||||
org_group_id INT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_users_dept
|
||||
FOREIGN KEY (department_id) REFERENCES departments(id)
|
||||
ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_users_org
|
||||
FOREIGN KEY (org_group_id) REFERENCES org_groups(id)
|
||||
ON DELETE SET NULL ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE evaluation_periods (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(30) NOT NULL UNIQUE,
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
buddhist_year INT NOT NULL,
|
||||
start_date DATE NOT NULL,
|
||||
end_date DATE NOT NULL,
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE evaluation_topics (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(30) NOT NULL UNIQUE,
|
||||
title_th VARCHAR(255) NOT NULL,
|
||||
description TEXT NULL,
|
||||
weight DECIMAL(5,2) NOT NULL DEFAULT 0.00,
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE indicators (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
topic_id BIGINT UNSIGNED NOT NULL,
|
||||
code VARCHAR(40) NOT NULL UNIQUE,
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
description TEXT NULL,
|
||||
type ENUM('score_1_4','yes_no','file_url') NOT NULL DEFAULT 'score_1_4',
|
||||
weight DECIMAL(5,2) NOT NULL DEFAULT 1.00,
|
||||
min_score TINYINT NOT NULL DEFAULT 1,
|
||||
max_score TINYINT NOT NULL DEFAULT 4,
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_ind_topic
|
||||
FOREIGN KEY (topic_id) REFERENCES evaluation_topics(id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
KEY idx_ind_topic (topic_id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE evidence_types (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(30) NOT NULL UNIQUE,
|
||||
name_th VARCHAR(255) NOT NULL,
|
||||
description TEXT NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE indicator_evidence (
|
||||
indicator_id BIGINT UNSIGNED NOT NULL,
|
||||
evidence_type_id INT NOT NULL,
|
||||
PRIMARY KEY (indicator_id, evidence_type_id),
|
||||
CONSTRAINT fk_ie_ind
|
||||
FOREIGN KEY (indicator_id) REFERENCES indicators(id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_ie_ev
|
||||
FOREIGN KEY (evidence_type_id) REFERENCES evidence_types(id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE assignments (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
period_id BIGINT UNSIGNED NOT NULL,
|
||||
evaluator_id BIGINT UNSIGNED NOT NULL,
|
||||
evaluatee_id BIGINT UNSIGNED NOT NULL,
|
||||
dept_id INT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_asg_period
|
||||
FOREIGN KEY (period_id) REFERENCES evaluation_periods(id)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_asg_evalr
|
||||
FOREIGN KEY (evaluator_id) REFERENCES users(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_asg_evale
|
||||
FOREIGN KEY (evaluatee_id) REFERENCES users(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_asg_dept
|
||||
FOREIGN KEY (dept_id) REFERENCES departments(id)
|
||||
ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT uniq_asg UNIQUE (period_id, evaluator_id, evaluatee_id),
|
||||
KEY idx_asg_evalr (evaluator_id, period_id),
|
||||
KEY idx_asg_evale (evaluatee_id, period_id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE evaluation_results (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
period_id BIGINT UNSIGNED NOT NULL,
|
||||
evaluatee_id BIGINT UNSIGNED NOT NULL,
|
||||
evaluator_id BIGINT UNSIGNED NOT NULL,
|
||||
topic_id BIGINT UNSIGNED NOT NULL,
|
||||
indicator_id BIGINT UNSIGNED NOT NULL,
|
||||
score DECIMAL(5,2) NULL,
|
||||
value_yes_no TINYINT(1) NULL,
|
||||
notes TEXT NULL,
|
||||
status ENUM('draft','submitted') NOT NULL DEFAULT 'draft',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_res_period FOREIGN KEY (period_id) REFERENCES evaluation_periods(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_res_evale FOREIGN KEY (evaluatee_id) REFERENCES users(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_res_evalr FOREIGN KEY (evaluator_id) REFERENCES users(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_res_topic FOREIGN KEY (topic_id) REFERENCES evaluation_topics(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_res_ind FOREIGN KEY (indicator_id) REFERENCES indicators(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
KEY idx_results_evale (evaluatee_id, period_id),
|
||||
KEY idx_results_indicator (indicator_id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE attachments (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
period_id BIGINT UNSIGNED NOT NULL,
|
||||
evaluatee_id BIGINT UNSIGNED NOT NULL,
|
||||
indicator_id BIGINT UNSIGNED NOT NULL,
|
||||
evidence_type_id INT NOT NULL,
|
||||
file_name VARCHAR(255) NOT NULL,
|
||||
mime_type VARCHAR(100) NOT NULL,
|
||||
size_bytes INT UNSIGNED NOT NULL,
|
||||
storage_path VARCHAR(1024) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_att_period FOREIGN KEY (period_id) REFERENCES evaluation_periods(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_att_evale FOREIGN KEY (evaluatee_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_att_ind FOREIGN KEY (indicator_id) REFERENCES indicators(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_att_evtype FOREIGN KEY (evidence_type_id) REFERENCES evidence_types(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
KEY idx_attach_evale (evaluatee_id, period_id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Helpful indexes
|
||||
CREATE INDEX idx_users_dept ON users(department_id);
|
||||
|
||||
-- =========================
|
||||
-- SEED DATA
|
||||
-- =========================
|
||||
|
||||
-- Categories
|
||||
INSERT INTO vocational_categories (code, name_th) VALUES
|
||||
('CAT01','อุตสาหกรรม'),
|
||||
('CAT02','บริหารธุรกิจ'),
|
||||
('CAT03','ศิลปกรรมและเศรษฐกิจสร้างสรรค์'),
|
||||
('CAT04','คหกรรม'),
|
||||
('CAT05','เกษตรกรรมและประมง'),
|
||||
('CAT06','อุตสาหกรรมท่องเที่ยว'),
|
||||
('CAT07','อุตสาหกรรมแฟชั่นและสิ่งทอ'),
|
||||
('CAT08','อุตสาหกรรมดิจิทัลและเทคโนโลยีสารสนเทศ'),
|
||||
('CAT09','โลจิสติกส์'),
|
||||
('CAT10','อุตสาหกรรมสุขภาพและความงาม'),
|
||||
('CAT11','อุตสาหกรรมบันเทิง');
|
||||
|
||||
-- Fields (subset incl. IT/ME/EL/ACC/MKT)
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20101','ช่างยนต์', id FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20102','ช่างกลโรงงาน', id FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20103','ช่างเชื่อมโลหะ', id FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20104','ช่างไฟฟ้ากำลัง', id FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20105','อิเล็กทรอนิกส์', id FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20127','เมคคาทรอนิกส์และหุ่นยนต์', id FROM vocational_categories WHERE code='CAT01';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20201','การบัญชี', id FROM vocational_categories WHERE code='CAT02';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20202','การตลาด', id FROM vocational_categories WHERE code='CAT02';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20216','การจัดการสำนักงานดิจิทัล', id FROM vocational_categories WHERE code='CAT02';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21910','เทคโนโลยีธุรกิจดิจิทัล', id FROM vocational_categories WHERE code='CAT02';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21602','การออกแบบ', id FROM vocational_categories WHERE code='CAT03';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21606','การถ่ายภาพและมัลติมีเดีย', id FROM vocational_categories WHERE code='CAT03';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21619','ออกแบบนิเทศศิลป์', id FROM vocational_categories WHERE code='CAT03';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21804','แฟชั่นและสิ่งทอ', id FROM vocational_categories WHERE code='CAT04';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21504','อาหารและโภชนาการ', id FROM vocational_categories WHERE code='CAT04';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20406','คหกรรมศาสตร์', id FROM vocational_categories WHERE code='CAT04';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21701','เกษตรศาสตร์', id FROM vocational_categories WHERE code='CAT05';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21709','นวัตกรรมเกษตร', id FROM vocational_categories WHERE code='CAT05';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21715','ประมง', id FROM vocational_categories WHERE code='CAT05';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20701','การโรงแรม', id FROM vocational_categories WHERE code='CAT06';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '20702','การท่องเที่ยว', id FROM vocational_categories WHERE code='CAT06';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21801','เทคโนโลยีสิ่งทอ', id FROM vocational_categories WHERE code='CAT07';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21802','เคมีสิ่งทอ', id FROM vocational_categories WHERE code='CAT07';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21803','เทคโนโลยีเครื่องนุ่งห่ม', id FROM vocational_categories WHERE code='CAT07';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21901','เทคโนโลยีสารสนเทศ', id FROM vocational_categories WHERE code='CAT08';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21903','คอมพิวเตอร์โปรแกรมเมอร์', id FROM vocational_categories WHERE code='CAT08';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21906','เทคโนโลยีปัญญาประดิษฐ์', id FROM vocational_categories WHERE code='CAT08';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21907','เทคโนโลยีโลกเสมือนจริง', id FROM vocational_categories WHERE code='CAT08';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21401','โลจิสติกส์', id FROM vocational_categories WHERE code='CAT09';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21302','การจัดการงานบริการสถานพยาบาล', id FROM vocational_categories WHERE code='CAT10';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21303','ธุรกิจการกีฬา', id FROM vocational_categories WHERE code='CAT10';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '21305','ธุรกิจเสริมสวย', id FROM vocational_categories WHERE code='CAT10';
|
||||
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '22001','อุตสาหกรรมแสงและเสียง', id FROM vocational_categories WHERE code='CAT11';
|
||||
INSERT INTO vocational_fields (code, name_th, category_id)
|
||||
SELECT '22002','อุตสาหกรรมดนตรี', id FROM vocational_categories WHERE code='CAT11';
|
||||
|
||||
-- Org groups (ลบจุลภาคท้ายบรรทัดสุดท้าย)
|
||||
INSERT INTO org_groups (code, name_th) VALUES
|
||||
('ACD','ฝ่ายวิชาการ'),
|
||||
('STD','ฝ่ายพัฒนากิจการนักเรียนนักศึกษา'),
|
||||
('FIN','ฝ่ายบริหารทรัพยากร'),
|
||||
('PLA','ฝ่ายแผนงานและความร่วมมือ');
|
||||
|
||||
-- Departments
|
||||
INSERT INTO departments (code, name_th, category_id, org_group_id)
|
||||
SELECT 'IT','แผนกวิชาเทคโนโลยีสารสนเทศ', id, (SELECT id FROM org_groups WHERE code='ACD')
|
||||
FROM vocational_categories WHERE code='CAT08';
|
||||
INSERT INTO departments (code, name_th, category_id, org_group_id)
|
||||
SELECT 'ME','แผนกวิชาเครื่องกล', id, (SELECT id FROM org_groups WHERE code='ACD')
|
||||
FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO departments (code, name_th, category_id, org_group_id)
|
||||
SELECT 'EL','แผนกวิชาอิเล็กทรอนิกส์', id, (SELECT id FROM org_groups WHERE code='ACD')
|
||||
FROM vocational_categories WHERE code='CAT01';
|
||||
INSERT INTO departments (code, name_th, category_id, org_group_id)
|
||||
SELECT 'ACC','แผนกวิชาการบัญชี', id, (SELECT id FROM org_groups WHERE code='ACD')
|
||||
FROM vocational_categories WHERE code='CAT02';
|
||||
INSERT INTO departments (code, name_th, category_id, org_group_id)
|
||||
SELECT 'MKT','แผนกวิชาการตลาด', id, (SELECT id FROM org_groups WHERE code='ACD')
|
||||
FROM vocational_categories WHERE code='CAT02';
|
||||
|
||||
-- Department ↔ Field
|
||||
INSERT INTO dept_fields (dept_id, field_code)
|
||||
SELECT d.id, '21901' FROM departments d WHERE d.code='IT';
|
||||
INSERT INTO dept_fields (dept_id, field_code)
|
||||
SELECT d.id, '21903' FROM departments d WHERE d.code='IT';
|
||||
INSERT INTO dept_fields (dept_id, field_code)
|
||||
SELECT d.id, '20101' FROM departments d WHERE d.code='ME';
|
||||
INSERT INTO dept_fields (dept_id, field_code)
|
||||
SELECT d.id, '20105' FROM departments d WHERE d.code='EL';
|
||||
INSERT INTO dept_fields (dept_id, field_code)
|
||||
SELECT d.id, '20201' FROM departments d WHERE d.code='ACC';
|
||||
INSERT INTO dept_fields (dept_id, field_code)
|
||||
SELECT d.id, '20202' FROM departments d WHERE d.code='MKT';
|
||||
|
||||
-- Users (แก้เป็น password_hash ให้ตรงสคีมา)
|
||||
INSERT INTO users (email, password_hash, name_th, role, department_id, org_group_id) VALUES
|
||||
('admin@ccollege.ac.th', '$2b$10$f6g9QMzpdIjzUyckEbFLIeuSRKEGJdNSu.TZ3tmegQ5ioSop02og6', 'ผู้ดูแลระบบ', 'admin',
|
||||
(SELECT id FROM departments WHERE code='IT'), (SELECT id FROM org_groups WHERE code='ACD')),
|
||||
('eva.me@ccollege.ac.th', '$2b$10$ycxCewoT/qjuiZiDb7hfP.aGEnWZu8rMF3UzRO6QgxgIO7lKLsRSm', 'กรรมการประเมินเครื่องกล', 'evaluator',
|
||||
(SELECT id FROM departments WHERE code='ME'), (SELECT id FROM org_groups WHERE code='ACD')),
|
||||
('eva.it@ccollege.ac.th', '$2b$10$rCg8BVUQSVs51Hb/fwctneQcBfIE0RL5dVRm1bcX5CPyGKyRAxFoe', 'กรรมการประเมินไอที', 'evaluator',
|
||||
(SELECT id FROM departments WHERE code='IT'), (SELECT id FROM org_groups WHERE code='ACD')),
|
||||
('t.it01@ccollege.ac.th', '$2b$10$V0GTPQ/2Ap5r0nzE49FjfOW7xmXuSPQ8m7P81jwKrFFltwCvBXTsy', 'ครูไอที 01', 'evaluatee',
|
||||
(SELECT id FROM departments WHERE code='IT'), (SELECT id FROM org_groups WHERE code='ACD')),
|
||||
('t.me01@ccollege.ac.th', '$2b$10$gkmAZQmS5GjA3cgHAzZgN.HZzaH4gKeuTkeJnNoAEFT2OyczRibuC', 'ครูเครื่องกล 01', 'evaluatee',
|
||||
(SELECT id FROM departments WHERE code='ME'), (SELECT id FROM org_groups WHERE code='ACD')),
|
||||
('t.acc01@ccollege.ac.th', '$2b$10$5FALWHRfgaBZC0Az5BAVdeelVK4LgRGyKOmSC0hNI3yU6.PRbCxnW', 'ครูบัญชี 01', 'evaluatee',
|
||||
(SELECT id FROM departments WHERE code='ACC'), (SELECT id FROM org_groups WHERE code='ACD'));
|
||||
|
||||
-- Periods
|
||||
INSERT INTO evaluation_periods (code, name_th, buddhist_year, start_date, end_date, is_active)
|
||||
VALUES ('Y2568','การประเมินครูประจำปี 2568', 2568, '2025-10-01','2026-09-30', 1);
|
||||
|
||||
-- Topics
|
||||
INSERT INTO evaluation_topics (code, title_th, description, weight) VALUES
|
||||
('TOP1','การจัดการเรียนการสอน','คุณภาพการวางแผนการสอน สื่อการสอน การวัดผล และผลสัมฤทธิ์ของผู้เรียน', 0.30),
|
||||
('TOP2','การบริหารจัดการชั้นเรียน','การจัดบรรยากาศ กฎระเบียบ การดูแล/ให้คำปรึกษา และกิจกรรมส่งเสริม', 0.20),
|
||||
('TOP3','การพัฒนาตนเองและพัฒนาวิชาชีพ','การอบรม/สัมมนา งานวิจัย แผนพัฒนาตนเอง และการประเมินตนเอง', 0.30),
|
||||
('TOP4','ด้านอื่นๆ (PA/ผลงาน/จรรยาบรรณ)','ผลงานตามหน้าที่ จรรยาบรรณ และแบบประเมิน PA', 0.20);
|
||||
|
||||
-- Indicators
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T1-PLAN','แผนการจัดการเรียนรู้','แผนการสอนสอดคล้องมาตรฐานและตัวชี้วัด','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP1';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T1-MEDIA','สื่อการเรียนรู้','ใบงาน/แบบฝึก/มัลติมีเดียเหมาะสมกับผู้เรียน','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP1';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T1-ASSESS','หลักฐานการวัดและประเมินผล','ข้อสอบ/รูบริก/ชิ้นงาน/บันทึกคะแนน','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP1';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T1-REFLECT','บันทึกหลังการสอน','สะท้อนผลและการปรับปรุงแผนการสอน','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP1';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T1-STUWORK','ผลงานนักเรียน','ชิ้นงานแสดงความรู้/ทักษะ/คุณลักษณะ','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP1';
|
||||
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T2-CHART','แผนภูมิ/ตาราง','แผนผังที่นั่ง กฎห้องเรียน ตารางเวร','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP2';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T2-HOMEVISIT','บันทึกการเยี่ยมบ้าน','ร่วมมือผู้ปกครอง/ประสานเครือข่าย','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP2';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T2-COUNSEL','บันทึกการให้คำปรึกษา','ช่วยเหลือนักเรียนเป็นรายบุคคล/กลุ่ม','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP2';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T2-ACT','โครงการ/กิจกรรม','กิจกรรมส่งเสริมการเรียนรู้และคุณลักษณะ','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP2';
|
||||
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T3-CERT','เกียรติบัตร/วุฒิบัตร','การอบรม/สัมมนา/ศึกษาดูงาน','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP3';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T3-RESEARCH','เอกสาร/งานวิจัย','วิจัยในชั้นเรียน/ตีพิมพ์/นำเสนอวิชาการ','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP3';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T3-IDP','แผนพัฒนาตนเอง','เป้าหมาย/แนวทางพัฒนาตามสายงาน','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP3';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T3-SELFASSESS','ผลการประเมินตนเอง','แบบประเมินตนเองตามแบบของสถานศึกษา','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP3';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T3-SCHOOLPART','มีส่วนร่วมกิจกรรมโรงเรียน','เข้าร่วมประชุม/กิจกรรมวันสำคัญ/โครงการ','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP3';
|
||||
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T4-PA','แบบประเมิน PA','แบบข้อตกลงในการพัฒนางาน (PA)','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP4';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T4-WORK','ผลงานที่เกิดจากหน้าที่','ผลงานตามภาระงานที่ได้รับมอบหมาย','score_1_4',1.00
|
||||
FROM evaluation_topics WHERE code='TOP4';
|
||||
INSERT INTO indicators (topic_id, code, name_th, description, type, weight)
|
||||
SELECT id,'T4-ETHICS','จรรยาบรรณวิชาชีพ','หลักฐานการปฏิบัติตามจรรยาบรรณครู','yes_no',1.00
|
||||
FROM evaluation_topics WHERE code='TOP4';
|
||||
|
||||
-- Evidence types
|
||||
INSERT INTO evidence_types (code, name_th, description) VALUES
|
||||
('E-PLAN','แผนการจัดการเรียนรู้','แผนการสอนตามมาตรฐาน/ตัวชี้วัด'),
|
||||
('E-MEDIA','สื่อการเรียนรู้','ใบงาน/แบบฝึก/มัลติมีเดีย'),
|
||||
('E-ASSESS','หลักฐานการวัดและประเมินผล','ข้อสอบ/รูบริก/บันทึกคะแนน'),
|
||||
('E-REFLECT','บันทึกหลังการสอน','สรุปผล-ข้อเสนอแนะ-ปรับปรุง'),
|
||||
('E-STUWORK','ผลงานนักเรียน','ชิ้นงาน/แฟ้มสะสมผลงาน'),
|
||||
('E-CHART','แผนภูมิ/กฎ/ตารางเวร','เอกสารการจัดชั้นเรียน'),
|
||||
('E-HOMEVISIT','บันทึกการเยี่ยมบ้าน','หลักฐานการเยี่ยมบ้าน/ประสานผู้ปกครอง'),
|
||||
('E-COUNSEL','บันทึกการให้คำปรึกษา','แบบบันทึก/รายงานกรณี'),
|
||||
('E-ACT','โครงการ/กิจกรรม','เอกสาร/ภาพกิจกรรม/รายงานผล'),
|
||||
('E-CERT','เกียรติบัตร/วุฒิบัตร','เอกสารการอบรม/สัมมนา'),
|
||||
('E-RESEARCH','งานวิจัย/บทความ','เอกสารวิชาการ/นำเสนอผลงาน'),
|
||||
('E-IDP','แผนพัฒนาตนเอง','เอกสารเป้าหมาย/แผนพัฒนา'),
|
||||
('E-SELFASSESS','ผลการประเมินตนเอง','แบบฟอร์มประเมินตนเอง'),
|
||||
('E-PA','แบบประเมิน PA','เอกสารข้อตกลงฯ'),
|
||||
('E-WORK','ผลงานตามหน้าที่','หลักฐานผลงาน/รายงาน'),
|
||||
('E-ETHICS','จรรยาบรรณวิชาชีพ','หลักฐานการปฏิบัติตามจรรยาบรรณ');
|
||||
|
||||
-- Indicator ↔ Evidence mapping
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T1-PLAN'), (SELECT id FROM evidence_types WHERE code='E-PLAN');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T1-MEDIA'), (SELECT id FROM evidence_types WHERE code='E-MEDIA');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T1-ASSESS'), (SELECT id FROM evidence_types WHERE code='E-ASSESS');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T1-REFLECT'), (SELECT id FROM evidence_types WHERE code='E-REFLECT');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T1-STUWORK'), (SELECT id FROM evidence_types WHERE code='E-STUWORK');
|
||||
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T2-CHART'), (SELECT id FROM evidence_types WHERE code='E-CHART');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T2-HOMEVISIT'), (SELECT id FROM evidence_types WHERE code='E-HOMEVISIT');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T2-COUNSEL'), (SELECT id FROM evidence_types WHERE code='E-COUNSEL');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T2-ACT'), (SELECT id FROM evidence_types WHERE code='E-ACT');
|
||||
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T3-CERT'), (SELECT id FROM evidence_types WHERE code='E-CERT');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T3-RESEARCH'), (SELECT id FROM evidence_types WHERE code='E-RESEARCH');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T3-IDP'), (SELECT id FROM evidence_types WHERE code='E-IDP');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T3-SELFASSESS'), (SELECT id FROM evidence_types WHERE code='E-SELFASSESS');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T3-SCHOOLPART'), (SELECT id FROM evidence_types WHERE code='E-ACT');
|
||||
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T4-PA'), (SELECT id FROM evidence_types WHERE code='E-PA');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T4-WORK'), (SELECT id FROM evidence_types WHERE code='E-WORK');
|
||||
INSERT INTO indicator_evidence SELECT (SELECT id FROM indicators WHERE code='T4-ETHICS'), (SELECT id FROM evidence_types WHERE code='E-ETHICS');
|
||||
|
||||
-- Assignments
|
||||
INSERT INTO assignments (period_id, evaluator_id, evaluatee_id, dept_id)
|
||||
VALUES
|
||||
((SELECT id FROM evaluation_periods WHERE code='Y2568'),
|
||||
(SELECT id FROM users WHERE email='eva.it@ccollege.ac.th'),
|
||||
(SELECT id FROM users WHERE email='t.it01@ccollege.ac.th'),
|
||||
(SELECT id FROM departments WHERE code='IT')),
|
||||
((SELECT id FROM evaluation_periods WHERE code='Y2568'),
|
||||
(SELECT id FROM users WHERE email='eva.me@ccollege.ac.th'),
|
||||
(SELECT id FROM users WHERE email='t.me01@ccollege.ac.th'),
|
||||
(SELECT id FROM departments WHERE code='ME')),
|
||||
((SELECT id FROM evaluation_periods WHERE code='Y2568'),
|
||||
(SELECT id FROM users WHERE email='eva.it@ccollege.ac.th'),
|
||||
(SELECT id FROM users WHERE email='t.acc01@ccollege.ac.th'),
|
||||
(SELECT id FROM departments WHERE code='ACC'));
|
||||
|
||||
-- Bootstrap a sample result
|
||||
INSERT INTO evaluation_results (period_id, evaluatee_id, evaluator_id, topic_id, indicator_id, score, value_yes_no, notes, status)
|
||||
SELECT p.id, u_evale.id, u_evalr.id, t.id, i.id, 3.00, NULL, 'สื่อการสอนครบถ้วน เหมาะกับผู้เรียน', 'draft'
|
||||
FROM evaluation_periods p
|
||||
JOIN users u_evale ON u_evale.email='t.it01@ccollege.ac.th'
|
||||
JOIN users u_evalr ON u_evalr.email='eva.it@ccollege.ac.th'
|
||||
JOIN evaluation_topics t ON t.code='TOP1'
|
||||
JOIN indicators i ON i.code='T1-MEDIA'
|
||||
WHERE p.code='Y2568';
|
||||
|
||||
-- Example attachments
|
||||
INSERT INTO attachments (period_id, evaluatee_id, indicator_id, evidence_type_id, file_name, mime_type, size_bytes, storage_path)
|
||||
SELECT (SELECT id FROM evaluation_periods WHERE code='Y2568'),
|
||||
(SELECT id FROM users WHERE email='t.it01@ccollege.ac.th'),
|
||||
(SELECT id FROM indicators WHERE code='T1-PLAN'),
|
||||
(SELECT id FROM evidence_types WHERE code='E-PLAN'),
|
||||
'lesson_plan_it01_2568.pdf','application/pdf',523000,
|
||||
'/var/lib/evaluation/uploads/2568/t.it01/lesson_plan_it01_2568.pdf';
|
||||
|
||||
INSERT INTO attachments (period_id, evaluatee_id, indicator_id, evidence_type_id, file_name, mime_type, size_bytes, storage_path)
|
||||
SELECT (SELECT id FROM evaluation_periods WHERE code='Y2568'),
|
||||
(SELECT id FROM users WHERE email='t.it01@ccollege.ac.th'),
|
||||
(SELECT id FROM indicators WHERE code='T1-MEDIA'),
|
||||
(SELECT id FROM evidence_types WHERE code='E-MEDIA'),
|
||||
'media_samples_it01.zip','application/zip',2048576,
|
||||
'/var/lib/evaluation/uploads/2568/t.it01/media_samples_it01.zip';
|
||||
|
||||
-- View
|
||||
CREATE OR REPLACE VIEW v_evidence_progress AS
|
||||
SELECT
|
||||
u.name_th AS evaluatee_name,
|
||||
d.name_th AS dept_name,
|
||||
p.buddhist_year,
|
||||
t.title_th AS topic_title,
|
||||
i.code AS indicator_code,
|
||||
i.name_th AS indicator_name,
|
||||
COUNT(a.id) AS files_uploaded
|
||||
FROM users u
|
||||
JOIN departments d ON d.id = u.department_id
|
||||
JOIN assignments s ON s.evaluatee_id = u.id
|
||||
JOIN evaluation_periods p ON p.id = s.period_id AND p.is_active = 1
|
||||
JOIN indicators i ON 1=1
|
||||
JOIN evaluation_topics t ON t.id = i.topic_id
|
||||
LEFT JOIN attachments a
|
||||
ON a.indicator_id = i.id
|
||||
AND a.evaluatee_id = u.id
|
||||
AND a.period_id = p.id
|
||||
WHERE u.role = 'evaluatee'
|
||||
GROUP BY u.name_th, d.name_th, p.buddhist_year, t.title_th, i.code, i.name_th
|
||||
ORDER BY u.name_th, t.title_th, i.code;
|
||||
Reference in New Issue
Block a user