ข้ามไปยังเนื้อหา
โปรเจกต์ทั้งหมด

เผยแพร่แล้วแนะนำ

ระบบหลังบ้านจัดการการเงินของสมาชิก

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

  • NestJS
  • TypeScript
  • PostgreSQL
  • TypeORM
  • BullMQ
  • Redis
  • Next.js
  • React
  • AWS Lambda
  • AWS S3
  • Docker

ภาพรวม

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

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

ส่วนที่ท้าทายในการสร้าง

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

เอกสารที่แสดงภาษาไทยได้ถูกต้อง ใบแจ้งยอด จดหมายเตือน และใบแจ้งหนี้ ล้วนมาจากเทมเพลต Word ที่ฝ่ายธุรกิจแก้เองได้ การสร้างเอกสารทำสองขั้น คือแทนค่าตัวแปรก่อนแล้วให้ตัวแปลงทำเป็น PDF ส่วนที่ยากจริงคือเรื่องตัวอักษร Word เก็บขนาดฟอนต์ไว้สองชุดในทุกช่วงข้อความ ชุดหนึ่งสำหรับอักษรละติน อีกชุดสำหรับอักษรที่ซับซ้อน และใช้ชุดหลังกับอักษรไทย เทมเพลตที่ดูถูกต้องใน Word จึงออกมาเป็นไทยขนาดผิดหลังแปลงโดยไม่มีคำเตือนใด ๆ ทางแก้คือเข้าไปแก้ที่ XML ของเอกสารเพื่อปรับขนาดทั้งสองชุดให้ตรงกันและบังคับใช้ฟอนต์ที่มีอยู่จริงในตัวแปลง สิ่งที่ฝ่ายการเงินเห็นตอนพรีวิวจึงตรงกับที่สมาชิกได้รับ

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

โครงสร้างระบบ

สิบเอ็ด deployable รอบฐานข้อมูลเดียว ประกอบด้วย API ที่แบกตรรกะธุรกิจ worker ที่รันการปิดยอด gateway บาง ๆ ที่ตรวจข้อมูลขาเข้าแล้วส่งเข้าคิว ตัวสร้างเอกสาร เส้นทางแจ้งเตือน และแอปพนักงานแบบ static ฝั่งหลังบ้านไม่เรียกหากันผ่าน HTTP เลย แต่ส่งงานผ่านคิว ซึ่งเป็นเหตุผลที่การปิดยอดรันนานเป็นชั่วโมงได้โดยไม่ค้างอะไรไว้

ขนาด

  • 11 service · 126 entity · 188 migration · 536 endpoint
  • 46 คิวและ 46 processor · 8 งานตามเวลา · การปิดยอด 26 ขั้น
  • 64 หน้าจอ · สร้างเอกสารได้สิบกว่าภาษา · เชื่อมต่อระบบภายนอก 8 ระบบ
สถานะ
เผยแพร่แล้ว
เผยแพร่เมื่อ
12 ก.ย. 2026
เทคโนโลยี
NestJS · TypeScript · PostgreSQL · TypeORM · BullMQ · Redis · Next.js · React · AWS Lambda · AWS S3 · Docker

ดูต่อ

โปรเจกต์อื่น ๆ

โปรเจกต์ทั้งหมด