<commit_before>## Functional requirements ##
1. เข้าดูสินค้าต่างๆได้ผ่านหน้าเว็บ
2. ระบบล็อกอิน สำหรับผู้จัดการ
2. ระบบคำนวนราคาสินค้าต่อการซื้อของลูกค้า 1 ครั้ง สำหรับผู้จัดการ
3. ระบบเก็บประวัติการขายสินค้าทั้งหมด สำหรับผู้จัดการ
4. ระบบเพิ่มสินค้าชนิดใหม่เข้าสู่ฐานข้อมูล สำหรับผู้จัดการ
5. ระบบดูประวัติการซื้อของลูกค้า
6. ระบบค้นหาสินค้าที่มีในร้าน
7. ระบบแสดงรายการสินค้าที่มียอดขายสูงสุด 10 รายการ
8. มีช่องทางการเชื่อมต่อ (Rest API) สำหรับเช็คราคาสินค้าในร้าน
9. มีช่องทางการเชื่อมต่อ (Rest API) สำหรับลูกค้าเพื่อดูประวัติการซื้อของตัวเอง

## Non-functional requirements ##
1.  หน้าเว็บรองรับการแสดงผลทั้งบน คอมพิวเตอร์ตั้งโต้ะ และสมาร์ทโฟน
2.  มีรูปแบบการแสดงรายการสินค้าเป็นตารางเพื่อง่ายแก่การเลือกดูสินค้า
3.  เป็นเว็บแอปพลิเคชันทำให้สามารถติดตั้งลงในระบบปฏิบัติการใดก็ได้
4.  มีการรักษาความปลอดภัยของข้อมูลสำคัญที่ถูกจัดเก็บหรือถูกใช้ในการสื่อสาร โดยใช้โปรโตคอลที่มีการเข้ารหัส (https)
5. รองรับผู้ใช้เข้าบริการพร้อมกัน 10 คนโดยประสิทธิภาพการทำงานไม่ลดลง

## Use case diagram ##
![alt text](http://ziko.kmi.tl/ooad/usecase3.png)

## Use case specifications ##
####1.**Use case name:** ระบบคำนวณมูลค่าสินค้า  #
 - **Use case purpose:** ทำการคำนวณมูลค่าสินค้าที่ลูกค้าซื้อในครั้งนั้น แล้วบันทึกลงประวัติการ
ขายของร้าน และประวัติการ  
 - **Preconditions:** ลูกค้าซื้อสินค้าในร้านอย่างน้อย 1 ชิ้นขึ้นไป
 - **Postconditions:** แสดงมูลค่าสินค้าที่ลูกค้าซื้อในครั้งนั้น มีประวัติการขายบันทึกลงฐานข้อมูล มีประวัติการซื้อของลูกค้าบันทึกลงในฐานข้อมูล  
 - **Limitations:** ลูกค้าที่ไม่ได้เป็นสมาชิก จะไม่สามารถดูประวัติการซื้อย้อนหลังได้
 - **Assumptions:** สินค้าทุกชิ้นในร้านค้ามีข้อมูลอยู่ในฐานข้อมูล และมีการกำหนดราคาสินค้าไว้แล้ว
 - **Primary Scenario:**  
   A. ผู้จัดการร้านล็อกอินเข้าสู่ระบบ  
   B. ระบบจะถามว่าเป็น ลูกค้าในระบบ หรือไม่  
     -   ถ้าใช่ ระบบจะให้เลือกว่าเป็นลูกค้าคนไหน
   
   C. ผู้จัดการกดเลือกสินค้า และจำนวนชิ้นที่ลูกค้า  
   D. ระบบจะเพิ่มรายการสินค้าและจำนวนที่ซื้อแสดงบนหน้าเว็บ พร้อมคำนวณมูลค่าสินค้าในรายการทั้งหมด  
   E. ทำขั้นตอน C ไปเรื่อยๆ จนกว่าจะครบทุกรายการสินค้าที่ลูกค้าซื้อ  
   F. กดสิ้นสุดการเพิ่มสินค้า  
   G. ระบบจะแสดงมูลค่าสินค้าผล และช่องให้กรอกยอดเงินที่ลูกค่าจ่ายมา  
   H. ระบบจะแสดงจำนวนเงินทอนที่ต้องทอน  
   I. ผู้จัดการกดเสร็จสิ้นการทำรายการ  
 - **Alternate Scenario:**
 - **Condition triggering an alternate scenario:**
 - **Condition 1:** เลือกสินค้าผิดหรือจำนวนผิด
     - D1. กดลบรายการสินค้าที่ต้องการจะแก้ไขรายการ  
     - D2. กลับไปทำตามขั้นตอน C ใหม่  
  

####2.**Use case name:** ระบบคำนวณมูลค่าสินค้า  ####
 - **Use case purpose:** ดูสรุปการขายของร้าน ในช่วงเวลาที่เลือก เป็นวัน สัปดาห์ หรือเดือน  
 - **Preconditions:** ร้านค้าเคยมีการขายสินค้าไปแล้ว (มีประวัติการขาย)
 - **Postconditions:** ระบบจะแสดงผลสรุปการขายสินค้าออกมาตามช่วงเวลาที่เลือก  
 - **Limitations:** -
 - **Assumptions:** ร้านค้าเคยขายสินค้าไปแล้ว ( มีประวัติการขาย )  
 - **Primary Scenario:**  
   A. ผู้จัดการร้านล็อกอินเข้าสู่ระบบ    
   B. กดเลือกไปที่ สรุปผลการขาย  
   C. เลือกช่วงเวลาที่ต้องการจะดูสรุปผลการขาย  
   D. ระบบจะแสดงสรุปผลการขายในช่วงเวลานั้น  

## Activity diagrams ##
1. เพิ่มข้อมูลลูกค้าคนใหม่
2. เพิ่มสินค้าชนิดใหม่<commit_msg>Update requirements.md<commit_after>## Functional requirements ##
1. เข้าดูสินค้าต่างๆได้ผ่านหน้าเว็บ
2. ระบบล็อกอิน สำหรับผู้จัดการ
2. ระบบคำนวนราคาสินค้าต่อการซื้อของลูกค้า 1 ครั้ง สำหรับผู้จัดการ
3. ระบบเก็บประวัติการขายสินค้าทั้งหมด สำหรับผู้จัดการ
4. ระบบเพิ่มสินค้าชนิดใหม่เข้าสู่ฐานข้อมูล สำหรับผู้จัดการ
5. ระบบดูประวัติการซื้อของลูกค้า
6. ระบบค้นหาสินค้าที่มีในร้าน
7. ระบบแสดงรายการสินค้าที่มียอดขายสูงสุด 10 รายการ
8. มีช่องทางการเชื่อมต่อ (Rest API) สำหรับเช็คราคาสินค้าในร้าน
9. มีช่องทางการเชื่อมต่อ (Rest API) สำหรับลูกค้าเพื่อดูประวัติการซื้อของตัวเอง

## Non-functional requirements ##
1.  หน้าเว็บรองรับการแสดงผลทั้งบน คอมพิวเตอร์ตั้งโต้ะ และสมาร์ทโฟน
2.  มีรูปแบบการแสดงรายการสินค้าเป็นตารางเพื่อง่ายแก่การเลือกดูสินค้า
3.  เป็นเว็บแอปพลิเคชันทำให้สามารถติดตั้งลงในระบบปฏิบัติการใดก็ได้
4.  มีการรักษาความปลอดภัยของข้อมูลสำคัญที่ถูกจัดเก็บหรือถูกใช้ในการสื่อสาร โดยใช้โปรโตคอลที่มีการเข้ารหัส (https)
5. รองรับผู้ใช้เข้าบริการพร้อมกัน 10 คนโดยประสิทธิภาพการทำงานไม่ลดลง

## Use case diagram ##
![alt text](http://ziko.kmi.tl/ooad/usecase3.png)

## Use case specifications ##
####1.**Use case name:** ระบบคำนวณมูลค่าสินค้า  #
 - **Use case purpose:** ทำการคำนวณมูลค่าสินค้าที่ลูกค้าซื้อในครั้งนั้น แล้วบันทึกลงประวัติการ
ขายของร้าน และประวัติการ  
 - **Preconditions:** ลูกค้าซื้อสินค้าในร้านอย่างน้อย 1 ชิ้นขึ้นไป
 - **Postconditions:** แสดงมูลค่าสินค้าที่ลูกค้าซื้อในครั้งนั้น มีประวัติการขายบันทึกลงฐานข้อมูล มีประวัติการซื้อของลูกค้าบันทึกลงในฐานข้อมูล  
 - **Limitations:** ลูกค้าที่ไม่ได้เป็นสมาชิก จะไม่สามารถดูประวัติการซื้อย้อนหลังได้
 - **Assumptions:** สินค้าทุกชิ้นในร้านค้ามีข้อมูลอยู่ในฐานข้อมูล และมีการกำหนดราคาสินค้าไว้แล้ว
 - **Primary Scenario:**  
   A. ผู้จัดการร้านล็อกอินเข้าสู่ระบบ  
   B. ระบบจะถามว่าเป็น ลูกค้าในระบบ หรือไม่  
     -   ถ้าใช่ ระบบจะให้เลือกว่าเป็นลูกค้าคนไหน
   
   C. ผู้จัดการกดเลือกสินค้า และจำนวนชิ้นที่ลูกค้า  
   D. ระบบจะเพิ่มรายการสินค้าและจำนวนที่ซื้อแสดงบนหน้าเว็บ พร้อมคำนวณมูลค่าสินค้าในรายการทั้งหมด  
   E. ทำขั้นตอน C ไปเรื่อยๆ จนกว่าจะครบทุกรายการสินค้าที่ลูกค้าซื้อ  
   F. กดสิ้นสุดการเพิ่มสินค้า  
   G. ระบบจะแสดงมูลค่าสินค้าผล และช่องให้กรอกยอดเงินที่ลูกค่าจ่ายมา  
   H. ระบบจะแสดงจำนวนเงินทอนที่ต้องทอน  
   I. ผู้จัดการกดเสร็จสิ้นการทำรายการ  
 - **Alternate Scenario:**
 - **Condition triggering an alternate scenario:**
 - **Condition 1:** เลือกสินค้าผิดหรือจำนวนผิด
     - D1. กดลบรายการสินค้าที่ต้องการจะแก้ไขรายการ  
     - D2. กลับไปทำตามขั้นตอน C ใหม่  
  

####2.**Use case name:** ระบบคำนวณมูลค่าสินค้า  ####
 - **Use case purpose:** ดูสรุปการขายของร้าน ในช่วงเวลาที่เลือก เป็นวัน สัปดาห์ หรือเดือน  
 - **Preconditions:** ร้านค้าเคยมีการขายสินค้าไปแล้ว (มีประวัติการขาย)
 - **Postconditions:** ระบบจะแสดงผลสรุปการขายสินค้าออกมาตามช่วงเวลาที่เลือก  
 - **Limitations:** -
 - **Assumptions:** ร้านค้าเคยขายสินค้าไปแล้ว ( มีประวัติการขาย )  
 - **Primary Scenario:**  
   A. ผู้จัดการร้านล็อกอินเข้าสู่ระบบ    
   B. กดเลือกไปที่ สรุปผลการขาย  
   C. เลือกช่วงเวลาที่ต้องการจะดูสรุปผลการขาย  
   D. ระบบจะแสดงสรุปผลการขายในช่วงเวลานั้น  

## Activity diagrams ##
1. เพิ่มข้อมูลลูกค้าคนใหม่  
![alt text](http://ziko.kmi.tl/ooad/add.jpg)
2. เพิ่มสินค้าชนิดใหม่
![alt text](http://ziko.kmi.tl/ooad/regis.jpg)
{'fraction_non_alphanumeric': 0.21556791104050835, 'fraction_numerical': 0.009213661636219221, 'mean_word_length': 6.668696711327649, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '467136', 'n_tokens_mistral': 5146, 'n_tokens_neox': 5659, 'n_words': 348}