Open pinyotae opened 7 years ago
ดูแล้วเป็นแนวทางที่ปฏิบัติได้จริง ดำเนินการไปตามนั้นได้เลย (แต่ขอดู UX ของ front-end ประกอบในตอนท้ายหนัก ๆ หน่อย เพราะทาง front-end มีอะไรมา surprise ผมประจำ)
อัพเดทความคืบหน้าครับ
- จัดเก็บ Resource ลงระบบในจังหวะเดียวกับที่อาจารย์อัพโจทย์
ส่วนนี้จัดการโดยตั้งในระบบมองหาโฟล์เดอร์ที่ชื่อ resource ในไฟล์ซิปของโจทย์ที่อาจารย์อัพเข้าระบบ โดยระบบจะทำการอ่านไฟล์ทุกๆ ไฟล์ที่อยู่ในโฟลเดอร์นี้และจัดเก็บข้อมูลลงดาต้าเบส (ถ้าไม่มีโฟลเดอร์ resource ก็อัพโจทย์ได้ตามปรกติครับ ก็จะเป้นโจทย์ที่ไม่มี resource ใดๆ แต่แน่นอนว่าอาจารย์สามารถเพิ่มในภายหลังได้)
- API จัดการ Resource แต่ละอัน เช่น สร้าง ลบ และจัดการการมองเห็นแต่ละไฟล์ในมุมมองนักศึกษา
ส่วนนี้จัดการโดยสร้าง API ใหม่สาม API สำหรับอาจารย์
problem/resource/create
[สำหรับเพิ่ม resource ลงใน problem]
problem/resource/{id}/delete
[สำหรับลบ resource ออกจาก problem]
problem/resource/{id}/visible
[สำหรับเปลี่ยนการมองเห็นแต่ละ resource ในมุมมองของนักศึกษา]
- รวม Resource เข้ากับ API เดิม เช่น api/student/lesson/show ต้องคืน Resource ของแต่ละ Problem ไปด้วย
เมื่อ problem ถูกลบ resource ต่างๆ ก็ถูกลบไปด้วย
api/student/lesson/show
คืน resource ของแต่ละ problem เฉพาะที่มีการเปิดการมองเห็น
ทั้งสามข้อนี้เสร็จสิ้นใน commit นี้ครับ 1f1797547f36adeb3ca5dc20248a278b5d8aeb03
พรุ่งนี้ผมจะประสานงานกับอู๋ในเรื่องนี้ครับ
ผมสงสัยว่าด้วยรูปแบบ API ของคุณ เวลาที่อาจารย์จะอัพของใหม่เข้าไปใน resource คุณจะให้อาจารย์จัดการยังไง เป็นต้นว่าตอนแรกมีไฟล์ example1.txt และ example2.txt ต่อมาอาจารย์จะแก้ข้อมูลในไฟล์ example1.txt (คืออยากอัพอันใหม่ไปทับอันเก่า), ลบไฟล์ example2.txt และ เพิ่ม example3.txt เข้าไป
นั่นคือสุดท้ายอาจารย์ต้องการให้ระบบมี example1.txt (version 2) และ example3.txt (ส่วน example2.txt ให้ลบทิ้ง) ถ้าเป็นแบบนี้ ลำดับงานของอาจารย์ต้องทำอย่างไรบ้าง
problem/resource/{id}/delete
ลบ example1.txt
problem/resource/{id}/delete
ลบ example2.txt
problem/resource/create
สร้าง example1.txt (version2)
problem/resource/create
สร้าง example3.txt
เพิ่อความมีประสิทธิภาพในการทำงาน ใน commit ล่าสุดนี้ 203555e260a71efb01bb9eaea2004625a1e0aa4f ผมได้เพิ่ม API สำหรับ Edit Resource ขึ้นมาอีกหนึ่งอันครับ
problem/resource/{id}/edit
เป็นต้นว่าเราต้องการส่งตัวโจทย์ไปพร้อมกับ test case ที่เอาไว้ให้นักเรียนใช้ไปทดสอบกับเครื่องตัวเอง หรือว่าเราต้องการส่งเอกสารอย่างอื่นเพื่อให้ใช้อ้างอิง (เช่น อาจจะส่ง PDF ของบทเรียนไปให้ผู้เข้าสอบ) เราจะพบว่าระบบไม่มีช่องทางสำหรับการอัพโหลดข้อมูลดังกล่าว