บันทึกจากหน้างาน

บริหารกองตู้ ATM คริปโต: เงินสด คาสเซ็ต และการปฏิบัติตามกฎระเบียบ

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

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

สองเครื่องในตู้เดียว

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

การแลกเปลี่ยนที่หน้าจอ

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

คาสเซ็ต: ครึ่งที่เป็นของจริง ซึ่งไม่มีใครเดโม

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

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

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

ล็อกระยะไกล และการสั่งการจากคอนโซล

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

กลุ่มตู้ ATM คริปโตไม่ใช่ผลิตภัณฑ์ซอฟต์แวร์ที่มีฮาร์ดแวร์พ่วงมา แต่เป็นงานโลจิสติกส์เงินสดที่มีหน้าจออยู่ด้านหน้า และตัวเลขทุกตัวบนหน้าจอนั้นต้องกระทบยอดกับธนบัตรที่จับถือได้จริง
— Protocore · วิศวกรรมการชำระเงิน

การกระทบยอดตู้ที่มองไม่เห็น

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

การปฏิบัติตามกฎระเบียบเป็นหน้าที่ของผู้ปฏิบัติการ ซอฟต์แวร์มีหน้าที่บังคับใช้และบันทึก

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

เส้นแบ่งที่พูดกันตรง ๆ

ตู้เดียวในที่เดียวแทบไม่ต้องมีคอนโซลสำหรับกลุ่มตู้ แค่สเปรดชีตกับการนับรายสัปดาห์ก็พอ ระบบนี้คุ้มค่าเมื่อมีกลุ่มตู้ขนาดใหญ่ ที่ตัวเลขเกินกว่าจะจำไว้ในหัวคนเดียว ทั้งระดับเงินสดในตู้จำนวนมาก ยอดคาสเซ็ตที่ต้องกระทบยอดรายสถานที่ ล็อกระยะไกลสำหรับตู้ที่อยู่ไกลหลายชั่วโมง และบัญชีรายตู้ที่ผ่านการตรวจสอบได้ ถ้าดูแลตู้เดียว นี่คือภาระส่วนเกิน แต่ถ้าดูแลยี่สิบตู้ ตารางงาน การกระทบยอด และการควบคุมระยะไกลคือความต่างระหว่างธุรกิจกับตู้กองหนึ่งที่ค่อยๆ เสียสมดุล คอนโซลกลุ่มตู้อยู่ที่ /products/atm และคำศัพท์ ได้แก่ cassette, recycler, reconciliation, settlement อยู่ใน /glossary

มีระบบที่ต้องสร้างไหม

บอกเราว่าปัญหาคืออะไร แล้วเราจะกลับมาพร้อมสถาปัตยกรรมและแผนงาน