SystemRequirement - oddsteam/oddsBooking-Admin Wiki

System Requirement

User Stories

  1. ระบบบันทึกการจองในบทบาทของ “คนจัดกิจกรรม” ที่ต้องการบันทึกการจองห้องเพื่อจัดกิจกรรม มีข้อมูลส่งออก (Output) คือ ให้ระบบส่งรายละเอียดการจองไปที่อีเมล และบันทึกข้อมูลลงในฐานข้อมูล (Database)
  2. ระบบแสดงข้อมูลการจองในบทบาทของ “คนจัดกิจกรรม” ที่ต้องการดูรายละเอียดการจองเพื่อรู้รายละเอียดการจองและจัดหาวัน เวลาสำหรับการจัดกิจกรรม ข้อมูลส่งออก (Output) คือ ลิงก์ที่อยู่ (Link) หรือ URL ของข้อมูลการจอง และรายการแสดงการจัดกิจกรรม

Requirement

  1. User สามารถจองโดยจะต้องระบุชื่อ อีเมล เบอร์โทรศัพท์ ห้องที่ต้องการจอง เหตุผลในการขอใช้ห้อง และช่วงเวลาที่ขอใช้ห้องดังกล่าว
  2. User มีเงื่อนไขการจองในแต่ละช่วงเวลา ดังนี้
    1. User ต้องจองล่วงหน้าอย่างน้อย 14 วันหรือ 2 สัปดาห์
    2. User ต้องจองด้วยช่วงเวลาอย่างน้อย 1 ชั่วโมง และมีสล็อตในการเลือกช่วงเวลาที่ห่างกันอยู่ที่ 30 นาที โดยนำเงื่อนไขการจองอื่น ๆ มาร่วมด้วย
    3. User จะไม่สามารถจองข้ามวันได้
    4. หาก User ต้องการจองห้องในวันจันทร์ถึงวันศุกร์ จะต้องจองในช่วงเวลา 18:00 น. ถึง 23:00 น.
    5. หาก User ต้องการจองห้องในวันเสาร์หรือวันอาทิตย์ จะต้องในช่วงเวลา 09:00 น. ถึง 21:00 น.
  3. เมื่อ User ทำการกรอกฟอร์มเพื่อขอเข้าใช้ห้องแล้ว จะต้องมีหน้าแสดงข้อมูลที่กรอกไปแล้ว ก่อนที่จะยืนยันการส่งฟอร์มอีกครั้ง
  4. เมื่อ User ทำการยืนยันและส่งฟอร์มการจองเรียบร้อย จะต้องมีหน้าขอบคุณที่ทำการจองเข้ามาในระบบ
  5. เมื่อ User ทำการยืนยันและส่งฟอร์มการจองเรียบร้อย ระบบหลังบ้านจะต้องส่งอีเมลไปยัง User เพื่อให้ User ทำการตรวจสอบข้อมูลการจอง และทำการยืนยันการจองอีกครั้ง
  6. เมื่อ User ได้รับอีเมลสำหรับการยืนยันการจอง ต้องกดยืนยันการจองภายใน 24 ชั่วโมง มิเช่นนั้นข้อมูลการจองของ User จะถูกยกเลิก
  7. เมื่อ User ทำการยืนยันการจองเรียบร้อย ระบบหลังบ้านจะต้องส่งอีเมลไปยัง Admin เพื่ออนุมัติการจอง และส่งอีเมลตอบกลับไปโดยใช้ระบบหลังบ้าน
  8. ต้องพัฒนารองรับให้ครบทุกแพลตฟอร์ม ตามเฟรมเวิร์คและภาษาที่กำหนดให้ ดังนี้ 8.1. แพลตฟอร์มเว็บแอปพลิเคชัน (Web Application) สำหรับ User จะต้องพัฒนาโดยใช้ภาษาไทป์สคริปต์ (TypeScript) โดยใช้เฟรมเวิร์คเป็น Angular และไม่จำกัดไลบราลี่ (Libraries) ที่จะนำเข้ามาใช้งาน 8.2. แพลตฟอร์มแอนดรอยด์แอปพลิเคชัน (Android Application) จะต้องพัฒนาในรูปแบบของเนทีฟแอนดรอยด์ (Native Android) โดยใช้ภาษาคอทลิน (Kotlin) ในการพัฒนา และไม่จำกัดไลบราลี่ (Libraries) ที่จะนำเข้ามาใช้งาน 8.3. แพลตฟอร์มไอโอเอสแอปพลิเคชัน (IOS Application) จะต้องพัฒนาในรูปแบบของเนทีฟไอโอเอส (Native IOS) โดยใช้ภาษาสวิฟ (Swift) ในการพัฒนา 8.4. ระบบหลังบ้าน (Backend) จะต้องพัฒนาโดยใช้ภาษาจาวา (Java) และใช้เฟรมเวิร์คเป็นสปริงบูต (Spring Boot)
  9. ระบบที่พัฒนาจะต้องดีพลอยด์ (Deploy) ขึ้นบนคลาวด์ที่กำหนดให้ โดยการใช้ดอกเกอร์ (Docker) เพื่อดีพลอยด์คอนเทนเนอร์ (Container) ขึ้นสู่คลาวด์ (Clound) และระบบดังกล่าวต้องทำงานได้ปกติ
  10. ระบบที่พัฒนาจะต้องมีการทำ ซีไอซีดี (CI/CD: Continuous Integration and Continuous Delivery) โดยใช้เจนกินส์ (Jenkins) และใช้ GitHub Action เพื่อตรวจสอบการทำงานของแต่ละคน และความเคลื่อนไหวภายในตัวโปรเจค
  11. ระบบที่พัฒนาจะต้องมีการเขียนเทส โดยแบ่งเป็นแมนนวลเทส (Manual Testing) และออโต้เมทเทส (Automation Testing) ซึ่งรวมไปถึงการทำยูนิตเทส (Unit Testing) อินทิเกรตเทส (Integrate Testing) และเอนด์ทูเอนด์เทส (End-to-End Testing)

Flowchart

Flowchart 1


Flowchart 2


Flowchart 3