- SOW, plan and design no longer cite the Aug baseline commit or the package tag - Work Schedule status derived from its date; Test Case has no results yet - build fails when a document cites a later commit, tag, ISS or ID (timeline.mjs) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
106 lines
13 KiB
Markdown
106 lines
13 KiB
Markdown
# Product Operation Guide
|
||
|
||
<!-- footer: UM -->
|
||
|
||
| 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 | | |
|