# Product Operation Guide | Document No | Product Operation Guide | Release, Version, By: | 25690817 V1.0 ThS | | Project Name | โครงการพัฒนาระบบบริหารจัดการคลังสินค้า (BRN WMS) บริษัท บี.อาร์.เอ็น เอ็นเตอร์ไพรส์ จำกัด | | Project Code | 200-WMS-26-001-00 | | Title | เอกสารคู่มือปฏิบัติงานสำหรับผู้ดูแลระบบ | | Project Period | 5 มกราคม 2569 – 24 สิงหาคม 2569 | | Organizer | คุณอภิรัชช์ สุภัทรประทีป (Project Manager) | | Recorder | คุณเยาวลักษณ์ บางชมภู (Document Control) | ## วัตถุประสงค์ (Objective) คู่มือฉบับนี้จัดทำขึ้นเพื่อเป็นแนวทางสำหรับผู้ดูแลระบบ (System Administrator) ในการติดตั้ง ตั้งค่า เฝ้าระวัง สำรองข้อมูล และกู้คืนระบบบริหารจัดการคลังสินค้า เพื่อให้การปฏิบัติงานมีมาตรฐานและกู้คืนระบบได้อย่างรวดเร็ว ## 1 ทางเลือกในการติดตั้ง | ลำดับ | วิธีการติดตั้ง | กลไก | ไฟล์อ้างอิง | | :---: | --- | --- | --- | | 1 | ติดตั้งแบบ Container (แนะนำ) | Docker Compose: php-apache, mariadb, node/pm2 | `docker-compose.yml`, `docker/` | | 2 | ติดตั้งแบบ Manual | ติดตั้ง PHP, MariaDB และ Node.js แล้วสร้างฐานข้อมูลด้วยสคริปต์ | `setup.php` | ## 2 ขั้นตอนการติดตั้งแบบ Container 1. คัดลอก `.env.example` เป็น `.env` หรือรันสคริปต์ `docker/init-env.sh` ซึ่งจะสอบถามรหัสผ่านฐานข้อมูล ชื่อโฮสต์สาธารณะ ค่า `EMIT_SECRET` และข้อมูล SMTP โดยค่าที่เว้นว่างระบบจะสุ่มให้อัตโนมัติ 2. รันคำสั่ง `docker compose up -d --build` เพื่อสร้างและเริ่มบริการทั้งสามส่วน 3. ตรวจสอบว่า Container `php-apache` สร้างไฟล์ `app/config.php` จาก `.env` เรียบร้อยแล้ว โดยไฟล์นี้ไม่ถูกเก็บใน Repository และไม่ฝังอยู่ใน Image 4. ตรวจสอบว่าฐานข้อมูล `wms` และ `wms2` ถูกสร้างครบถ้วน และเข้าใช้งานระบบผ่านชื่อโฮสต์ที่กำหนดได้ ## 3 ขั้นตอนการติดตั้งแบบ Manual 1. เตรียมเครื่องแม่ข่าย Linux ที่ติดตั้ง PHP 8 ขึ้นไป, MariaDB และ Node.js 2. ตั้งค่าไฟล์ `app/config.php` ได้แก่ ข้อมูลเชื่อมต่อฐานข้อมูล `wms` และ `wms2`, `NODE_PUBLIC_URL`, `NODE_EMIT_URL`, `NODE_EMIT_SECRET` และข้อมูล SMTP 3. รัน `setup.php` หนึ่งครั้งเพื่อสร้างโครงสร้างฐานข้อมูลทั้งหมด 4. เริ่มบริการ Node.js (`nodejs/server.js` และ `nodejs/scheduler.js`) ด้วย pm2 ตามไฟล์ `nodejs/ecosystem.config.js` ## 4 การตั้งค่าระบบ | รายการ | ที่ตั้ง | หมายเหตุ | | --- | --- | --- | | ค่าตั้งค่าแอปพลิเคชัน | `app/config.php` | สร้างขึ้นตอนติดตั้ง ไม่นำเข้า Repository | | ค่าความลับของสภาพแวดล้อม | `.env` (Docker) หรือตัวแปรสภาพแวดล้อม (Manual) | ยกเว้นจาก Git ด้วย `.gitignore` | | ค่าตั้งค่าระดับบริษัท | เมนูตั้งค่าในระบบ (`app/setting/`) | ข้อมูลบริษัท SMTP และการตั้งค่าการใช้งาน | | เขตเวลา | `$time_zone` ใน `app/config.php` | กำหนดเป็น `Asia/Bangkok` | ## 5 การเฝ้าระวังระบบ (Monitoring) | ลำดับ | รายการตรวจสอบ | วิธีการ | ความถี่ | | :---: | --- | --- | --- | | 1 | บริการเว็บแอปพลิเคชัน | ตรวจสอบว่าระบบตอบสนองและผู้ใช้เข้าสู่ระบบได้ | ทุก 5 นาที (อัตโนมัติ) | | 2 | ฐานข้อมูล | ตรวจสอบว่าฐานข้อมูล `wms` และ `wms2` เชื่อมต่อได้ | ทุก 5 นาที (อัตโนมัติ) | | 3 | บริการ Node.js | ตรวจสอบสถานะ `server.js` และ `scheduler.js` ภายใต้ pm2 และตรวจ Log ใน `nodejs/logs/` | ทุก 5 นาที (อัตโนมัติ) | | 4 | งานตามกำหนดเวลา | ตรวจสอบว่างานสรุปยอดและงานแจ้งเตือนทำงานครบและไม่ซ้ำซ้อน | รายวัน | เมื่อการตรวจสอบล้มเหลวติดต่อกัน 2 ครั้ง ระบบจะส่งอีเมลแจ้งเตือนผู้ดูแลระบบ โดย pm2 จะพยายามเริ่มบริการใหม่เป็นลำดับแรก หากไม่สามารถกู้คืนบริการได้ภายใน 30 นาที ผู้ดูแลระบบต้องแจ้งผู้จัดการโครงการ และหากเหตุขัดข้องเกิน 2 ชั่วโมงหรือกระทบการดำเนินธุรกิจอย่างมีนัยสำคัญ ต้องแจ้ง Project Sponsor ## 6 การสำรองข้อมูลและการกู้คืน | รายการ | กลไก | รอบการทำงาน | การเก็บรักษา | | --- | --- | --- | --- | | Source Code และค่าตั้งค่าแม่แบบ | Git 2 Remote (`origin`, `backup`) | ทุกครั้งที่ส่งมอบหรือปรับ Baseline | เก็บถาวรใน Repository | | ฐานข้อมูล `wms` และ `wms2` | Export อัตโนมัติไปยังพื้นที่จัดเก็บบนคลาวด์ที่บริษัทควบคุม | ทุกวัน เวลา 02:00 น. | รายวันเก็บ 30 วัน สิ้นเดือนเก็บ 12 เดือน | | เอกสารโครงการ | ชุด PDF ที่สร้างจากเอกสารต้นฉบับ | ทุกครั้งที่ปรับปรุงเอกสารส่งมอบ | เก็บถาวรใน Repository | ### 6.1 ขั้นตอนการกู้คืนฐานข้อมูล 1. ผู้ดูแลระบบเลือกชุดสำรองที่ต้องการจากพื้นที่จัดเก็บบนคลาวด์ และยืนยันวันที่พร้อมความสมบูรณ์ของไฟล์ 2. กู้คืนชุดสำรองเข้าสู่สภาพแวดล้อมที่ไม่ใช่ระบบใช้งานจริงก่อนเสมอ 3. ตรวจสอบการเชื่อมต่อฐานข้อมูล `wms` และ `wms2` พร้อมตรวจสอบข้อมูลหลักและรายการตัวอย่าง 4. กรณีกู้คืนระบบใช้งานจริง ให้บันทึกจุดกู้คืน หยุดบริการที่เกี่ยวข้อง กู้คืนชุดสำรองที่ตรวจสอบแล้ว เริ่มบริการแอปพลิเคชันและ Node.js ใหม่ แล้วตรวจสอบสถานะตามหัวข้อ 5 5. กรณีการสำรองข้อมูลล้มเหลวหรือไม่ทำงานตามกำหนด ผู้ดูแลระบบต้องตรวจสอบสาเหตุและสั่งทำงานซ้ำ กำหนดทดสอบกู้คืนภายใน 23 สิงหาคม 2569 โดยกู้คืนชุดสำรองลงในสภาพแวดล้อมที่ไม่ใช่ระบบใช้งานจริง ตรวจสอบการเข้าถึงฐานข้อมูลและข้อมูลตัวอย่างให้ครบถ้วน และให้ผู้จัดการโครงการทบทวนผลการทดสอบในขั้นตอนปิดโครงการ ## 7 การปิดรายการควบคุมด้านปฏิบัติการ | ลำดับ | รายการควบคุม | ผู้รับผิดชอบ | สถานะ | หลักฐานการปิดรายการ | | :---: | --- | --- | --- | --- | | OP-001 | การสำรองและกู้คืนฐานข้อมูล `wms` และ `wms2` แบบอัตโนมัติ | System Administrator | กำหนดปิดรายการ 23 สิงหาคม 2569 | หัวข้อ 6 ระบุรอบการสำรอง ที่จัดเก็บ การเก็บรักษา ขั้นตอนกู้คืน และแผนการทดสอบกู้คืน | | OP-002 | การเฝ้าระวังระบบและการแจ้งเตือนเมื่อเกิดเหตุขัดข้อง | System Administrator | กำหนดปิดรายการ 23 สิงหาคม 2569 | หัวข้อ 5 ระบุรอบการตรวจสอบ เงื่อนไขการแจ้งเตือน ผู้รับแจ้ง และขั้นตอนการยกระดับ | ## 8 การจัดการผู้ใช้งานและสิทธิ์ - ผู้ใช้ระดับ Owner หรือ Admin จัดการผู้ใช้งาน บทบาท และสิทธิ์การเข้าถึงแอปพลิเคชันจากเมนูตั้งค่า - การเปลี่ยนบทบาทมีผลกับการทำงานครั้งถัดไปของผู้ใช้รายนั้น - ระบบอนุญาตให้ใช้งานได้ครั้งละหนึ่ง Session ต่อบัญชี เพื่อป้องกันการใช้บัญชีร่วมกัน ## ผู้จัดทำเอกสาร (Secretary) | ชื่อ | ตำแหน่ง | ลายเซ็น | วันที่ | | --- | --- | --- | --- | | คุณธนกร สถิตวิทยากุล | Developer | | | ## ผู้ตรวจสอบเอกสาร (Reviewer) | ชื่อ | ตำแหน่ง | ลายเซ็น | วันที่ | | --- | --- | --- | --- | | คุณนพพงษ์ เจริญสุข | System Analyst | | | ## ผู้อนุมัติ (Approval) | ชื่อ | ตำแหน่ง | ลายเซ็น | วันที่ | | --- | --- | --- | --- | | คุณเสรี วิริยะสกุลธรณ์ | Project Sponsor | | |