เว็บแอปติดตามค่าใช้จ่ายจริงเทียบเป้ารายแผนกบน Google Cloud สำหรับผู้ผลิตชิ้นส่วนยานยนต์ในไทย
ลูกค้า: ผู้ผลิตชิ้นส่วนยานยนต์ (ในเครือญี่ปุ่น)
เคสนี้คือเว็บแอปที่อ่านไฟล์รายงานค่าใช้จ่าย Excel ที่องค์กรมีอยู่ แล้วแสดงยอดจริงเทียบเป้ารายวัน รายเดือน และรายแผนกบนหน้าเว็บ เราพัฒนาและติดตั้งระบบนี้บน Google Cloud ของผู้ผลิตชิ้นส่วนยานยนต์ในไทย และปิดโครงการในเดือนกันยายน 2566
- อุตสาหกรรม
- ยานยนต์
- ปี
- 2566
- ขอบเขตงาน
- ออกแบบและพัฒนาเว็บแอปติดตามค่าใช้จ่ายบน GCP ของลูกค้า ครอบคลุมหน้าติดตามค่าใช้จ่ายรายวันและรายเดือน หน้าสรุปค่าใช้จ่ายรายแผนกแยก 3 กลุ่มแผนก หน้าตั้งเป้าและอัปโหลดไฟล์ และหน้าสรุปผล KPI พร้อมเอกสารสรุประบบตอนปิดโครงการ
สรุปสั้น
- เคสนี้คือเว็บแอปที่อ่านไฟล์รายงานค่าใช้จ่าย Excel ที่ผู้ผลิตชิ้นส่วนยานยนต์ในไทยมีอยู่ แล้วแสดงยอดจริงเทียบเป้าบนหน้าเว็บ
- ผู้ใช้ดูค่าใช้จ่ายได้ทั้งรายวัน ยอดสะสมของเดือน และรายแผนก แยกตาม 3 กลุ่มแผนก คือ Direct, Indirect และ SGA กราฟแท่งเปลี่ยนเป็นสีแดงเมื่อยอดจริงเกินเป้า
- ระบบทำงานใน GCP (Google Cloud Platform) ของลูกค้า ติดตั้งเป็น Docker บน Cloud Run เก็บข้อมูลใน Cloud SQL และเก็บไฟล์ใน Google Cloud Storage
- เอกสารปิดโครงการเดือนกันยายน 2566 สรุปว่าระบบอ่านค่าจากไฟล์ตัวอย่างของผู้ใช้ได้ตรงกับรายงาน Excel
- ระบบจับคู่ยอดจริงกับเป้าตามรหัสแผนก ไฟล์ต้นทางทุกชุดจึงต้องใช้ชื่อคอลัมน์และรหัสแผนกตรงกัน
โจทย์หน้างาน
ยอดค่าใช้จ่ายจริงและเป้างบประมาณของแต่ละแผนกอยู่ในไฟล์รายงาน Excel หลายชุด ลูกค้าต้องการเห็นในหน้าเดียวว่าแผนกไหนใช้จ่ายเกินเป้า ทั้งยอดรายวันและยอดสะสมของเดือน โดยแยกตาม 3 กลุ่มแผนก คือ Direct, Indirect และ SGA
สิ่งที่เราทำ
เราพัฒนาเว็บแอปด้วย Next.js และ Python FastAPI (เครื่องมือสร้างหน้าเว็บและระบบหลังบ้าน) ติดตั้งบน Google Cloud Run (บริการรันโปรแกรมบน Google Cloud) ใน GCP (Google Cloud Platform) ของลูกค้า ผู้ใช้อัปโหลดไฟล์ยอดจริงและไฟล์เป้าหมาย แล้วระบบแสดงยอดรายวัน ยอดสะสม และสรุปรายแผนกพร้อมผลประเมิน O/X กราฟแท่งเปลี่ยนเป็นสีแดงเมื่อยอดจริงเกินเป้า
ผลลัพธ์
เราปิดโครงการพร้อมเอกสารสรุประบบในเดือนกันยายน 2566 เอกสารปิดโครงการสรุปว่าระบบอ่านค่าจากไฟล์ตัวอย่างของผู้ใช้ (ข้อมูลเดือนมิถุนายน 2566) ได้ตรงกับรายงาน Excel หลังปิดโครงการ เรายังตรวจความถูกต้องของข้อมูล แก้ไขตามความเห็นของผู้ใช้ และจัดทำคำขอเปลี่ยนแปลงฉบับล่าสุดในเดือนธันวาคม 2566
ที่มาของโจทย์
โจทย์นี้เกิดจากยอดจริงและเป้างบประมาณที่อยู่ในไฟล์รายงาน Excel คนละชุด ยอดจริงอยู่ในรายงานค่าใช้จ่ายจริงแบบละเอียด ส่วนเป้าอยู่ในไฟล์ควบคุมค่าใช้จ่ายรายบัญชีตามแผนก ก่อนแสดงผล ระบบจึงต้องจับคู่ยอดจากไฟล์ทั้งสองชุดตามแผนกให้ตรงกันก่อน
ระบบนี้เป็นส่วนหนึ่งของโครงการที่ลูกค้าต้องการรวมข้อมูลภายในองค์กรจากหลายแหล่งไว้ในฐานข้อมูลเดียวบน GCP (Google Cloud Platform บริการคลาวด์ของ Google) ระบบติดตามค่าใช้จ่ายจึงต้องทำงานใน GCP ของลูกค้าเอง ในชุดงานเดียวกัน เราพัฒนาโมดูลอื่นบนฐานข้อมูลกลางบน Google Cloud ที่รวม KPI ของเสีย ยอดขาย และกำไร ด้วย
ข้อกำหนดและข้อจำกัด
ระบบต้องใช้ไฟล์รายงาน Excel ที่ลูกค้ามีอยู่เป็นข้อมูลเข้า และต้องทำงานใน GCP ของลูกค้า ข้อกำหนดและข้อจำกัดหลักมีดังนี้
- อ่านไฟล์ยอดจริงและไฟล์เป้าหมายที่ผู้ใช้อัปโหลด แล้วจับคู่ยอดจริงกับเป้าตามรหัสแผนก (Department Code)
- แสดงยอดรายวันและยอดสะสมของเดือนเทียบเป้า และสรุปผลรายแผนก
- จัดแผนกเข้า 3 กลุ่ม คือ Direct, Indirect และ SGA ตามไฟล์จัดกลุ่มแผนกที่ลูกค้ากำหนด
- ติดตั้งใน GCP ของลูกค้า และอยู่ภายใต้นโยบายความปลอดภัยสารสนเทศ (IS) ขององค์กร
- ชื่อคอลัมน์ ชื่อแผนก และรหัสแผนกในไฟล์ต้นทางต้องตรงกัน ระหว่างโครงการ ลูกค้าต้องปรับคอลัมน์และเพิ่มรหัสแผนกในไฟล์บางชุดก่อน
Direct, Indirect และ SGA ในระบบนี้คืออะไร
ในระบบนี้ Direct, Indirect และ SGA (Selling, General and Administrative หรืองานขายและบริหาร) เป็นกลุ่มของแผนก ระบบจัดแต่ละแผนกเข้ากลุ่มตามไฟล์ที่ลูกค้ากำหนด แล้วรวมยอดค่าใช้จ่ายตามกลุ่ม ชื่อแผนกในไฟล์จัดกลุ่มจึงต้องตรงกับไฟล์ข้อมูลเข้า
ระบบนี้อ่านไฟล์ Excel เดิมแล้วเทียบยอดจริงกับเป้าอย่างไร
ระบบนี้อ่านไฟล์รายงาน Excel ที่ผู้ใช้อัปโหลด รวมยอดตามแผนก แล้วเทียบกับเป้าและแสดงเป็นกราฟกับตารางบนเว็บเบราว์เซอร์ ระบบจึงใช้ไฟล์ชุดเดิมเป็นข้อมูลเข้าได้ แต่ไฟล์ต้องคงรูปแบบเดิมทุกรอบ เพราะระบบอ่านตามชื่อคอลัมน์และรหัสแผนก
ตามข้อกำหนด ระบบใช้ไฟล์ Excel ชุดเดิมเป็นข้อมูลเข้า และทำงานใน GCP ของลูกค้า โดยติดตั้งเป็น Docker (ชุดติดตั้งโปรแกรมแบบแยกส่วนที่ย้ายเครื่องได้) บน Cloud Run เก็บข้อมูลใน Cloud SQL (ฐานข้อมูลบน Google Cloud) และเก็บไฟล์ใน Google Cloud Storage (GCS ที่เก็บไฟล์บน Google Cloud)
- 1
อัปโหลดไฟล์ยอดจริงและไฟล์เป้าหมาย
ที่หน้าตั้งเป้า KPI (ตัวชี้วัดผลงาน) ชื่อ KPI Target Setting ผู้ใช้อัปโหลดไฟล์รายงานค่าใช้จ่ายจริง และไฟล์ควบคุมค่าใช้จ่ายรายบัญชีตามแผนกที่ใช้เป็นเป้า ระบบเก็บไฟล์ใน GCS และเก็บข้อมูลที่อ่านได้ใน Cloud SQL
- 2
ดูยอดรายวันเทียบเป้า
หน้า Expense Budget Control As of Today แสดงค่าใช้จ่ายรายวันและยอดสะสมของเดือนเทียบเป้า แยกกลุ่มแผนก Direct กับ Indirect แท่งกราฟเป็นสีแดงเมื่อยอดจริงเกินเป้า และกรองดูตามบัญชี แผนก หรือรายการค่าใช้จ่ายได้
- 3
สรุปรายแผนกพร้อมผลประเมิน
หน้า Expense Summary แสดงเป้า ยอดจริง ส่วนต่าง และอัตราส่วนของแต่ละแผนก แยก Direct, Indirect และ SGA ระบบให้ผล O เมื่อยอดจริงไม่เกินเป้า และ X เมื่อเกินเป้า ผู้ใช้กดปุ่มแก้ไข (Edit) เพื่อบันทึกการวิเคราะห์ของแต่ละแผนกไว้ในตารางได้
- 4
ดูผล KPI รวมในหน้าเดียว
หน้าสรุปผล KPI ปัจจุบันและรายเดือนดึงเป้ากับยอดจริงจากหน้าค่าใช้จ่ายมาแสดงสถานะเป็นสี ผู้ใช้กดที่ผลประเมินเพื่อเปิดหน้ารายละเอียดต่อได้
สิ่งที่ส่งมอบ
เราส่งมอบเว็บแอปที่ติดตั้งใน GCP ของลูกค้า พร้อมเอกสารสรุประบบตอนปิดโครงการ การทำงานของแต่ละหน้าอยู่ในขั้นตอนของหัวข้อก่อนหน้า
- เว็บแอปใน GCP ของลูกค้า มีหน้า KPI Target Setting, Expense Budget Control As of Today, Expense Summary และหน้าสรุปผล KPI ปัจจุบันและรายเดือน
- เอกสารสรุประบบตอนปิดโครงการ
ขั้นตอนและคำขอเปลี่ยนแปลง
งานนี้มีคำขอเปลี่ยนแปลง (Change Requirement) ตั้งแต่ระหว่างพัฒนาจนหลังปิดโครงการ เราบันทึกคำขอแต่ละเรื่องเป็นเอกสารคำขอเปลี่ยนแปลง ลำดับงานที่มีเอกสารมีดังนี้
- เดือนกันยายน 2566 ระหว่างพัฒนา: ผู้ใช้ขอเพิ่มหน้ารายงานค่าใช้จ่ายรายเดือนของทุกแผนก เราบันทึกเป็นคำขอเปลี่ยนแปลง
- เดือนกันยายน 2566: ปิดโครงการพร้อมเอกสารสรุประบบ
- หลังปิดโครงการ: ตรวจความถูกต้องของข้อมูล และแก้ไขตามความเห็นของผู้ใช้ (feedback)
- เดือนธันวาคม 2566: จัดทำคำขอเปลี่ยนแปลงฉบับล่าสุดสำหรับหน้า Expense Summary เช่น หมวดเหตุผลประกอบความเห็น (เกินงบ ใช้จ่ายไม่ตรงช่วงเวลา ประหยัดได้ หรือตามงบ)
ตัวเลขบนหน้าเว็บตรงกับรายงาน Excel เดิมหรือไม่
เอกสารปิดโครงการเดือนกันยายน 2566 สรุปว่าเว็บแอปติดตามค่าใช้จ่ายอ่านค่าจากไฟล์ตัวอย่างของผู้ใช้ (ข้อมูลเดือนมิถุนายน 2566) ได้ตรงกับรายงาน Excel การทดสอบใช้ไฟล์ตัวอย่างจากผู้ใช้ แล้วเทียบผลบนหน้าเว็บกับรายงาน Excel ชุดเดิม
ระหว่างทดสอบ ผลคำนวณบางจุดไม่ตรงกับเฉลยของผู้ใช้ ทั้งสองฝ่ายจึงตกลงวิธีตรวจรับกันใหม่ หลังปิดโครงการ เรายังตรวจความถูกต้องของข้อมูลกับผู้ใช้ต่อ เคสนี้ไม่มีตัวเลขวัดผลทางธุรกิจ เราจึงรายงานเฉพาะผลที่มีเอกสารยืนยัน
สิ่งที่เราเรียนรู้
งานนี้ให้หลักการ 3 ข้อสำหรับระบบที่อ่านไฟล์รายงานเดิมมาแสดงผลบนเว็บ
- ไฟล์ทุกชุดต้องมีคีย์ร่วมกันก่อนจับคู่ข้อมูล ในงานนี้ชื่อแผนกในไฟล์จัดกลุ่มไม่ตรงกับไฟล์ข้อมูลเข้า ระบบจึงใช้รหัสแผนกเป็นตัวจับคู่ และลูกค้าปรับไฟล์ต้นทางให้ตรงกันก่อน
- ตกลงเฉลยและวิธีตรวจรับก่อนเริ่มทดสอบ ถ้าเฉลยและวิธีเทียบผลยังไม่ชัด ผลคำนวณที่ไม่ตรงกันจะทำให้ต้องตกลงวิธีตรวจรับใหม่ระหว่างโครงการ เหมือนที่เกิดในงานนี้
- คำขอมุมมองใหม่อาจเกิดระหว่างพัฒนา ควรบันทึกเป็นเอกสารคำขอเปลี่ยนแปลงแยกจากขอบเขตเดิม ในงานนี้คำขอหน้ารายงานค่าใช้จ่ายของทุกแผนกเกิดระหว่างพัฒนา และเราบันทึกเป็นคำขอเปลี่ยนแปลง
นำแนวทางนี้ไปใช้กับงานของคุณได้อย่างไร
ถ้าองค์กรของคุณมีรายงานค่าใช้จ่ายและเป้างบประมาณเป็นไฟล์ Excel อยู่แล้ว คุณใช้แนวทางเดียวกับเคสนี้ได้ คืออัปโหลดไฟล์เดิม จับคู่ยอดจริงกับเป้าตามรหัสแผนก แล้วแสดงผลรายวัน รายเดือน และรายแผนก ส่วนที่ต้องปรับคือรูปแบบไฟล์ การจัดกลุ่มแผนก สูตรคำนวณ และที่ติดตั้งระบบ
ส่วนที่ใช้ซ้ำได้ และส่วนที่ต้องปรับ
| ส่วนของระบบ | ใช้ซ้ำได้ | ต้องปรับเมื่อ |
|---|---|---|
| ข้อมูลเข้า | การอัปโหลดไฟล์รายงาน Excel ทั้งยอดจริงและเป้า | ไฟล์ของคุณมีคอลัมน์หรือรหัสแผนกต่างจากเคสนี้ ต้องตกลงรูปแบบไฟล์ใหม่ |
| การจัดกลุ่ม | การรวมยอดตามกลุ่มแผนกจากไฟล์จัดกลุ่มที่องค์กรกำหนด | องค์กรของคุณแบ่งกลุ่มต่างจาก Direct, Indirect และ SGA ต้องกำหนดไฟล์จัดกลุ่มใหม่ |
| การแสดงผล | หน้ายอดรายวัน ยอดสะสม สรุปรายแผนก และผลประเมิน O/X | สูตรยอดสะสมหรือเป้าสะสมของคุณต่างจากเคสนี้ ต้องตกลงสูตรก่อนพัฒนา |
| การติดตั้ง | Docker บน Cloud Run พร้อม Cloud SQL และ GCS ใน GCP ขององค์กร | องค์กรของคุณไม่ใช้ GCP หรือต้องการเก็บข้อมูลบนเซิร์ฟเวอร์ในโรงงาน ต้องออกแบบการติดตั้งใหม่ |
- เตรียมไฟล์ตัวอย่างที่ใช้จริง พร้อมผลคำนวณที่ถูกต้อง (เฉลย) และตกลงเกณฑ์ตรวจรับให้ชัด
- ตกลงสูตรยอดสะสม เป้าสะสม และการจัดแผนกเข้ากลุ่ม ก่อนเริ่มพัฒนา
- เตรียมสิทธิ์และนโยบายความปลอดภัยของคลาวด์ฝั่งองค์กร ถ้าระบบต้องติดตั้งในคลาวด์ขององค์กรเอง
- วางขั้นตอนรับคำขอเปลี่ยนแปลงไว้ตั้งแต่ต้น เพราะคำขอหน้ารายงานเพิ่มอาจเกิดระหว่างพัฒนา เหมือนในเคสนี้
อ่านต่อ
เทคโนโลยีที่ใช้
คำถามที่พบบ่อย
ต้องเปลี่ยนวิธีทำรายงานค่าใช้จ่ายเดิมหรือไม่
ใช้ไฟล์รายงาน Excel ที่มีอยู่เป็นข้อมูลเข้าได้ แต่อาจต้องปรับไฟล์บางส่วนก่อน ในเคสนี้ผู้ใช้อัปโหลดไฟล์รายงานเข้าเว็บแอป แล้วระบบคำนวณยอดสะสมและเทียบกับเป้าให้ ระหว่างโครงการต้องปรับคอลัมน์ ชื่อแผนก และเพิ่มรหัสแผนก (Department Code) ในไฟล์ให้ตรงกัน หลังจากนั้นรูปแบบไฟล์ต้องคงที่ เพราะระบบอ่านตามชื่อคอลัมน์และรหัสแผนก
ระบบติดตั้งที่ไหน ใช้เทคโนโลยีอะไร
ในเคสนี้ระบบติดตั้งใน GCP (Google Cloud Platform) ของลูกค้า หน้าจอสร้างด้วย Next.js ระบบหลังบ้านใช้ Python FastAPI ทำงานเป็น Docker (ชุดติดตั้งโปรแกรมแบบแยกส่วนที่ย้ายเครื่องได้) บน Cloud Run (บริการรันโปรแกรมบน Google Cloud) เก็บข้อมูลใน Cloud SQL (ฐานข้อมูลบน Google Cloud) และเก็บไฟล์ใน Google Cloud Storage (GCS)
ตรวจได้อย่างไรว่าตัวเลขบนหน้าเว็บถูกต้อง
เทียบผลบนหน้าเว็บกับรายงาน Excel เดิมด้วยไฟล์ตัวอย่างจากผู้ใช้ ในเคสนี้เราจัดทำรายการตรวจรับ (Exit Criteria) ตามข้อกำหนดแต่ละข้อ ระหว่างทดสอบ ผลบางจุดไม่ตรงกับเฉลยของผู้ใช้ ทั้งสองฝ่ายจึงตกลงวิธีตรวจรับใหม่ เอกสารปิดโครงการเดือนกันยายน 2566 สรุปว่าระบบอ่านค่าได้ตรงกับรายงาน หลังจากนั้นเรายังตรวจความถูกต้องของข้อมูลและแก้ไขตามความเห็นของผู้ใช้ต่อ
เพิ่มหน้ารายงานหรือมุมมองใหม่ภายหลังได้หรือไม่
ได้ โดยบันทึกเป็นคำขอเปลี่ยนแปลง (Change Requirement) และตกลงขอบเขตก่อน ในเคสนี้ระหว่างพัฒนา ผู้ใช้ขอเพิ่มหน้ารายงานค่าใช้จ่ายรายเดือนของทุกแผนก และหลังปิดโครงการ เราจัดทำคำขอเปลี่ยนแปลงฉบับเดือนธันวาคม 2566 สำหรับหน้า Expense Summary เช่น หมวดเหตุผลประกอบความเห็น
ราคาและระยะเวลาพัฒนาเท่าไร
ไม่มีราคาตายตัว ขึ้นกับจำนวนหน้า สูตรคำนวณ และความพร้อมของไฟล์ข้อมูลต้นทาง ติดต่อเราเพื่อขอใบเสนอราคา เราประเมินจากไฟล์ตัวอย่างและความต้องการของคุณ


