Replace the PHP/Markdown seeding with a data-driven generator in scripts/sdlc-seed and regenerate all 59 work products.
113 lines
17 KiB
Markdown
113 lines
17 KiB
Markdown
# Software Requirements
|
||
|
||
<!-- footer: SRS -->
|
||
|
||
| Document No | Software Requirements | Release, Version, By: | 25690225 V1.0 NoC |
|
||
| Project Name | โครงการพัฒนาระบบบริหารจัดการคลังสินค้า (BRN WMS) บริษัท บี.อาร์.เอ็น เอ็นเตอร์ไพรส์ จำกัด |
|
||
| Project Code | 200-WMS-26-001-00 |
|
||
| Title | เอกสารบันทึกและสรุปความต้องการซอฟต์แวร์ (Software Requirements Specification) |
|
||
| Project Period | 5 มกราคม 2569 – 24 สิงหาคม 2569 |
|
||
| Organizer | คุณอภิรัชช์ สุภัทรประทีป (Project Manager) , คุณนพพงษ์ เจริญสุข (System Analyst) |
|
||
| Recorder | คุณเยาวลักษณ์ บางชมภู (Document Control) |
|
||
|
||
## วัตถุประสงค์ (Objectives)
|
||
|
||
เพื่อแปลงความต้องการของลูกค้าที่ได้รับอนุมัติแล้วให้เป็นความต้องการเชิงเทคนิคของซอฟต์แวร์ ครอบคลุมมาตรฐาน โครงสร้าง ส่วนประกอบ ความสัมพันธ์ ประสิทธิภาพ ส่วนเชื่อมต่อ ความปลอดภัย ฐานข้อมูล และการจัดการข้อผิดพลาด เพื่อใช้เป็นเอกสารอ้างอิงหลักในการออกแบบระบบ พัฒนา และทดสอบ
|
||
|
||
## ผู้มีส่วนได้ส่วนเสีย (Stakeholders)
|
||
|
||
| ลำดับ | ชื่อ | หน่วยงาน/ตำแหน่ง | บทบาท |
|
||
| :---: | --- | --- | --- |
|
||
| 1 | คุณเสรี วิริยะสกุลธรณ์ | ผู้บริหาร (CEO) | Project Sponsor อนุมัติความต้องการ |
|
||
| 2 | คุณอภิรัชช์ สุภัทรประทีป | ผู้จัดการโครงการ | บริหารจัดการโครงการ |
|
||
| 3 | คุณนพพงษ์ เจริญสุข | นักวิเคราะห์ระบบ | จัดทำและควบคุมความต้องการซอฟต์แวร์ |
|
||
| 4 | คุณธนกร สถิตวิทยากุล | นักพัฒนาระบบ | พัฒนาระบบตามความต้องการ |
|
||
| 5 | คุณปริญ งามขำ | ผู้ทดสอบระบบ | จัดทำ Test Case จากความต้องการ |
|
||
|
||
## ความต้องการซอฟต์แวร์ (Software Requirements)
|
||
|
||
| ID | Topic | Result* | Remark |
|
||
| --- | --- | :---: | --- |
|
||
| SR01: Standards of Software | | | |
|
||
| SR01:001 | ระบบต้องพัฒนาและจัดทำเอกสารให้สอดคล้องกับมาตรฐาน ISO/IEC 29110 Basic Profile และแนวปฏิบัติ Secure Coding | A | CR12:004, CR14:001–CR14:003, CR09:003, CR10:004, CR11:001–CR11:004 |
|
||
| SR01:002 | ระบบต้องใช้เทคโนโลยี PHP 8 ขึ้นไป, MySQL/MariaDB และ Node.js (Socket.IO, pm2) | A | CR04:004, CR12:001 |
|
||
| SR01:003 | ระบบต้องติดตั้งบน Linux Server ได้ทั้งแบบ Manual (setup.php) และ Docker Compose (php-apache, mariadb, node/pm2) | A | CR07:001, CR10:001, CR10:002, CR08:001, CR08:002, CR13:003 |
|
||
| SR01:004 | รหัสผ่านผู้ใช้ต้องเข้ารหัสด้วย bcrypt (PASSWORD_BCRYPT) และไม่เก็บหรือบันทึกเป็นข้อความธรรมดา | A | CR12:003 |
|
||
| SR01:005 | ค่าตั้งค่าและความลับ (app/config.php, .env) ต้องถูกยกเว้นจาก Source Control และสร้างขึ้นตอนติดตั้ง | A | CR06:002, CR09:002, CR10:003 |
|
||
| SR01:006 | แอปพลิเคชันและงานตามกำหนดเวลาต้องใช้เขตเวลา Asia/Bangkok | A | CR07:002 |
|
||
| SR02: Software Structure Considerations | | | |
|
||
| SR02:001 | ระบบต้องเป็น Web-based Application แบบหลายหน้า (Multi-page PHP) | A | CR04:001 |
|
||
| SR02:002 | ส่วนติดต่อผู้ใช้ต้องเป็น Responsive Design รองรับ Desktop / Tablet / Mobile | A | CR05:001, CR07:003 |
|
||
| SR02:003 | ตรรกะทางธุรกิจต้องจัดเป็น Manager/Service Classes ที่เรียกใช้จาก Page Controller แยกจากส่วนแสดงผล | A | CR09:001 |
|
||
| SR02:004 | การเข้าถึงข้อมูลต้องผ่าน Manager Classes ไม่กระจาย SQL ในหน้าเพจ | A | CR09:001 |
|
||
| SR02:005 | ระบบต้องติดตั้งเป็น Container Stack ผ่าน Docker Compose ได้ นอกเหนือจากการติดตั้งแบบ Manual | A | CR10:002 |
|
||
| SR03: Software Elements | | | |
|
||
| SR03:001 | โมดูลผู้ใช้งานและสิทธิ์: ลงทะเบียน, Onboarding, เข้าสู่ระบบ, บทบาท Owner/Admin/Staff/Viewer, สิทธิ์แอปพลิเคชัน (app/login/, UserManager, PasswordManager, PasswordResetManager) | A | CR01:001–CR01:004 |
|
||
| SR03:002 | โมดูลตั้งค่าบริษัท: ข้อมูลบริษัท, SMTP, การตั้งค่าระบบ (app/setting/, CompanyProfileManager, CompanySettingManager, SmtpManager) | A | CR01:004, CR03:005 |
|
||
| SR03:003 | โมดูลข้อมูลหลัก: คลังสินค้า, พื้นที่/ช่องจัดเก็บ, หมวดสินค้า, สินค้า, ผู้ติดต่อ (app/inventory/, app/contact/, WarehouseManager, ProductManager, ContactManager) | A | CR01:005, CR01:006 |
|
||
| SR03:004 | โมดูลควบคุมสินค้าคงคลัง: รับเข้า, จ่ายออก, โอนย้าย, Lot/Serial/Expiry, บาร์โค้ด, แนบไฟล์ (app/ics/, StockManager, StockSourceManager, BarcodeManager, FileUploader) | A | CR01:007–CR01:012, CR01:019, CR05:005 |
|
||
| SR03:005 | โมดูลขาย: ใบเสนอราคา, ใบสั่งขาย, ใบแจ้งหนี้, ใบรับคืน/ใบลดหนี้ (app/order/, app/revenue/, QuotationManager, OrderManager, InvoiceManager, ReturnManager) | A | CR01:013 |
|
||
| SR03:006 | โมดูลจัดซื้อ: ใบขอซื้อ, ใบสั่งซื้อ, ใบแจ้งหนี้ซื้อ, ใบคืนสินค้าผู้ขาย (app/po/, PurchaseRequestManager, PurchaseOrderManager, SupplierReturnManager) | A | CR01:014 |
|
||
| SR03:007 | โมดูลการเงิน: ใบวางบิลรับ, ใบเสร็จ, ใบวางบิลจ่าย, ใบสำคัญจ่าย (app/finance/, ReceiptBillingManager, ReceiptManager, PaymentBillingManager, PaymentManager) | A | CR01:015 |
|
||
| SR03:008 | โมดูลบัญชี: ผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน, บัญชีแยกประเภท (app/accounting/, app/journal/, PostingManager) | A | CR01:016 |
|
||
| SR03:009 | โมดูลรายงานและแดชบอร์ด: รายงานสต๊อก, รายงานการเงิน, แดชบอร์ด (app/reports/, app/dashboard/, app/ac_dashboard/, ReportManager, EtlStockManager) | A | CR01:011, CR01:017, CR01:020 |
|
||
| SR03:010 | โมดูลควบคุมเอกสาร: ออกเลขที่เอกสาร, วงจรชีวิต/สถานะ, ประวัติรายการ (DocumentNumberManager, BatchActionManager) | A | CR01:018, CR01:023 |
|
||
| SR03:011 | บริการแจ้งเตือนและงานตามกำหนดเวลา: Socket.IO และ Scheduler (nodejs/server.js, nodejs/scheduler.js, app/cron/) | A | CR01:021, CR01:022 |
|
||
| SR04: Software Elements Relationship | | | |
|
||
| SR04:001 | ทุกโมดูลปฏิบัติการต้องเข้าถึงได้ผ่านการยืนยันตัวตนและการตรวจสิทธิ์ของโมดูลผู้ใช้งานเท่านั้น | A | CR01:002, CR01:024, CR04:003, CR05:002 |
|
||
| SR04:002 | โมดูลขาย จัดซื้อ และการเงิน ต้องบันทึกผลกระทบต่อสต๊อกและ GL ผ่านโมดูลคลังสินค้าและบัญชี ไม่ทำซ้ำตรรกะ | A | CR01:013–CR01:016 |
|
||
| SR04:003 | โมดูลรายงานต้องอ่านข้อมูลภายใต้ขอบเขตบริษัท/คลังที่โมดูลข้อมูลหลักและคลังสินค้าบังคับใช้ | A | CR01:024, CR08:004 |
|
||
| SR04:004 | บริการ Node.js ต้องรับเหตุการณ์จากแอปพลิเคชัน PHP ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret เท่านั้น | A | CR01:021, CR03:003 |
|
||
| SR04:005 | ทุกโมดูลที่สร้างเอกสารธุรกิจต้องเรียกใช้โมดูลควบคุมเอกสารเพื่อออกเลขที่เอกสาร | A | CR01:018 |
|
||
| SR05: Performance Characteristics | | | |
|
||
| SR05:001 | งานประจำวัน (เปิดหน้าจอ, ค้นหา, สร้างเอกสาร) ต้องเสร็จภายในเวลาที่ใช้งานได้จริงบนสภาพแวดล้อมที่ตกลง | A | CR02:001 |
|
||
| SR05:002 | ยอดสรุปสต๊อก/GL/แดชบอร์ดต้องคำนวณล่วงหน้าตามกำหนดเวลา (etl_stock_summary, etl_gl_summary) | A | CR02:002, CR01:022, CR08:005 |
|
||
| SR05:003 | ระบบต้องรองรับปริมาณข้อมูลและผู้ใช้พร้อมกันตามที่ตกลงสำหรับสภาพแวดล้อมใช้งานจริง | A | CR02:003 |
|
||
| SR05:004 | ระบบต้องมี Health Check ทุก 5 นาที และแจ้งเตือนผู้ดูแลเมื่อล้มเหลวติดต่อกัน 2 ครั้ง | A | CR08:003 |
|
||
| SR06: Software Interfaces | | | |
|
||
| SR06:001 | แอปพลิเคชัน PHP ต้องเชื่อมต่อฐานข้อมูล MariaDB 2 ฐาน: wms (ผู้ใช้/บริษัท) และ wms2 (คลัง/บัญชี) | A | CR03:001 |
|
||
| SR06:002 | ระบบต้องใช้งานได้บน Chrome, Edge และ Firefox รุ่นปัจจุบัน | A | CR03:002 |
|
||
| SR06:003 | ระบบต้องรองรับ Mobile/Tablet Browser ผ่าน Responsive UI | A | CR07:003 |
|
||
| SR06:004 | แอปพลิเคชัน PHP ต้องส่งเหตุการณ์ไป Node.js ผ่าน HTTP Endpoint ภายใน (NODE_EMIT_URL + NODE_EMIT_SECRET) และส่งอีเมลผ่าน SMTP ต่อบริษัท | A | CR03:003, CR03:005 |
|
||
| SR06:005 | Browser ต้องเชื่อมต่อ Socket.IO Endpoint (NODE_PUBLIC_URL) เพื่อรับการแจ้งเตือน | A | CR03:004 |
|
||
| SR07: Security Characteristics | | | |
|
||
| SR07:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องผ่าน HTTPS/TLS | A | CR06:001 |
|
||
| SR07:002 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | A | CR06:003, CR14:004 |
|
||
| SR07:003 | ระบบต้องอนุญาต Session ที่ใช้งานอยู่เพียงหนึ่งต่อบัญชี (บล็อก Concurrent Login) | A | CR06:006 |
|
||
| SR07:004 | ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting ทั้งด้านรับข้อมูลและแสดงผล | A | CR06:005 |
|
||
| SR07:005 | RBAC (Owner/Admin/Staff/Viewer) ต้องบังคับใช้ที่ฝั่งเซิร์ฟเวอร์ ไม่ใช่เพียงการซ่อนเมนู | A | CR06:004 |
|
||
| SR08: Database Design Requirements | | | |
|
||
| SR08:001 | ฐานข้อมูล wms: user, company_list, company_map_user, company_setting, company_smtp, company_usage, whitelist | A | CR01:001–CR01:004, CR04:002 |
|
||
| SR08:002 | ตารางข้อมูลหลัก (wms2): md_warehouse, md_storage, md_bin, md_product, md_product_category, md_contact, md_contact_type, md_account, md_account_formula, md_account_formula_item, md_department, md_barcode, md_sku_barcode_label, md_lot, md_lock_operation | A | CR01:005, CR01:010, CR01:016 |
|
||
| SR08:003 | ตารางรายการ (td_*): td_stock, td_order/_item, td_quotation/_item, td_invoice/_item, td_return/_item, td_purchase_request/_item, td_purchase_order/_item, td_supplier_return/_item, td_receipt/_item, td_receipt_billing/_item, td_payment/_item, td_payment_billing/_item, td_gl/td_gl_item, td_batch_action, td_bin_log | A | CR01:007–CR01:018 |
|
||
| SR08:004 | ตารางสรุปยอดและควบคุมเอกสาร: etl_stock_summary, etl_gl_summary, document_number_sequences, document_types, schema_migrations | A | CR01:018, CR01:022, CR09:004 |
|
||
| SR08:005 | ตารางทั้งหมดต้องสร้างซ้ำได้ในสภาพแวดล้อมใหม่ผ่าน setup.php โดยไม่ต้องแก้ Schema ด้วยมือ | A | CR10:001, CR09:004 |
|
||
| SR09: Error Handling and Recovery Attributes | | | |
|
||
| SR09:001 | การลบ ยกเลิก หรือ Void เอกสารควบคุมต้องมี Confirm Dialog | A | CR05:004, CR01:023 |
|
||
| SR09:002 | ข้อผิดพลาดต้องแสดงข้อความที่ผู้ใช้เข้าใจได้แทน Fatal Error | A | CR05:003, CR13:004 |
|
||
| SR09:003 | การเปลี่ยนแปลงที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction และป้องกันยอดติดลบ/ซ้ำ | A | CR13:001, CR13:002, CR01:008 |
|
||
|
||
## Remark
|
||
|
||
- \* Result : A = Accepted, U = Unaccepted, N/A = Not Applicable
|
||
- ช่อง Remark แสดงรหัสความต้องการของลูกค้า (Customer Requirements) ที่เป็นที่มาของความต้องการซอฟต์แวร์แต่ละรายการ
|
||
- ความต้องการซอฟต์แวร์ที่ไม่มีที่มาจากความต้องการของลูกค้าต้องผ่าน Change Report ก่อนถือเป็นข้อผูกพัน
|
||
|
||
## ผู้จัดทำเอกสาร (Secretary)
|
||
|
||
| ชื่อ | ตำแหน่ง | ลายเซ็น | วันที่ |
|
||
| --- | --- | --- | --- |
|
||
| คุณนพพงษ์ เจริญสุข | System Analyst | | |
|
||
|
||
## ผู้ตรวจสอบเอกสาร (Reviewer)
|
||
|
||
| ชื่อ | ตำแหน่ง | ลายเซ็น | วันที่ |
|
||
| --- | --- | --- | --- |
|
||
| คุณเยาวลักษณ์ บางชมภู | Document Control | | |
|
||
|
||
## ผู้อนุมัติ (Approval)
|
||
|
||
| ชื่อ | ตำแหน่ง | ลายเซ็น | วันที่ |
|
||
| --- | --- | --- | --- |
|
||
| คุณเสรี วิริยะสกุลธรณ์ | Project Sponsor | | |
|