Feature 3: A student review tutor - Skydddoogg/soa2019_group2 GitHub Wiki

:scissors: Prototype

:vertical_traffic_light: User Flow

  • ขั้นตอนที่ 1: ค้นหาผู้สอน
  • ขั้นตอนที่ 2: เข้าไปยังหน้าโปลไฟล์ของผู้สอน
  • ขั้นตอนที่ 3: กรอกข้อมูลรีวิว
  • ขั้นตอนที่ 4: ยืนยันการรีวิว

:zap: Services

  • Tutor service
    • Database: Firebase real-time database
      • Pros:
        • เนื่องจากเป็น NoSQL ทำให้ประหยัด Query ไม่ต้อง join ข้อมูลหลาย table เราสามารถดึงออกมาเป็นก้อน object ผ่าน class model
        • หากติวเตอร์มีการอัพเดทข้อมูลจะทำให้ผู้เรียนสามารถเห็นข้อมูลที่เปลี่ยนแปลงได้ทันที เช่น เวลาที่สะดวกสอน
      • Cons:
        • firebase ต้องดึงข้อมูลติวเตอร์ทั้งหมด จึงทำให้เกิดความล่าช้าเนื่องจากข้อมูลมีขนาดใหญ่
  • Tutor Search service
    • Database: Firebase real-time database
      • Pros:
        • สามารถดึง object ของติวเตอร์โดยเป็น class model ทำให้สามารถดึงข้อมูลมาทีเดียว แล้วค่อยทำไปใช้ในหน้าดูข้อมูลติวเตอร์ได้
      • Cons:
        • ไม่จำเป็นต้องใช้ความเร็วขนาด real-time
  • Tutor Review service
    • Database: Firebase real-time database
      • Pros:
        • ทำให้ผู้ใช้ที่อยู่ในหน้าดูโปรไฟล์ติวเตอร์ สามารถเห็นรีวิวแบบ real-time
      • Cons:
        • firebase ต้องดึงข้อมูลรีวิวทั้งหมด จึงทำให้เกิดความล่าช้าเนื่องจากข้อมูลมีขนาดใหญ่
  • Review Posting service
    • Database: Firebase real-time database
      • Pros:
        • เมื่อผู้ใช้ทำการโพสต์รีวิว จะทำให้ข้อมูลฝั่งผู้ใช้ที่กำลังดูโพสต์มีการอัพเดตทันที
      • Cons:
        • รูปแบบข้อมูลของการรีวิวไม่เหมาะกับการเก็บแบบ JSON

:scroll: Detailed Actions

  • Action: ค้นหาผู้สอน
    • Descriptive view

      • Input: ตัวเลือกการกรองลิสต์ผู้สอน
      • Output: ผลลัพธ์การค้นหา (ลิสต์ผู้สอน)
    • Technical view

Event Endpoint URL Service Request Response
Search for tutor GET /searchtutor Tutor Search Tutor Tags รายชื่อติวเตอร์ตาม Tags

  • Action: ไปยังหน้าโปรไฟล์ของติวเตอร์
  • Action: ค้นหาผู้สอน
    • Descriptive view

      • Input: ติวเตอร์ที่ถูกเลือก
      • Output: โปรไฟล์ของติวเตอร์
    • Technical view

Event Endpoint URL Service Request Response
Get tutor's information GET /tutor/:tutorid Tutor Tutor ID ข้อมูลติวเตอร์
Get all review messages for tutor GET /tutor/:tutorid/reviews Tutor Review Tutor ID comments ที่ติวเตอร์ได้รับมา

  • Action: เขียนรีวิวให้ผู้สอน

There is no event


  • Action: ยืนยันการรีวิว
    • Descriptive view

      • Input: -
      • Output: โปรไฟล์ของติวเตอร์ที่ถูกเลือกมาแล้ว
    • Technical view

Event Endpoint URL Service Request Response
Post a review message to tutor POST /review/:reviewid/post Review Posting Review ID Success/Fail message
Get tutor's information GET /tutor/:tutorid Tutor Tutor ID ข้อมูลติวเตอร์
Get all review messages for tutor GET /tutor/:turtorid/reviews Tutor Review Tutor ID comments ที่ติวเตอร์ได้รับมา