รายงาน — KPI รายแผนก
ฉบับออกแบบให้รีวิว · พร้อมใช้ = คำนวณได้จากข้อมูลที่ระบบเก็บอยู่แล้ววันนี้ ·รอข้อมูล = ต้องเพิ่มการเก็บข้อมูลก่อน (ดูท้ายหน้า) · กดที่ KPI เพื่อดูเหตุผล+สูตร
KPI ของแท็บ ภาพรวมเครือ (เจ้าของ) (5/6 พร้อมใช้)
หน้าตารายงานที่จะสร้าง
การ์ด 5 ใบบนสุด: เงินสดรับจริง MTD (+% MoM), รายได้รับรู้ MTD, ภาระคอร์สค้าง + ลูกศร MoM, Gross Margin %, จำนวนสาขาสถานะแดง แต่ละใบมีสีเขียว/เหลือง/แดงตามเกณฑ์ + sparkline 6 เดือน กดแล้ว drill-down ทุกใบคำนวณได้จาก Invoice/LedgerEvent/CourseBalance/BOM+CommissionEntry ที่มีแล้ว
กราฟ 3 เส้น 12 เดือน: Cash Collected, Recognized Revenue, Deferred Liability สะสม (แกนขวา) — ภาพเดียวเล่าเรื่องโมเดลคอร์สทั้งหมด ถ้าเส้นเงินสดวิ่งหนีเส้นรับรู้และ liability พุ่ง = ขายอนาคตเกินกำลังให้บริการ ใต้กราฟแยกส่วนประกอบรายได้รับรู้ (ขายขาด vs ตัดคอร์ส)
จัดอันดับ 13+ สาขา แยกแท็บ 'สาขาบริษัท' กับ 'แฟรนไชส์' (นิติบุคคลแยก ตัวเลขห้ามปน) คอลัมน์: เงินสดรับ, รายได้รับรู้, ภาระคอร์สค้าง, Redemption Rate, Gross Margin %, No-show %, ลูกค้าใหม่, คะแนนเฉลี่ย + สถานะรวม เรียงจากสาขาแย่สุดขึ้นก่อน heat สีเทียบค่าเฉลี่ยเครือ กดชื่อสาขา drill-down
Alert อัตโนมัติจากกฎ เรียงตามความรุนแรง: liability โตเร็วกว่า redeem >2 เท่า 2 เดือนติด, เงินสดสาขาตก >20% MoM, No-show >18%, คอร์สค้างอายุ >12 เดือนมูลค่าสูง, DiscountCode ใช้พุ่งผิดปกติ, คะแนนสาขาตก <4.0 แต่ละรายการบอกสาขา-ตัวเลข-เกณฑ์ + ปุ่มส่งต่อผู้จัดการสาขา ทุกกฎคำนวณจากข้อมูลปัจจุบัน
ต้องเก็บข้อมูลเพิ่ม เพื่อปลดล็อก KPI ที่เหลือ
- ตาราง Expense/Payroll (เงินเดือน fix, ค่าเช่า, ค่าน้ำไฟ, สวัสดิการ) → ปลดล็อก Net Operating Profit (แท็บภาพรวม) และ Labor Cost Ratio (แท็บบุคคล)
- ตาราง SalesTarget (branchId, employeeId, month, targetAmount) → ปลดล็อก % บรรลุเป้าขาย (แท็บขาย)
- ตาราง MarketingSpend (เดือน, ช่องทาง, จำนวนเงิน — เริ่มจากฟอร์มกรอกรายเดือน ไม่ต้องรอ integrate FB/TikTok API) → ปลดล็อก CAC by Channel (แท็บการตลาด)
- ฟอร์มปิดกะ CashCount (เงินสดนับจริง + ยอดสลิปโอน) และ/หรือ import Bank Statement → ปลดล็อก Reconciliation Variance (แท็บการเงิน)
- สถานะ VOID + เหตุผล + ผู้อนุมัติ + audit log การแก้ไขบิลใน Invoice → ปลดล็อก VOID & Amendment Rate (แท็บการเงิน)
- ฟิลด์ vatType ต่อสินค้า/บริการ (VATable/ยกเว้น) + ตาราง mapping สาขา → นิติบุคคล → ปลดล็อก VAT Output ต่อนิติบุคคล ภ.พ.30 (แท็บการเงิน)
- ตาราง Room/Resource + roomId + startedAt/endedAt บน TreatmentSegment → ปลดล็อก Room/Bed Utilization (แท็บปฏิบัติการ)
- ฟิลด์ checkInAt บน Visit + startedAt บน TreatmentSegment (ปุ่มเช็คอินหน้า reception) → ปลดล็อก Average Wait Time (แท็บปฏิบัติการ)
- lot number + expiryDate ในขารับของ (StockMovement type RECEIVE) → ปลดล็อก Expiring Stock Value (แท็บคลัง)
- สแกน QR ตอนหยิบของจริงต่อเคส → ปลดล็อก BOM Variance ใช้จริง vs สูตร ต่อพนักงาน/ต่อบริการ (แท็บคลัง)
- ยืนยัน/เพิ่มฟิลด์ sellerId บน Invoice แยกจากผู้ทำหัตถการ (TreatmentSegment) → เปิด Leaderboard รายคนแม่นยำ (แท็บขาย) — ต้องเช็คก่อนเปิดใช้มุมรายคน
- สถานะติดตามงานบน Upsell Worklist และ Win-back list (มอบหมาย/โทรแล้ว/ปิดได้/ปฏิเสธ) — เฟสแรกเป็น read-only ก่อน
- บังคับใส่เหตุผล (reason) ใน StockMovement type ADJUSTMENT → ทำให้ Shrinkage วิเคราะห์แยกของหาย/ของเสีย/บันทึกผิดได้
- ล็อกกติกา revenue attribution ต่อพนักงาน (แบ่งตามสัดส่วน TreatmentSegment ใน Visit เดียวกัน) เป็น config กลางครั้งเดียวใช้ทั้งระบบ ก่อนเปิด Provider Scorecard และ Commission-to-Revenue
- Onboarding checklist module (สถานะเทรนนิ่ง) → เสริมหน้า Ramp-up พนักงานใหม่ (แท็บบุคคล)
- เพิ่มคอลัมน์ 'ยอดจริง' และ 'ส่วนต่าง' ในหน้ากระทบยอดรายวัน + สถานะสาขาที่ยังไม่ปิดยอด (ต่อยอดจากข้อ CashCount/BankStatement)
- โมดูลจัดซื้อ/Supplier + ใบสั่งซื้อ (PO) ในระบบ → ต่อยอดจาก Action List export รายการสั่งซื้อของแท็บคลัง