11 ส.ค. 2568·อ่าน 3 นาที

สเปคตัวติดตามการต่อสัญญาสำหรับการเตือนและการอนุมัติ

สเปคตัวติดตามการต่อสัญญาที่ครอบคลุมการเตือน ผู้มีส่วนได้ส่วนเสีย และการอนุมัติ รวมโมเดลเอนทิตี เวิร์กโฟลว์ และกฎการแจ้งเตือนเพื่อให้คุณสร้างได้

สเปคตัวติดตามการต่อสัญญาสำหรับการเตือนและการอนุมัติ

สิ่งที่ตัวติดตามการต่อสัญญาต้องแก้

ระบบติดตามการต่อสัญญามีเพราะปัญหาเดียวกันเกิดซ้ำ: วันที่ต่ออายุถูกพลาด เจ้าของไม่ชัดเจน และรายละเอียดสำคัญกระจัดกระจายอยู่ตามอีเมล สเปรดชีต และไดรฟ์ร่วม เมื่อมีคนสังเกตเห็นการต่ออายุ มักจะสายเกินไปที่จะต่อรอง ยกเลิก หรือจัดงบประมาณ

ตัวติดตามควรตอบคำถามพื้นฐานได้ภายในไม่กี่วินาที:

  • อะไรที่จะต่ออายุ (ผู้ขาย/ลูกค้า, สัญญา, บริการ)
  • เมื่อไหร่ที่จะต่ออายุ (กำหนดแจ้งยกเลิก, วันสิ้นสุด, วันต่ออัตโนมัติ)
  • ใครต้องลงมือ (เจ้าของธุรกิจ, ฝ่ายกฎหมาย, ฝ่ายการเงิน, ฝ่ายจัดซื้อ)
  • จะเกิดอะไรต่อไป (ทบทวน, อนุมัติ, เซ็น, ชำระเงิน)
  • อะไรเปลี่ยนไป (บันทึก, การตัดสินใจ, และใครเป็นผู้อนุมัติ)

เป้าหมายคือการต่ออายุที่สม่ำเสมอโดยไม่มีความประหลาดใจหรืองานด่วนตอนท้าย ซึ่งต้องการวันที่ที่เชื่อถือได้ เจ้าของที่รับผิดชอบชัดเจน และสถานะที่สะท้อนความเป็นจริง หากสัญญาถูกทำเครื่องหมายว่า "Under review" คนต้องเห็นว่าอะไรเป็นอุปสรรคและใครเป็นเจ้าของการกระทำถัดไป

กำหนดขอบเขตอย่างเป็นไปได้: การเตือนที่ส่งก่อนพอที่จะมีผล การอนุมัติที่ไปถึงคนที่ถูกต้อง ทัศนวิสัยสำหรับผู้มีส่วนได้ส่วนเสียเพื่อให้พวกเขาวางแผนได้ และบันทึกการตรวจสอบที่แสดงประวัติอย่างชัดเจน การเก็บเอกสารสามารถทำเป็นไฟล์แนบหรือลิงก์ไปยังที่เก็บสำเนาที่ลงนาม แต่ข้อตกลงและกำหนดเวลาที่สำคัญต้องค้นหาได้ง่ายเสมอ

ผู้มีส่วนได้ส่วนเสียและความรับผิดชอบ

ตัวติดตามการต่อสัญญาจะทำงานเมื่อความเป็นเจ้าของชัดเจน หากทุกคนเป็น "ผู้รับผิดชอบ" ก็จะไม่มีใครรับผิดชอบ

ทีมส่วนใหญ่จะมีบทบาทไม่กี่อย่าง:

  • Contract owner: ดูแลการต่ออายุ ยืนยันความต้องการ ต่อรองข้อกำหนด และรักษาความถูกต้องของวันที่
  • Requester: บุคคลหรือทีมที่ใช้บริการ; ยืนยันว่าจะต่อ ย่อขนาด หรือล้มเลิก
  • Finance: ตรวจสอบงบประมาณ เงื่อนไขการชำระเงิน การตั้งค่าผู้ขาย และการเปลี่ยนแปลงค่าใช้จ่าย
  • Legal: ทบทวนข้อกำหนด ตัดข้อ และประเมินความเสี่ยง; ยืนยันเทมเพลตหรือชุดข้อกำหนดที่ใช้
  • Department head: ผู้อนุมัติธุรกิจสุดท้ายเมื่อการใช้จ่ายหรือขอบเขตข้ามเกณฑ์

แยกผู้อนุมัติออกจากผู้ที่เพียงแค่รับทราบ ผู้อนุมัติสามารถเปลี่ยนผลลัพธ์ (อนุมัติ ปฏิเสธ ขอเปลี่ยนแปลง) ส่วนผู้ที่รับทราบจะได้รับการอัปเดตแต่ไม่บล็อกเวิร์กโฟลว์

แสดงความเป็นเจ้าของด้วยสองช่อง: primary owner และ backup owner เจ้าหน้าที่สำรองสำคัญในช่วงลาพักร้อน เปลี่ยนงาน และการต่ออายุฉุกเฉิน กฎง่าย ๆ มักจะใช้ได้ผล: หากเจ้าของหลักไม่ดำเนินการภายในระยะเวลาที่กำหนด ให้แจ้งเจ้าของสำรองและอนุญาตให้เขารับช่วงต่อ

อย่าลืมฝั่งผู้ขาย เก็บข้อมูลติดต่อของผู้ขายตามบทบาทแทนที่จะเป็นอีเมลเดียว เพราะคนต่างกันจัดการประเด็นต่างกัน ทีมส่วนใหญ่ต้องมีอย่างน้อยผู้ติดต่อฝ่ายขาย (ข้อกำหนดเชิงพาณิชย์) ผู้ติดต่อฝ่ายเรียกเก็บเงิน (ใบแจ้งหนี้และการชำระเงิน) และผู้ติดต่อฝ่ายสนับสนุน (ประเด็นบริการและการยกระดับ)

ตัวอย่าง: ทีมการตลาดร้องขอต่ออายุเครื่องมือวิเคราะห์ เจ้าของสัญญายืนยันการใช้งานและระดับที่เสนอ Finance อนุมัติการใช้จ่าย Legal อนุมัติข้อกำหนด และหัวหน้าแผนกจะอนุมัติเฉพาะเมื่อยอดรวมรายปีเกินเกณฑ์ที่กำหนด คนอื่น ๆ รับทราบเพื่อให้การต่ออายุไม่ติดขัด

โมเดลเอนทิตี: ตารางที่คุณต้องมีจริง ๆ

ตัวติดตามการต่อสัญญาทำงานได้ดีที่สุดเมื่อแยกระเบียนสัญญาที่มีอายุยาวออกจากแต่ละรอบการต่ออายุ สิ่งนี้ช่วยรักษาประวัติให้อยู่ครบและทำให้การเตือนเป็นไปตามคาด

ตารางหลัก

เริ่มจากชุดตารางเล็ก ๆ และรักษาฟิลด์ให้ใช้งานได้จริง:

  • Vendors: ชื่อทางกฎหมาย, รายละเอียดการจดทะเบียน, ที่อยู่, ระดับความเสี่ยง, ธงแอคทีฟ
  • Contracts: vendor_id, ชื่อบริการ, วันเริ่ม, วันสิ้นสุด, ข้อกำหนดการต่ออายุ (auto-renew, ระยะเวลาการแจ้ง), มูลค่าสัญญา, สกุลเงิน, เจ้าของ
  • Contacts: ผู้ติดต่อทั้งภายในและผู้ขายพร้อมประเภท (vendor/internal), บทบาท (legal, finance, service owner), ช่องทางที่ต้องการ (email/SMS/Telegram), is_primary
  • Documents: เมตาดาต้าไฟล์และประเภท (original, amendment, renewal quote, note) พร้อมคำอธิบายสั้น ๆ
  • RenewalCases: contract_id, รอบเริ่ม/จบ, วันที่เป้าหมายสำหรับการตัดสินใจ, ระยะ/สถานะปัจจุบัน, เหตุผล (renew, renegotiate, terminate)

ในทางปฏิบัติ Contracts เปลี่ยนช้า RenewalCases จะบันทึกสิ่งที่เกิดขึ้นในครั้งนี้: ใครอนุมัติ ข้อเสนอที่เข้ามา และเมื่อใดที่ตัดสินใจ

ความสัมพันธ์ที่ป้องกันข้อมูลรก

ออกแบบความสัมพันธ์เพื่อให้ตอบคำถามว่า "ใครที่เราควรแจ้ง?" และ "ครั้งที่แล้วเราได้ตัดสินใจอะไร?" ได้โดยไม่คาดเดา:

  • Vendors 1-to-many Contracts, Contracts 1-to-many RenewalCases
  • Contracts many-to-many Contacts (ผ่านตารางเชื่อมเช่น ContractContacts พร้อมบทบาท)
  • RenewalCases 1-to-many Documents (ใบเสนอราคาและบันทึกผูกกับรอบนั้น)

ตัวอย่าง: สัญญา SaaS ที่มีระยะเวลาการแจ้ง 60 วัน ควรมีระเบียน Contract หนึ่งระเบียน แต่มี RenewalCase ใหม่ทุกปี เคสปี 2025 จะเก็บใบเสนอราคา การอนุมัติ และวันที่ตัดสินใจโดยไม่เขียนทับข้อมูลของปี 2024

วันที่ ข้อตกลง และสถานะที่ขับเคลื่อนการต่ออายุ

ตัวติดตามการต่ออายุได้ผลก็ต่อเมื่อวันที่และสถานะชัดเจน ให้ถือว่าวันที่เป็นแหล่งข้อมูลที่เชื่อถือได้ และทำให้สถานะแต่ละสถานะสะท้อนสิ่งที่ทีมต้องทำต่อไป

เริ่มด้วยชุดวันที่จำเป็นเล็ก ๆ:

  • Start date และ current term end date
  • Notice deadline (end date ลบด้วยระยะเวลาการแจ้ง)
  • Cancellation deadline (บางครั้งเหมือนกับ notice deadline บางครั้งไม่)
  • Next auto-renew date (เฉพาะเมื่อเปิดใช้งาน auto-renew)
  • Last renewed on

เก็บค่า auto-renew เป็นบูลีนง่าย ๆ (AutoRenew = true/false) แล้วรองรับด้วยข้อตกลงที่ชัดเจน: ความยาวสัญญาการต่ออายุ (เช่น 12 เดือน), จังหวะการต่ออายุ (รายเดือน รายปี หลายปี), และว่าใช้การคำนวณจากวันสิ้นสุดหรือจากวันที่ใบแจ้งหนี้

เมื่อคำนวณวันต่ออายุถัดไป ให้ใช้กฎเดียวต่อสัญญา (รายเดือนบวก 1 เดือน รายปีบวก 12 เดือน หลายปีบวก N ปี) หากมีการต่ออายุก่อน กำหนดครั้งเดียวว่าให้คำนวณวันสิ้นสุดใหม่อย่างไร: คือวันสิ้นสุดเดิมบวกระยะสัญญา หรือวันที่ต่ออายุบวกระยะสัญญา เก็บการเลือกนั้นไว้เพื่อไม่ให้เปลี่ยนแปลงทีหลัง

สถานะควรตรงกับขั้นตอนการทำงานจริงและบอกเจ้าของการกระทำถัดไปเสมอ ชุดเล็ก ๆ มักพอเพียง: upcoming (ขับเคลื่อนโดยวันที่), in review, waiting approval, approved, renewed, canceled

จัดการกรณีพิเศษอย่างชัดเจน:

  • Unknown end date: ทำเครื่องหมายว่า "date missing" และบล็อกการเตือนจนกว่าจะแก้ไข
  • Evergreen contracts: ไม่มีวันสิ้นสุด แต่เพิ่มวันที่ตรวจสอบเป็นระยะ
  • One-time purchases: ไม่มีการต่ออายุ แต่เก็บไว้เพื่อประวัติการใช้จ่าย

ตัวอย่าง: สัญญาอัตโนมัติ 12 เดือนที่มีระยะการแจ้ง 60 วัน อาจเปลี่ยนเป็น "upcoming" เมื่อถึง end date ลบ 90 วัน แล้วยกระดับหากกำหนดแจ้งผ่านโดยไม่มีการตัดสินใจ

การอนุมัติ: ขั้นตอนและกฎการกำหนดเส้นทาง

เปิดตัว MVP ภายในไม่กี่วัน
สร้างเวอร์ชันมินิมัมก่อน: เอนทิตีหลัก สถานะ และสองการเตือน
ต้นแบบตอนนี้

การอนุมัติคือจุดที่ตัวติดตามการต่ออายุจะช่วยประหยัดเวลาหรือสร้างความยุ่งเหยิง เก็บขั้นตอนให้เรียบง่ายและกฎการกำหนดเส้นทางเข้มงวดพอที่การต่ออายุความเสี่ยงสูงหรือมูลค่าสูงจะไม่เล็ดลอด

ชุดขั้นตอนทั่วไป:

  • Owner review
  • Manager approval
  • Finance approval
  • Legal approval
  • Security or Procurement approval (เฉพาะเมื่อจำเป็น)

การกำหนดเส้นทางควรเป็นกฎ ไม่ใช่ด้วยมือ มูลค่าสัญญา ระดับความเสี่ยงของผู้ขาย และประเภทสัญญาปกคลุมกรณีส่วนใหญ่ ตัวอย่าง: การต่ออายุความเสี่ยงต่ำภายใต้เกณฑ์เล็กน้อยอาจต้องเพียง Manager และ Finance เท่านั้น สัญญามูลค่าสูงหรือความเสี่ยงสูงหรือที่มีการจัดการข้อมูลควรเพิ่ม Legal และ Security

กำหนดทริกเกอร์ชัดเจนสำหรับการเริ่มการอนุมัติ ทริกเกอร์ทั่วไปคือ: สร้าง RenewalCase, ได้รับใบเสนอราคา, หรือมีการเปลี่ยนราคา ถือว่าการเปลี่ยนแปลงราคา/เงื่อนไขหลักเป็นการรีเซ็ตการอนุมัติ หากใบเสนอราคาเปลี่ยนหลังเริ่มการอนุมัติ เปิดขั้นตอนที่จำเป็นใหม่เพื่อให้การลงนามสุดท้ายตรงกับข้อกำหนดปัจจุบัน

การกระทำในการอนุมัติควรชัดเจน: อนุมัติ, ปฏิเสธ, หรือขอเปลี่ยนแปลง การ "ขอเปลี่ยนแปลง" ควรหยุดการไหลและส่งงานกลับให้เจ้าของพร้อมคอมเมนต์ที่จำเป็น การปฏิเสธต้องระบุเหตุผลและขั้นตอนถัดไป (ต่อรองใหม่, ยกเลิก, เปลี่ยนผู้ขาย)

ตัวอย่าง: การต่ออายุ SaaS มูลค่า $30k ระดับความเสี่ยงสูงจะกำหนดเส้นทาง Owner -> Manager -> Finance -> Legal -> Security

กฎการเตือนและการยกระดับ

สร้างตัวติดตามการต่อสัญญาของคุณ
จำลอง Contracts, RenewalCases และเจ้าของในสกีมาเรียบง่ายโดยไม่ต้องเขียนโค้ด
เริ่มสร้าง

ระบบเตือนเป็นความต่างระหว่างตัวติดตามที่คนไว้ใจกับตัวที่คนเมิน หมั่นเตือนในช่วงเวลาที่เหมาะ ส่งข้อความในเวลาที่เหมาะสม และหยุดทันทีเมื่อการงานเสร็จ

แยกเหตุการณ์สำคัญออกจากกัน ส่วนใหญ่การต่ออายุมีสองวันที่สำคัญ: กำหนดแจ้งยกเลิก (notice deadline) และวันต่ออายุ (renewal date) ผูกการเตือนกับ notice deadline ก่อน เพราะการพลาดมักจะมีค่าใช้จ่ายสูงกว่า

ตารางง่าย ๆ ต่อเหตุการณ์:

  • 90 วันก่อน
  • 60 วันก่อน
  • 30 วันก่อน
  • 14 วันก่อน
  • 7 วันก่อน

การยกระดับควรถูกทริกโดยการไม่มีการดำเนินการ ไม่ใช่แค่เวลาล่วงไป กำหนดว่าอะไรนับเป็นการดำเนินการ เช่น การยืนยันจากเจ้าของ การเลือกการตัดสินใจ (renew, cancel, renegotiate) หรือการส่งคำขออนุมัติ

โซ่การยกระดับเชิงปฏิบัติ:

  • หากไม่มีการดำเนินการภายใน 3 วันทำการหลังการเตือน ให้แจ้งเจ้าของสำรอง
  • หากยังไม่มีการดำเนินการภายในอีก 5 วันทำการ ให้แจ้งผู้จัดการของเจ้าของ
  • หากกำหนดแจ้งยกเลิกเหลือไม่ถึง 7 วันและยังไม่มีการตัดสินใจ ให้แจ้งกล่องจดหมายกลุ่ม legal/procurement
  • สำหรับการต่ออายุมูลค่าสูง ให้แจ้ง Finance ที่ 30 วันก่อนด้วย

ส่งข้อความในชั่วโมงทำการตามเขตเวลาของเจ้าของ (เช่น 9:00–17:00 จันทร์–ศุกร์) หากขาดเขตเวลาเจ้าของ ให้ใช้เขตเวลาของหน่วยธุรกิจเป็นค่าเริ่มต้น

เงื่อนไขหยุดต้องเข้มงวด เมื่อเคสทำเครื่องหมายเป็น Approved, Renewed, Canceled, หรือ Replaced การเตือนทั้งหมดสำหรับเคสนั้นต้องหยุดทันที หากเจ้าของเลือก "Renegotiate" ที่ 60 วันก่อน notice deadline ให้หยุดการเตือนเกี่ยวกับ notice และเปลี่ยนเป็นการติดตามการเจรจาและการอนุมัติ

กฎเนื้อหาและแม่แบบการแจ้งเตือน

การแจ้งเตือนได้ผลเมื่อคนที่ถูกต้องได้รับข้อความที่ถูกต้องในเวลาที่ถูกต้อง รักษาเนื้อหาให้สม่ำเสมอทั้งอีเมล ในแอป และแชทเพื่อไม่ให้คนต้องถามว่าข้อความหมายถึงอะไร

กลุ่มเป้าหมายตามขั้นตอน:

  • Contract owner: เสมอ ในทุกเหตุการณ์สำคัญ
  • ผู้อนุมัติปัจจุบัน: เฉพาะเมื่อจำเป็นต้องดำเนินการ
  • ผู้สังเกต (legal, procurement, account team): เมื่อสถานะเปลี่ยนและเมื่อการอนุมัติเสร็จสิ้น
  • Finance: เมื่อจำเป็นคำสั่งซื้อหรือการใช้จ่ายข้ามเกณฑ์
  • ผู้จัดการยกระดับ: เฉพาะหลังวันครบกำหนดที่พลาดหรือการอนุมัติที่ติดขัด

ฟิลด์ที่ต้องมีในข้อความ

การแจ้งเตือนทุกฉบับควรรวมฟิลด์หลักเดียวกันเพื่อให้ค้นหาและจัดการง่าย:

  • ชื่อสัญญาและผู้ขาย
  • วันครบกำหนดการต่ออายุ (และจำนวนวันที่เหลือ)
  • สถานะปัจจุบันและผู้รับผิดชอบขั้นตอน
  • การกระทำถัดไป (อนุมัติ, ทบทวนใบเสนอราคา, ยืนยัน PO, เจรจา)
  • ที่จะดำเนินการ (ชื่อหน้าจอหรือ ID ระเบียน)

เพิ่มเฉพาะบริบทที่ช่วยการตัดสินใจ: ผลการต่อครั้งก่อน ราคาในปัจจุบัน และว่ามีใบเสนอราคาแนบหรือไม่

แม่แบบ

ใช้สองเวอร์ชัน: สรุปที่เป็นมิตรกับมือถือและเวอร์ชันรายละเอียดสำหรับอีเมลหรือในแอป

SHORT (chat/push)
[Renewal due in {days_left} days] {contract_name} - {vendor}
Status: {status}. Next: {next_action}.
Record: {contract_id}
DETAILED (email/in-app)
Subject: Action needed: {contract_name} renewal by {due_date}

Vendor: {vendor}
Due date: {due_date} ({days_left} days)
Current status: {status}
Next action: {next_action}
Owner: {owner_name}
Approver(s): {approver_list}
Price: {current_price} ({currency})
Last renewal: {last_outcome} on {last_renewal_date}
Quote: {quote_available}
Notes: {key_notes}
Record: {contract_id}

กฎความปลอดภัย: ถือว่าการแจ้งเตือนเป็นสัญญาณเตือน ไม่ใช่การส่งข้อมูลทั้งหมด หากช่องทางไม่ปลอดภัย (เช่น แชทร่วม) หลีกเลี่ยงฟิลด์ที่อ่อนไหว (รายละเอียดธนาคาร ข้อความสัญญาฉบับเต็ม ข้อตกลงพิเศษ) กระตุ้นให้ผู้รับเปิดระเบียนในแอปที่มีสิทธิ์และบันทึกการตรวจสอบ

แบบทีละขั้นตอน: นำเวิร์กโฟลว์ไปใช้งาน

สร้างแอปปฏิบัติการเต็มรูปแบบ
เปลี่ยนสเปคนี้เป็นเครื่องมือภายในพร้อม backend, เว็บ และมือถือที่พร้อมใช้งาน
สร้างแอปภายใน

เริ่มจากพื้นฐาน: โมเดลข้อมูลที่เชื่อถือได้และความเป็นเจ้าของที่ชัดเจน

1) สร้างเอนทิตีก่อน

สร้างตารางหลักและเชื่อมโยงให้แน่น: Contracts, Vendors, ผู้มีส่วนได้ส่วนเสียภายใน (ผู้ใช้หรือทีม), และ RenewalCases Contracts ควรอ้างอิง Vendor และ Owner RenewalCases ควรอ้างอิง Contract ถือสถานะการต่ออายุปัจจุบัน และเก็บวันที่สำคัญที่ใช้สำหรับการเตือน

กฎปฏิบัติ: หนึ่ง Contract อาจมีหลาย RenewalCases ตลอดเวลา แต่มีได้เพียงเคสที่ใช้งานอยู่หนึ่งเคสในเวลาเดียวกัน

2) กำหนดสถานะและกฎการตรวจสอบความถูกต้อง

ตัดสินใจว่าสถานะใดมีและต้องกรอกอะไรในแต่ละขั้น ยึดให้เข้มงวด อย่าอนุญาต "Legal review" ถ้าเงื่อนไขร่างและเอกสารที่เกี่ยวข้องยังไม่แนบ อย่าอนุญาต "Approved" หากผู้อนุมัติ วันที่อนุมัติ และวันที่ข้อตกลงสุดท้ายยังไม่ถูกตั้งค่า

3) สร้างเวิร์กโฟลว์สถานะ

นำกระบวนการที่:

  • สร้าง RenewalCase อัตโนมัติเมื่อสัญญาเข้าช่วงต่ออายุ
  • ย้ายเคสผ่านขั้นตอน (Draft, Review, Approved, Sent, Closed)
  • กำหนดเส้นทางตาม vendor, ประเภทสัญญา, มูลค่า, ระดับความเสี่ยง, หรือแผนก
  • บันทึกการเปลี่ยนสถานะทุกครั้งเป็นเหตุการณ์ audit
  • ปิดเคสและอัปเดต Contract เมื่อการต่ออายุเสร็จสิ้น

ตัวอย่าง: หากสัญญาเป็นของ Operations และมูลค่ารายปีเกินเกณฑ์ ให้ร้องขอการทบทวนจาก Legal ก่อนการอนุมัติจาก Finance

4) เพิ่มงานตรวจสอบการเตือนและการยกระดับตามตาราง

รันงานตามกำหนดทุกวันเพื่อค้นหาเคสที่กำหนดแจ้งยกเลิกใกล้เข้ามา การกระทำเกินกำหนด หรือขั้นตอนค้างนาน สร้างเหตุการณ์เตือนและการยกระดับ (เช่น แจ้งเจ้าของสำรองหรือเพิ่มผู้จัดการเป็นผู้สังเกต)

5) เชื่อมช่องทางและบันทึกการส่ง

ส่งการแจ้งเตือนผ่านช่องทางที่คนอ่านจริง (อีเมล, SMS, Telegram) บันทึกการพยายามส่งแต่ละครั้งพร้อมเวลาตราประทับ ช่องทาง ผู้รับ และผลลัพธ์เพื่อพิสูจน์ว่ามีการส่งการเตือนและแก้ปัญหาการขาดตกบกพร่อง

หน้าจอและรายงานที่คนใช้ทุกวัน

คนจะอัปเดตตัวติดตามเมื่อหน้าจอประจำวันที่ตอบคำถามว่า: ฉันต้องทำอะไรต่อได้อย่างรวดเร็ว สร้างมุมมองไม่กี่แบบที่ตรงกับนิสัยจริงแทนแดชบอร์ดยักษ์เดียว

ปฏิทินการต่ออายุ (มุมมองทีม)

มุมมองปฏิทินเหมาะเมื่อโฟกัสที่กำหนดเวลา ไม่ใช่ทุกรายละเอียดของสัญญา แสดงการต่ออายุที่ครบกำหนดในสัปดาห์นี้และเดือนหน้า พร้อมแท็กสถานะชัดเจน แต่ละรายการควรโชว์วันที่ที่สำคัญที่สุด มักเป็น notice deadline สัญญาที่จะต่อในวันที่ 1 พฤษภาคมอาจยัง "ปลอดภัย" จนถึง notice date 1 มีนาคม นั่นคือสิ่งที่ปฏิทินควรเน้น

กล่องจดหมายเจ้าของ (การต่ออายุของฉัน)

นี่คือหน้าจอหลักสำหรับผู้ใช้ส่วนใหญ่ เรียงตาม notice deadline ก่อน แล้วค่อยตามระดับความเสี่ยง ทำให้มุ่งสู่การกระทำ: ส่งคำขออนุมัติ ขอทบทวนจากกฎหมาย ส่งแจ้งต่ออายุ ติดตามผู้ขาย

ชุดฟิลด์สั้น ๆ ก็พอ:

  • ชื่อสัญญา + ผู้ขาย
  • กำหนดแจ้งยกเลิก + วันต่ออายุ
  • สถานะ + การกระทำถัดไป
  • ระดับความเสี่ยง + ต้นทุนต่อเดือนโดยประมาณ

คิวการอนุมัติ (การอนุมัติของฉัน)

ผู้อนุมัติต้องการบริบทโดยไม่ต้องคลิกหลายหน้าจอ แต่ละแถวควรรวมผู้ขาย มูลค่าสัญญา ระยะสัญญา ประเภทการต่ออายุ (อัตโนมัติ vs ด้วยมือ) การเปลี่ยนแปลงที่เสนอ (เพิ่มราคา ขยายขอบเขต) และกำหนดเวลาที่ต้องอนุมัติ เพิ่มเหตุผลที่ชัดเจนว่าทำไมเคสจึงอยู่ในคิว เช่น "ต้องการการอนุมัติจาก Finance เพราะการใช้จ่ายรายปีเกินเกณฑ์"

มุมมองผู้ขาย (ผู้ขายหนึ่งราย ทุกอย่างผูกกัน)

เมื่อผู้ขายโทรมา คนต้องการภาพรวมทั้งหมด: สัญญา วันต่ออายุ ระดับความเสี่ยง การกระทำที่เปิดอยู่ และผู้อนุมัติปัจจุบัน มุมมองนี้ช่วยป้องกันสัญญาซ้ำและทำให้การประเมินความเสี่ยงความเข้มข้นง่ายขึ้น

รายงานประจำวันที่คนอ่านจริง

เก็บรายงานให้เรียบง่ายและตั้งเวลาได้: การใช้จ่ายที่คาดว่าจะเกิดขึ้นตามเดือน, การต่ออายุเสี่ยง (notice deadline ภายใน X วัน), และการกระทำค้างตามเจ้าของ

สิทธิ์และพื้นฐานของบันทึกการตรวจสอบ

ปรับใช้ตามที่ทีมของคุณต้องการ
เปิดใช้งานในคลาวด์ที่ทีมต้องการหรือนำออกเป็นซอร์สโค้ดเพื่อติดตั้งเอง
ปรับใช้แอป

ตัวติดตามการต่ออายุจะได้ผลเมื่อคนเชื่อถือได้ นั่นคือสองเรื่อง: คนที่ถูกต้องเห็นข้อมูลที่ถูกต้อง และการเปลี่ยนแปลงสำคัญทุกอย่างถูกบันทึก

การเข้าถึงตามบทบาท (คนเห็นและทำอะไรได้บ้าง)

เริ่มด้วยชุดบทบาทเล็ก ๆ แล้วขยายเมื่อจำเป็น:

  • Viewer: อ่านรายละเอียดพื้นฐานและวันที่ แต่ไม่เห็นราคาหรือไฟล์แนบ
  • Contract Owner: แก้ไขสัญญาของตน อัปโหลดเอกสาร ขอการอนุมัติ
  • Approver (Legal/Finance/Procurement): อนุมัติหรือปฏิเสธ เพิ่มความเห็น ดูมูลค่าสัญญาและข้อกำหนดสำคัญ
  • Admin: จัดการบทบาท เปลี่ยนกฎการกำหนดเส้นทาง จัดการการเก็บถาวร

เก็บฟิลด์ที่อ่อนไหวแยกจากฟิลด์ทั่วไป รายการที่มักจำกัดเช่น มูลค่าสัญญา rate cards รายละเอียดธนาคาร และ PDF ที่ลงนาม หากเอกสารต้องแชร์กว้าง ให้เก็บเวอร์ชันที่ตัดทอนเป็นไฟล์แยก

บันทึกการตรวจสอบ (ต้องบันทึกอะไร)

ถือว่าการเปลี่ยนสถานะ การอนุมัติ และการอัปเดตเอกสารเป็นเหตุการณ์ที่ตรวจสอบได้ จับอย่างน้อย:

  • Changed by (ผู้ใช้), changed at (timestamp)
  • Field or action (สถานะ, เจ้าของ, วันต่ออายุ, ระยะสัญญา, อัปโหลดเอกสาร)
  • Old value และ new value
  • Comment (บังคับเมื่อปฏิเสธ ยกเลิก หรือเปลี่ยนวันที่)
  • Source (UI, อัตโนมัติ, การนำเข้า) หากมี

สำหรับเอกสาร ให้เก็บเวอร์ชันและทำเครื่องหมายไฟล์หนึ่งเป็น current signed copy อย่าเขียนทับ เก็บชื่อไฟล์ หมายเลขเวอร์ชัน อัปโหลดโดย/เวลา และป้ายกำกับเช่น "Signed v3"

ชอบการเก็บถาวรมากกว่าการลบแบบถาวร เอกสารที่เก็บถาวรควรค้นหาได้สำหรับการรายงานและประวัติการต่ออายุ

ก่อนสัญญาจะไปต่อ ตรวจสอบบังคับบางอย่าง: vendor, owner, backup owner, start/end dates (หรือแฟล็ก evergreen), renewal type (auto หรือ manual), notice period, และ renewal term

ข้อผิดพลาดทั่วไปและวิธีป้องกัน

ออกแบบโมเดลข้อมูลที่เหมาะสม
แยก Contracts ออกจาก RenewalCases เพื่อเก็บประวัติ ข้อเสนอ และผลลัพธ์อย่างเป็นระเบียบ
สร้างฐานข้อมูล

วิธีที่เร็วที่สุดทำลายความเชื่อถือในตัวติดตามการต่ออายุก็คือพลาดกำหนดเวลาที่คิดว่าได้ติดตามไว้

ข้อผิดพลาดทั่วไปคือการใช้ฟิลด์ "renewal date" เดียวแล้วคิดว่าเสร็จ การต่ออายุจริงพึ่งพา notice periods (เช่น "แจ้ง 60 วันหรือจะต่ออายุอัตโนมัติเป็นปี") แก้ปัญหานี้โดยติดตามอย่างน้อย: effective date, term end date, auto-renew flag, notice deadline, และวันที่การดำเนินการถัดไปที่คำนวณซึ่งขับเคลื่อนการเตือน

ปัญหาอีกอย่างคือการเตือนที่ไม่มีที่ให้ลงมือ ถ้าเจ้าของไม่อยู่ ข้อความจะกระเด็นไปมาแล้วไม่มีใครทำ ให้บังคับให้มีเจ้าของและเจ้าของสำรอง และบล็อกสถานะ "Active" หากไม่มีทั้งคู่

การอนุมัติล้มเหลวเมื่อไม่คำนึงเกณฑ์จริง เวิร์กโฟลว์เดียวอาจพอสำหรับการต่ออายุเล็ก ๆ แต่พังเมื่อสัญญามูลค่าสูงหรือความเสี่ยงสูงเข้ามา กฎการกำหนดเส้นทางควรครอบคลุมปัจจัยง่าย ๆ: ช่วงมูลค่า ระดับความเสี่ยงหรือความอ่อนไหวของข้อมูล ประเภทสัญญา ข้อกำหนดที่ไม่มาตรฐาน และแผนกหรือศูนย์ต้นทุน

การแจ้งเตือนถูกละเลยเมื่อไม่บอกคนว่าต้องทำอะไรต่อ ทุกการเตือนควรรวมการกระทำถัดไปหนึ่งอย่าง (ทบทวน, อนุมัติ, เจรจา, ยกเลิก), กำหนดเวลา, และผลที่ตามมา (ต่ออัตโนมัติ, เพิ่มราคา, การหยุดชะงักของบริการ)

ทีมมักลืมบันทึกผลลัพธ์ ดังนั้นทุกรอบต้องจับผลลัพธ์ (renewed, terminated, renegotiated), รายละเอียดเงื่อนไขใหม่, และบันทึกสั้น ๆ ว่า "อะไรเปลี่ยนแปลง"

การตรวจสอบด่วนและขั้นตอนถัดไป

ก่อนเรียกว่าสำเร็จ ให้รันการตรวจสอบบางอย่างที่เลียนแบบสถานการณ์จริง ตัวติดตามการต่ออายุมักล้มเหลวที่ขอบ: ระยะการแจ้ง, เจ้าของขาดหาย, และการอนุมัติที่ดูดีในกระดาษแต่ไม่เคลื่อนไหว

การตรวจสอบด่วน (ใช้ 3 สัญญาตัวอย่าง)

ตั้งสัญญาตัวอย่างสามฉบับที่มีเงื่อนไขต่างกัน:

  • สัญญาอัตโนมัติที่มี notice deadline เพื่อยืนยันว่าคุณติดตาม notice dates ไม่ใช่แค่ end dates
  • สัญญาต่ออายุด้วยมือที่ไม่มีอะไรเกิดขึ้นหากไม่มีใครอนุมัติและเซ็น
  • สัญญาหลายปีที่มีวันที่ทบทวนกลางสัญญาเพื่อตรวจสอบว่าช่วงยาวไม่ทำให้การเตือนขาด

สำหรับแต่ละสัญญา ยืนยันว่าการเตือนทำงานสำหรับ notice deadline ก่อน แล้วจึงวันต่ออายุ/วันสิ้นสุด เป็นลำดับ เลือกสัญญาหนึ่งและไม่ทำอะไรเป็นเจ้าของเพื่อตรวจสอบการยกระดับไปยังเจ้าของสำรองและดำเนินต่อจนกว่ามีคนลงมือ

จากนั้นทดสอบการอนุมัติแบบครบวงจร ให้สัญญาหนึ่งผ่านเส้นทางการอนุมัติและอีกสัญญาหนึ่งผ่านเส้นทางการปฏิเสธ ยืนยันว่าบันทึกการตรวจสอบจับว่าใครตัดสินใจเมื่อใดและทำไม หากบันทึกของคุณไม่ตอบคำว่า "เกิดอะไรขึ้น?" ภายใน 10 วินาที มันจะไม่ช่วยเมื่อต้องเผชิญกำหนดเวลาที่ตึงตัว

ขั้นตอนถัดไป

เริ่มจากเล็ก ๆ แล้วขยายเมื่อพื้นฐานน่าเบื่อ:

  • สร้างเวอร์ชันมินิมัมก่อน: เอนทิตีหลัก สถานะ และสองการเตือน
  • เพิ่มการอนุมัติเมื่อการเตือนเชื่อถือได้แล้วเท่านั้น
  • บังคับความเป็นเจ้าของ: ต้องมีเจ้าของและเจ้าของสำรองในทุกสัญญา
  • ทดลองกับทีมหนึ่งเป็นเวลา 2 สัปดาห์ แล้วปรับเวลาเตือนและบทบาทการยกระดับ

ถ้าคุณต้องการสร้างสิ่งนี้เป็นแอปปฏิบัติการภายในโดยไม่เขียนโค้ด AppMaster (appmaster.io) เป็นหนึ่งในตัวเลือกสำหรับการจำลองข้อมูล สร้างเวิร์กโฟลว์การอนุมัติ และส่งการแจ้งเตือนผ่านช่องทางต่าง ๆ

เมื่อการตรวจสอบเหล่านี้ผ่าน ตัวติดตามการต่ออายุของคุณพร้อมรับสัญญาจริง ไม่ใช่แค่เดโมแบบเส้นทางปกติ

คำถามที่พบบ่อย

ระบบควรเก็บวันที่อะไรบ้างเสมอ?

ติดตาม กำหนดแจ้งยกเลิก (notice deadline) และ วันสิ้นสุดสัญญา/วันต่ออายุ แยกจากกัน ความผิดพลาดที่มีค่าใช้จ่ายส่วนใหญ่เกิดจากทีมพลาดหน้าต่างการแจ้งยกเลิก ดังนั้นการเตือนควรอิงกำหนดแจ้งยกเลิกก่อนเป็นหลัก

เราจะป้องกันการค้างของการต่อสัญญาเมื่อเจ้าของไม่อยู่ได้อย่างไร?

ให้ทุกสัญญามี เจ้าของหลัก และ เจ้าของสำรอง และกำหนดว่า “การดำเนินการ” หมายถึงอะไร (เช่น: คนรับทราบ, เลือกการตัดสินใจ, ยื่นคำขออนุมัติ) หากเจ้าของหลักไม่ดำเนินการภายในเวลาที่กำหนด ให้ยกเลิกไปยังเจ้าของสำรองโดยอัตโนมัติ แล้วจึงยกระดับต่อไปยังผู้จัดการ

เราควรเก็บการต่ออายุไว้ในระเบียน Contract หรือแยกเป็นเคส?

เก็บระเบียนสัญญา Contract ที่มีอายุยาวให้แยกจากแต่ละรอบการต่ออายุ (RenewalCase) เพื่อรักษาประวัติ (ข้อเสนอ การอนุมัติ ผลลัพธ์) โดยไม่เขียนทับการตัดสินใจของปีก่อน

สถานะแบบไหนที่มีประโยชน์จริงสำหรับการต่ออายุ?

เริ่มด้วยชุดสถานะเล็ก ๆ ที่บอกการกระทำถัดไปเสมอ: upcoming, in review, waiting approval, approved, renewed, canceled หากสถานะใดไม่ชัดเจนว่าใครต้องทำอะไรต่อ จะถูกมองข้ามหรือใช้งานผิด

การกำหนดเส้นทางการอนุมัติควรทำอย่างไรโดยไม่กลายเป็นความยุ่งเหยิง?

ทำให้การกำหนดเส้นทางเป็นกฎตามเงื่อนไขโดยใช้ข้อมูลไม่กี่ตัว: ช่วงมูลค่าสัญญา, ระดับความเสี่ยงของผู้ขาย, ประเภทสัญญา, และว่ามีการเปลี่ยนแปลงเงื่อนไขหรือไม่ ปกติให้เส้นทางเรียบง่ายสำหรับการต่ออายุความเสี่ยงต่ำ/มูลค่าต่ำ และเพิ่ม Legal/Security/Procurement อัตโนมัติเมื่อเกินเกณฑ์

จะทำอย่างไรถ้าผู้ขายเปลี่ยนข้อเสนอกลางกระบวนการ?

เมื่อข้อเสนอหรือเงื่อนไขหลักเปลี่ยนหลังจากเริ่มการอนุมัติ ให้รีเซ็ตการอนุมัติ สถานะดีฟอลต์ที่สะอาดคือ: เปิดใหม่เฉพาะขั้นตอนที่ได้รับผลกระทบ (เช่น Finance สำหรับการเปลี่ยนราคา, Legal สำหรับการเปลี่ยนข้อกำหนด) เพื่อให้การเซ็นชื่อล่าสุดตรงกับเงื่อนไขปัจจุบัน

ตารางการเตือนและการยกระดับที่ดีควรเป็นอย่างไร?

ใช้ตารางเวลาที่ผูกกับกำหนดแจ้งยกเลิก (เช่น 90/60/30/14/7 วัน) และยกระดับตาม ไม่มีการดำเนินการ หลังการเตือน หยุดการเตือนทั้งหมดทันทีเมื่อเคสถูกทำเครื่องหมายว่า approved, renewed, canceled, หรือ replaced

การแจ้งเตือนการต่อสัญญาควรมีอะไรบ้างเพื่อให้คนลงมือทำ?

ทำให้ข้อความสั้นและสม่ำเสมอ: ชื่อสัญญา, ผู้ขาย, วันที่ครบกำหนดพร้อมจำนวนวันเหลือ, สถานะปัจจุบัน, การกระทำถัดไป, และผู้รับผิดชอบการถัดไป ให้การแจ้งเตือนเป็นจุดชี้ทาง ไม่ใช่การส่งข้อมูลทั้งหมด เพื่อให้คนรู้ว่าจะทำอะไรต่อโดยไม่เปิดเผยเงื่อนไขที่อ่อนไหวในแชท

เราควรจัดการกับสัญญาที่ไม่มีวันสิ้นสุดหรือสัญญา evergreen อย่างไร?

ทำเครื่องหมายระเบียนเป็น date missing และบล็อกการแจ้งเตือนจนกว่าจะแก้ไข เพราะวันที่ผิดทำให้เกิดความเชื่อใจเท็จ สำหรับสัญญา evergreen ให้ข้ามวันสิ้นสุดและใช้วันที่ทบทวนเป็นช่วง ๆ เพื่อให้ยังคงปรากฏเป็นเรื่องที่ต้องสนใจ

ในบันทึกการตรวจสอบเราควรเก็บอะไรบ้าง?

บันทึกการเปลี่ยนสถานะ, การอนุมัติ, การเปลี่ยนเจ้าของ, การเปลี่ยนวันที่ และการอัปโหลดเอกสารพร้อมผู้ทำ/เวลา/ค่าก่อนหน้า/ค่าใหม่ และต้องมีคอมเมนต์สำหรับการปฏิเสธหรือการเปลี่ยนวันที่ ยิ่งเก็บเป็นที่เก็บถาวรมากกว่าลบ เพื่อให้ตอบได้ว่า "ครั้งที่แล้วเกิดอะไรขึ้น?" โดยไม่ต้องประกอบจากอีเมล

ง่ายต่อการเริ่มต้น
สร้างบางสิ่งที่ น่าทึ่ง

ทดลองกับ AppMaster ด้วยแผนฟรี
เมื่อคุณพร้อม คุณสามารถเลือกการสมัครที่เหมาะสมได้

เริ่ม