เอกสาร Waypoint
หน้าเว็บไซต์ หลังบ้าน

☁️ อัปเดตระบบ + Version Control

จัดการเวอร์ชั่นของระบบ — ติดตั้งอัปเดต สร้าง migration ใหม่ ดูประวัติ

เมนู: อัปเดตระบบ

อัปเดตจากเซิร์ฟเวอร์ (คลิกเดียว)

เมนู จัดการระบบ → อัปเดตระบบ → การ์ด อัปเดตจากเซิร์ฟเวอร์

  1. กด ตรวจสอบอัปเดต — ระบบอ่าน manifest.json จากเซิร์ฟเวอร์อัปเดต (ค่าเริ่มต้น http://update.madewithai.store/waypoint · กด "แก้ไข" เพื่อเปลี่ยน)
  2. อ่านรายการเปลี่ยนแปลงของเวอร์ชันใหม่ แล้วกด ติดตั้ง vX.Y.Z
  3. ระบบจะ ① ดาวน์โหลดแพ็กเกจจากเซิร์ฟเวอร์เดียวกันเท่านั้น ② ตรวจ sha256 (ไม่ตรง = ยกเลิก ไม่มีไฟล์ใดถูกเปลี่ยน) ③ สำรองไฟล์ที่จะถูกเขียนทับไว้ที่ storage/backups/update-เวอร์ชัน-วันเวลา/ ④ อัปเดตไฟล์ ⑤ อัปเดตฐานข้อมูลตามเวอร์ชันที่ยังไม่ได้ติดตั้ง
ไม่ถูกเขียนทับเด็ดขาด: config/database.php, config/app.php, config/app_key.php, .htaccess, uploads/, storage/, install/
ก่อนอัปเดต: สำรองฐานข้อมูล · อัปเดตนอกเวลาที่มีลูกค้าใช้งาน · เซิร์ฟเวอร์ต้องมี PHP extension zip และออกอินเทอร์เน็ตได้ — ถ้าอัปเดตแล้วมีปัญหา คัดลอกไฟล์จาก storage/backups/ กลับได้

สำหรับผู้พัฒนา: ออกเวอร์ชันใหม่

  1. สร้าง database/versions/vX.Y.Z.sql (ใส่ -- @version / @name) และ release notes ที่ versions/notes/X.Y.Z.txt
  2. รัน ./versions/build.sh → ได้ versions/waypoint-install-X.Y.Z.zip (ตัวติดตั้ง) และ versions/update/
  3. อัปโหลดเนื้อหาใน versions/update/ (manifest.json, packages/, notes/) ขึ้น update.madewithai.store/waypoint/ — ทุกเว็บที่ติดตั้งไว้จะเห็นเวอร์ชันใหม่เมื่อกดตรวจสอบ

แนวคิด

ระบบมีการเปลี่ยนแปลง schema ของฐานข้อมูลตลอด — Version Control ช่วยให้:

โครงสร้างไฟล์

/database/versions/
  v1.0.0.sql    ← Initial schema
  v1.1.0.sql    ← เพิ่มระบบรับส่งของ + GPS
  v1.2.0.sql    ← ระบบ CMS + announcements
  v1.3.0.sql    ← (ของคุณเอง)
  ...

แต่ละไฟล์มี header metadata และ SQL statements

ติดตั้งเวอร์ชั่นใหม่

Dashboard ด้านบน

Cardแสดงอะไร
🟢 เวอร์ชั่นปัจจุบันv1.2.0 + แจ้งว่ามี update ไหม
🔵 เวอร์ชั่นทั้งหมดจำนวนไฟล์ใน /versions/
🟡 ติดตั้งทั้งหมดจำนวนครั้งที่ install (รวม reinstall)

ตารางเวอร์ชั่นที่มี

ขั้นตอนติดตั้ง

  1. คลิก "ติดตั้ง" บนเวอร์ชั่นที่ต้องการ
  2. Confirm prompt ("ติดตั้งเวอร์ชั่น 1.3.0?")
  3. ระบบรัน SQL ในไฟล์ทุกบรรทัด
  4. UPDATE settings.app_version = เวอร์ชั่นใหม่
  5. INSERT ลง app_versions — บันทึกประวัติ
  6. ถ้า error → status=failed + log error
ระวัง: SQL ของบาง version อาจเปลี่ยน schema (เพิ่ม column, เปลี่ยน type) — แนะนำ backup database ก่อนติดตั้ง production

สร้างเวอร์ชั่นใหม่

กดปุ่ม "+ สร้างเวอร์ชั่นใหม่" มุมขวาบน → modal เปิด

  1. Version — รูปแบบ semver X.Y.Z (default: เวอร์ชั่นถัดไปอัตโนมัติ)
  2. ชื่อเวอร์ชั่น — เช่น "เพิ่มระบบรายงานใหม่"
  3. รายละเอียด — คำอธิบายการเปลี่ยนแปลง
  4. SQL Migration — เขียน SQL ที่จะรัน:
-- ตัวอย่าง SQL migration
ALTER TABLE bookings ADD COLUMN coupon_code VARCHAR(20);

CREATE TABLE IF NOT EXISTS coupons (
  id INT AUTO_INCREMENT PRIMARY KEY,
  code VARCHAR(20) UNIQUE,
  discount_pct INT DEFAULT 0,
  expires_at DATE
) ENGINE=InnoDB;

INSERT INTO settings (setting_key, setting_value) VALUES
  ('coupon_enabled', '1');
  1. กด "สร้าง" → ระบบสร้างไฟล์ /database/versions/vX.Y.Z.sql พร้อม header อัตโนมัติ

Header ที่ระบบสร้างให้

-- @version: 1.3.0
-- @name: เพิ่มระบบรายงานใหม่
-- @notes: คำอธิบายที่กรอก
-- @released: 2026-05-17 14:30:00

USE busticket_db;

-- (SQL content ที่กรอก)

รูปแบบไฟล์ Version

ไฟล์ vX.Y.Z.sql ต้องมี comment header สี่บรรทัด:

Commentใช้ทำอะไร
-- @version: X.Y.Zระบุเวอร์ชั่น (semver)
-- @name: Titleชื่อเวอร์ชั่นที่แสดงในตาราง
-- @notes: Descriptionคำอธิบายการเปลี่ยนแปลง
-- @released: YYYY-MM-DD HH:MM:SSวันที่ปล่อย

หลัง header วาง SQL statements ปกติ:

ประวัติการติดตั้ง

ส่วนล่างของหน้า — ตาราง app_versions เรียงล่าสุดก่อน:

คอลัมน์ข้อมูล
เวอร์ชั่นv1.2.0
ชื่อระบบ CMS
ผู้ติดตั้งadmin
เวลา17 พ.ค. 2569 12:30
สถานะinstalled / failed / rolled_back

ถ้า failed จะมี error log แสดงด้านล่าง — debug ได้ทันที

💡 Best practice:
  1. ทดสอบ migration บน dev environment ก่อน production
  2. Backup database ก่อนติดตั้ง
  3. เขียน SQL ให้ idempotent (รันซ้ำได้โดยไม่ผิดพลาด)
  4. เก็บไฟล์ versions/ ลง git เพื่อ track