ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

ไอเดีย (Idea) idea devtools

ไอเดีย #72: ระบบ changelog และแจ้งเวอร์ชันใหม่ให้ผู้ใช้

เราอัปเดตระบบทุกสัปดาห์ แต่ผู้ใช้ไม่รู้เลยว่ามีอะไรใหม่ ฟีเจอร์ที่ทีมทำมาเป็นเดือนกลับไม่มีคนใช้ เพราะไม่มีใครรู้ว่ามันมีอยู่ ขณะที่บางครั้งเราเปลี่ยนหน้าจอแล้วผู้ใช้โทรมาถามว่าปุ่มหายไปไหน ระบบ changelog และแจ้งเวอร์ชันใหม่ช่วยปิดช่องว่างนี้ ให้ทีมเขียน release note ครั้งเดียว แล้วไปโผล่ทั้งในหน้า changelog และ widget เล็ก ๆ ในแอป

ใครจะใช้

  • ทีมพัฒนา/Product — เขียน release note จัดหมวด เผยแพร่ตามเวลา
  • ผู้ใช้ระบบ — เห็นจุดแจ้งเตือน "มีอะไรใหม่" อ่านรายละเอียด กดถูกใจหรือให้ความเห็น
  • ทีม support — อ้างอิง changelog เวลาตอบคำถามลูกค้า

ฟีเจอร์ขั้นต่ำ (MVP)

  • เขียน release note ด้วย Markdown แยกหมวด (ใหม่ ปรับปรุง แก้ไข) ผูกกับเลขเวอร์ชัน
  • ตั้งเวลาเผยแพร่ และเลือกกลุ่มผู้ใช้ที่จะเห็น (ทุกคน/เฉพาะ admin/เฉพาะลูกค้าแผนใด)
  • หน้า changelog สาธารณะเรียงตามเวลา มี RSS
  • Widget แบบ JavaScript ฝังในแอปได้ด้วยโค้ดไม่กี่บรรทัด แสดง badge จำนวนเรื่องที่ยังไม่อ่าน
  • จำว่าผู้ใช้อ่านถึงไหนแล้ว (ผ่าน user id ที่แอปส่งมา หรือ local storage)
  • ผู้ใช้ให้ reaction หรือ feedback สั้น ๆ ต่อแต่ละรายการ

ต่อยอดได้อีก

  • ดึงข้อความจาก commit หรือ pull request มาเป็นร่าง release note ให้คนแก้ต่อ
  • Roadmap สาธารณะให้ผู้ใช้โหวตฟีเจอร์ที่อยากได้
  • ส่งสรุปรายเดือนทางอีเมล
  • รองรับหลายภาษา ไทย/อังกฤษ

โครงข้อมูลตั้งต้น

  • product — id, name, widget_key
  • release — id, product_id, version, title, body_md, category, audience, publish_at, status
  • release_read — product_id, external_user_id, last_read_release_id, updated_at
  • release_reaction — id, release_id, external_user_id, reaction, comment, created_at

ระดับความยาก และสิ่งที่จะได้เรียนรู้

มือใหม่ถึงปานกลาง — ส่วนที่น่าเรียนคือการทำ widget ที่ฝังในเว็บคนอื่น

  • ทำ embeddable widget ที่ไม่ชน CSS ของเว็บหลัก (ลองใช้ Shadow DOM หรือ iframe)
  • ตั้งค่า CORS ให้ถูกต้องสำหรับ API ที่ widget เรียก
  • render Markdown อย่างปลอดภัย (sanitize HTML)
  • สร้าง RSS feed และหน้า public ที่ SEO ดี

ข้อควรระวัง

  • Markdown ที่ render เป็น HTML ต้องกรอง script ออก ไม่อย่างนั้นเกิด XSS ในแอปลูกค้าทุกตัวที่ฝัง widget
  • ถ้าแอปส่ง user id มา ให้ใช้ id ที่สุ่มหรือ hash ไม่ส่งอีเมลหรือข้อมูลส่วนตัวมาโดยไม่จำเป็น
  • release note ไม่ควรเปิดเผยรายละเอียดช่องโหว่ที่เพิ่งแก้ก่อนผู้ใช้ทุกคนอัปเดต

ทีมคุณเขียน release note กันไหม หรือปล่อยให้ commit message เป็นเอกสารแทน? และคิดว่า widget แบบ popup หรือแบบ badge เล็ก ๆ ที่ไม่กวนผู้ใช้ดีกว่ากัน มาออกความเห็นกันครับ ทำเสร็จแล้วเอามาแชร์ในกระทู้ได้เลย

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก