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