ยอดเงินสามตัวของบัญชี — และทำไม "ยอดใช้งาน" ไม่ขยับตอนเพิ่มรายการ
แนวคิดสำคัญที่สุดของทะเบียนบัญชี ที่ต่างจาก YNAB เล็กน้อยแต่ตั้งใจ: ยอดใช้งานคือความจริงที่ถูก "ปักหมุด" ไว้
- ยอดใช้งาน · Working — ตัวเลขที่เก็บไว้กับบัญชีโดยตรง เป็น "ความจริงที่เรายืนยันครั้งล่าสุด" ขยับผ่านการ Reconcile (หรือแก้บัญชีเอง) เท่านั้น — การเพิ่มธุรกรรมไม่ขยับตัวเลขนี้
- ยังไม่เคลียร์ · Uncleared — ผลรวมสุทธิ (รับ−จ่าย) ของธุรกรรมที่ยังไม่ติ๊ก © = เงินที่ "บันทึกแล้วแต่ธนาคารยังไม่ตัด/เรายังไม่ยืนยัน"
- เคลียร์แล้ว · Cleared — ไม่ได้เก็บแยก แต่คำนวณจากสมการข้างบน = "ยอดที่ใบแจ้งยอดธนาคารควรแสดง"
ผลที่ตามมา (ที่มักงงกัน)
- เพิ่มรายจ่าย 500 → ยอดใช้งานคงเดิม, ยังไม่เคลียร์ −500, เคลียร์แล้ว +500 (สมการยังจริงเสมอ)
- ติ๊ก © หนึ่งรายการ → เงินย้ายฝั่งระหว่าง เคลียร์แล้ว ↔ ยังไม่เคลียร์ โดยยอดใช้งานนิ่ง
- ถ้าประวัติเก่าทั้งบัญชียังไม่เคลียร์เลย เคลียร์แล้วอาจติดลบหนักๆ ได้ (เช่น −496,000) — ไม่ใช่บั๊ก แปลว่า "ยังไม่เคยกระทบยอดกับธนาคาร" ทำครั้งเดียวหาย
สมการงบประมาณ — RTA, Rollover และ "คงเหลือใช้ได้"
หน้างบมีเลข "เงินก้อน" สองตัวที่คนละความหมาย — เข้าใจสองสมการนี้แล้วจะไม่งงอีกเลย
ก้อนที่ 1: พร้อมจัดสรร (Ready to Assign — เงินที่ "ยังไม่มีหน้าที่")
คือกองกลางแบบ YNAB — เป้าหมายคือทำให้เป็น 0 (zero-based: เงินทุกบาทมีหน้าที่) RTA เป็นตัวเลข "ปัจจุบันของทั้งงบ" ไม่ใช่ของเดือนใดเดือนหนึ่ง จึงเห็นเลขเดียวกันไม่ว่าจะเปิดเดือนไหนอยู่
ก้อนที่ 2: คงเหลือใช้ได้ (Available — เงินที่ "ลงหมวดแล้ว เหลือให้ใช้")
- Rollover: ยอดคงเหลือของแต่ละหมวดทบไปเดือนถัดไปอัตโนมัติ (เหลือ 5,000 ในค่ากิน → เดือนหน้าเริ่มที่ 5,000)
- เทอมบัตรเครดิต: ใช้จ่ายผ่านบัตร = ระบบ "กันเงิน" ไว้จ่ายบัตร; ตอนจ่ายบัตรจริงถึงตัดออก — สองเทอมนี้ทำให้ breakdown บวกลบแล้วเท่ากับตัวหนาเป๊ะเสมอ ไม่มีตัวเลขปรับสมดุลลอยๆ
- กันใช้เกิน (clip): หมวดที่ติดลบจะไม่ลากทั้งก้อนติดลบตาม — ถูกกันไว้เป็นบรรทัดของมันเอง
เครื่องมือความปลอดภัยของงบ
- Undo / Redo — ทุกการแก้งบเข้าคิว undo log ย้อน/เดินหน้าได้ไม่จำกัดภายในเดือน
- การย้ายล่าสุด · Recent Moves — ประวัติการโยกเงินระหว่างหมวด
- ส่งออก CSV / JSON — ตารางงบทั้งเดือนพร้อม assigned/activity/available รายหมวด
Auto-Assign ทั้ง 7 กลยุทธ์ — ระบบจัดงบให้ตามสไตล์ไหนได้บ้าง
แผงขวาของหน้างบไม่ได้มีแค่ "ค่าเฉลี่ย 3 เดือน" — มีทั้งหมด 7 ปุ่ม แต่ละปุ่มคือสูตรจัดสรรทั้งเดือนในคลิกเดียว (ตัวเลขข้างปุ่ม = จะใช้เงินเท่าไหร่)
| ปุ่ม | สูตร | เหมาะกับ |
|---|---|---|
| จัดให้ครบเป้า (Underfunded) | เติมทุกหมวดให้ถึง "เป้าหมวด" (goal) ที่ตั้งไว้ | คนที่ตั้งเป้ารายหมวดแล้ว — ปุ่มเดียวจบทั้งเดือน |
| เท่าเดือนที่แล้ว (จัดสรร) | copy ยอดที่จัดสรรของเดือนก่อน ลงทุกหมวด | เดือนปกติที่ไม่มีอะไรเปลี่ยน |
| เท่าเดือนที่แล้ว (ใช้จริง) | จัดเท่ากับที่ "ใช้จริง" เดือนก่อน | เริ่มจากพฤติกรรมจริง ไม่ใช่แผน |
| ค่าเฉลี่ย 3 เดือน (จัดสรร) | เฉลี่ยยอดจัดสรรย้อนหลัง 3 เดือน | งบที่แกว่งเป็นฤดูกาลเบาๆ |
| ค่าเฉลี่ย 3 เดือน (ใช้จริง) | เฉลี่ยยอดใช้จริงย้อนหลัง 3 เดือน | ตั้งงบให้ "พอดีกับชีวิตจริง" |
| ดึงส่วนเกินคืน ⚠ยืนยันก่อน | หมวดไหนเกินเป้า → ดึงส่วนเกินกลับเข้า RTA | เก็บเศษเงินที่จมอยู่ในหมวดคืนกองกลาง |
| ล้างยอดจัดสรร ⚠ยืนยันก่อน | ตั้งยอดจัดสรรทุกหมวดของเดือนเป็น 0 | เริ่มเดือนใหม่จากกระดาษเปล่า |
Split เชิงลึก — กติกาการแยกบิลทีละบรรทัด
ตัวแยกบิลทำงานแบบ "บันทึกทีละบรรทัด" ไม่ใช่ฟอร์มใหญ่กดครั้งเดียว — เข้าใจจังหวะนี้แล้วจะเร็วมาก
- กด แยก ที่แถว → แผงเปิดใต้แถว พร้อมบรรทัดกรอก: หมวด · จำนวน · โน้ต
- ช่องจำนวน prefill = ยอดที่ยังเหลือ เสมอ (บิล 2,450 ยังไม่แยก → ขึ้น 2,450; แยกไป 1,800 แล้ว → ขึ้น 650)
- กด + เพิ่มบรรทัด = "บันทึกบรรทัดนี้" แล้วเปิดบรรทัดถัดไปทันที
- แถบสรุปบอกสถานะตลอด:
เหลือ X/เกิน X/✓ สมดุล— เมื่อสมดุลแล้วฟอร์มเพิ่มบรรทัดหายไปเอง (จบงาน)
กติกา (บังคับโดย server)
- ยอดรวมทุกบรรทัด ห้ามเกินยอดบิลแม่ (เกิน → 400 "รวมแยกเกินยอดของรายการ") — ช่องกรอกก็ cap ไว้ที่ยอดคงเหลือชั้นหนึ่งแล้ว
- จำนวนต้อง > 0 เสมอ
- ต้องระบุหมวดทุกบรรทัด ใหม่ · PR #1519 #11 — เดิมกดปุ่มเปล่าๆ หนึ่งครั้งจะได้ split เต็มยอดแบบ "(ไม่ระบุหมวด)" โดยไม่ตั้งใจ ตอนนี้ทั้ง browser และ server ปฏิเสธ
- ลบบรรทัดได้ทีละบรรทัด (ปุ่ม ✕ ท้ายบรรทัด) — ยอดคงเหลือคำนวณใหม่ทันที
ผลของ split ต่องบ: ระบบคิด activity ของแต่ละหมวดจาก "บรรทัดแยก" แทนหมวดของบิลแม่ (effective category lines) — บิล Foodland ใบเดียวจึงหักงบ ค่ากิน 1,800 และ ช้อปปิ้ง 650 ได้พร้อมกันอย่างถูกต้อง และคีย์ลัด s บนแถวที่โฟกัส = เปิด/ปิดตัวแยกโดยไม่ต้องจับเมาส์
Reconcile เชิงลึก — พิธีกระทบยอดที่ทำให้เลข "เชื่อถือได้จริง"
Reconcile คือกลไกเดียวที่ขยับ "ยอดใช้งาน" — มันคือการประกาศว่า "ณ วันนี้ ตัวเลขนี้ตรงกับธนาคารแล้ว" และล็อกไว้
- กด Reconcile · กระทบยอด → แผงเปิดพร้อมโชว์ "ยอดเคลียร์แล้วในระบบ"
- กรอก ยอดคงเหลือจริงจากแอปธนาคาร → กด เทียบยอด
- ระบบตอบหนึ่งในสอง:
- ตรงกัน → ยืนยัน = ล็อกงวด รายการก่อนหน้าถูกประทับ reconciled
- ไม่ตรงกัน + ส่วนต่าง X → ทางเลือก 2 ทาง: (ก) ไปไล่ติ๊ก © รายการที่ธนาคารตัดแล้วให้ครบ แล้วเทียบใหม่ — วิธีที่ "ถูกต้อง" (ข) กด สร้างรายการปรับยอด ให้ระบบบันทึกธุรกรรม "ปรับยอดกระทบยอด" เท่าส่วนต่าง แล้วจบงวดทันที — วิธีที่ "เร็ว"
- รายการปรับยอดที่สร้าง จะถูกมาร์คเคลียร์ให้เอง และยอดใช้งานถูกย้ายไปตามธนาคาร ทั้งหมดเกิดใน transaction เดียว (ไม่มีสถานะครึ่งๆ กลางๆ)
- หัวบัญชีโชว์สถานะ "ยังไม่กระทบยอด · Not Yet Reconciled" จนกว่าจะทำครั้งแรก
- ส่วนต่างก้อนใหญ่ผิดปกติ (เช่น เท่ายอดยังไม่เคลียร์ทั้งก้อน) = สัญญาณว่ายังไม่เคยติ๊กเคลียร์เลย ไม่ใช่เงินหาย
หลายสกุลเงิน & FX — เงินเยน/ดอลลาร์กลายเป็นบาทตรงไหน
ระบบเก็บอัตราแลกเปลี่ยนสองชั้น และ (หลังแก้ #1) ทุกหน้าจอ "พูดเรทเดียวกัน" เสมอ
| ชั้น | คืออะไร | ใช้ตอนไหน |
|---|---|---|
| เรทปัจจุบัน (fx_rates) | เรทล่าสุด 1 แถวต่อสกุล (auto-fetch จาก frankfurter/coingecko หรือกรอกเอง) อายุ > 24 ชม. = ติดป้าย stale | fold ยอดบัญชี/ทรัพย์สิน "ณ ตอนนี้" — Net Worth, /portfolio, แถบข้าง |
| เรทย้อนหลัง (fx history) | append-only รายวัน มี carry-forward ข้ามเสาร์อาทิตย์/วันหยุด | มูลค่าย้อนหลัง — กราฟพอร์ตตามเวลา, มูลค่า ณ วันในอดีต |
กติกาที่ควรรู้
- สกุลที่รองรับ: THB · USD · JPY · SGD · TRY · USDT (crypto ราคาเป็น THB ตรง)
- สกุลที่ไม่มีเรท → ระบบไม่เดา: แสดงยอดสกุลจริง + ป้าย "ยังไม่มีอัตราแลกเปลี่ยน" และไม่นับเข้า Net Worth (ไม่มีเลขมั่ว)
- สินเชื่อไม่มีคอลัมน์สกุลของตัวเอง — ใช้สกุลของ "ทรัพย์แม่" เสมอ กัน มูลค่าบ้าน กับ หนี้บ้าน fold คนละเรท
- ประวัติเดือนเก่าในกราฟแนวโน้ม fold ด้วยเรทปัจจุบัน (ตั้งใจ — ให้เทียบกับ headline ได้ตรง) ส่วนกราฟพอร์ตใช้เรทตามวันจริง
ภาษีเชิงลึก — เพดานลดหย่อนทุกช่อง และที่มาของคำแนะนำ
หน้า ภาษี ไม่ได้กะประมาณลอยๆ — มันไล่บันไดภาษีบุคคลธรรมดาจากรายรับจริงในระบบ แล้วเทียบกับ "เพดานตามกฎหมาย" ที่เก็บเป็นตารางรายปี (ปรับได้เมื่อกฎหมายเปลี่ยน)
เพดานลดหย่อนที่ระบบใช้ (ต่อปีภาษี)
| ช่องลดหย่อน | เพดานเงิน | เพดาน % ของเงินได้ | หมายเหตุ |
|---|---|---|---|
| กองทุน RMF | 500,000 | 30% | สามช่องนี้รวมกันยังติดเพดานกลุ่มเกษียณ 500,000 อีกชั้น |
| กองทุน SSF | 200,000 | 30% | |
| Thai ESG | 300,000 | 30% | |
| เบี้ยประกันชีวิต | 100,000 | — | |
| เบี้ยประกันสุขภาพ | 25,000 | — | นับรวมในก้อนประกันชีวิต 100,000 |
| ประกันชีวิตแบบบำนาญ | 200,000 | 15% | |
| เงินบริจาค | — | 10% ของเงินได้หลังหักค่าใช้จ่าย/ลดหย่อน |
คำแนะนำ "ซื้อ X ประหยัด Y" คิดยังไง
- คำนวณเงินได้สุทธิปัจจุบัน → รู้ว่าเงินก้อนถัดไปเสียภาษีขั้นไหน (marginal)
- ไล่สิทธิที่ "ยังเหลือ" ของแต่ละช่อง (ใช้ไป/เพดาน — แถบเขียวในหน้า)
- เงินประหยัด = ยอดซื้อ × อัตราขั้นภาษีที่โดนหั่นออก (ซื้อก้อนใหญ่พอจะข้ามขั้น ระบบคิดแบบไล่ขั้นให้ ไม่ใช่คูณอัตราเดียวทื่อๆ — เช่น RMF 200,000 ประหยัด 17,450 = คร่อมขั้น 10%→5%)
- ป้ายพิเศษ "ใกล้ลดขั้นภาษีแล้ว" โผล่เมื่อการลดหย่อนอีกนิดเดียวจะดันเงินได้สุทธิหลุดลงขั้นต่ำกว่า — จุดที่เงินซื้อกองทุนคุ้มที่สุดต่อบาท
สมอง AI สองชั้น — 12 คำถามที่ตอบแบบ "คำนวณจริง ไม่ใช่เดา"
ผู้ช่วย Boom ไม่ได้โยนทุกอย่างให้ LLM: คำถามการเงินยอดฮิตถูกดักด้วย router เชิงกำหนด (deterministic) ที่คำนวณคำตอบตรงจาก ledger — เร็ว ออฟไลน์ และเลขไม่มีหลอน ส่วน LLM (Qwen ในเครื่อง) รับหน้าที่บทสนทนา/เรียบเรียง
Intents ที่ router ตอบเอง
| Intent | ตัวอย่างคำถาม | ตอบจาก |
|---|---|---|
| period_summary | "เดือนนี้ใช้ไปเท่าไหร่" / "รายรับเดือนที่แล้ว" | ผลรวมรายรับ/จ่าย/สุทธิของช่วง (รองรับ "N เดือนก่อน") |
| net_worth | "net worth ตอนนี้" / "หนี้เท่าไหร่" / "อัตราการออม" | composition เดียวกับหน้าแรก — assets / debt / after-debt / savings / emergency-fund |
| asset_breakdown | "เงินอยู่ไหนบ้าง" / "อสังหาฯ กี่บาท" | สัดส่วนสินทรัพย์รายประเภท |
| account_balance | "KBank เหลือเท่าไหร่" / "บัญชีไหนเงินเยอะสุด" | ยอดบัญชีตามชื่อ / จัดอันดับ |
| payee_spend | "จ่าย 7-Eleven ไปเท่าไหร่" | ผลรวมตามผู้รับเงิน (เดือนนี้/ที่แล้ว/ทั้งหมด) |
| budget_remaining | "งบเหลือเท่าไหร่" / "หมวดไหนเกินงบ" | สถานะ zero-based ของเดือน |
| spend_compare | "เดือนนี้ใช้เยอะกว่าเดือนก่อนไหม" | เทียบช่วงต่อช่วง |
| savings_goals | "เป้าหมายไปถึงไหนแล้ว" | ความคืบหน้าเป้า (ทั้งลิสต์/รายเป้า) |
| recurring_bills | "บิลไหนจะมาถึง" | คิวรายการประจำ |
| income_source | "รายได้มาจากไหน" | แหล่งรายรับอันดับต้น |
| top_merchant | "ร้านไหนจ่ายบ่อยสุด" | อันดับผู้รับเงิน |
| top_expenses | "อะไรแพงสุดเดือนนี้" | หมวด/รายการที่ใหญ่สุด |
คำสั่ง (ไม่ใช่คำถาม)
- สร้างรายการ: ประโยคที่มีตัวเลข = สัญญาณบันทึก ("จ่ายค่าเน็ต 590", "ก๋วยเตี๋ยว 60") — แตกจำนวน/หมวด/วันที่ให้
- พาไปหน้า: "พาไปหน้างบ" → navigate
- ลบรายการ: ผ่านการ์ดยืนยันเสมอ (ระบบ accuracy-gate ≥99% ก่อนลงมือ) — ไม่มีการลบเงียบๆ
นำเข้าข้อมูลทุกเส้นทาง — PDF เร็ว, CSV wizard, และ dry-run
เส้นทางนำเข้ามี 4 แบบ เลือกตามไฟล์ที่มี — ทุกเส้นทางลงท้ายด้วย "ตรวจก่อน ยืนยันทีหลัง" และระบบกันซ้ำ
| เส้นทาง | เหมาะกับ | ความเร็ว | จุดเด่น |
|---|---|---|---|
| PDF กสิกร (K-Bank) | statement PDF ของ KBank | < 100 ms แม้ 16 หน้า/400+ รายการ | parser เฉพาะทาง ไม่ใช้ AI, รองรับ PDF ล็อกรหัส |
| CSV ธนาคารไทย | SCB, KTB, BBL, BAY, TTB, UOB, CIMB | ทันที | แม่แบบรู้จักหัวคอลัมน์ธนาคารหลักอยู่แล้ว |
| PDF อื่น (AI อ่าน) | ธนาคารอื่น/ฟอร์แมตแปลก | ~30 วิ (1-3 หน้า) — ~12 นาที (16+ หน้า) | Qwen ในเครื่อง เห็นความคืบหน้าทีละส่วน ยกเลิกได้ |
| ตัวช่วย CSV ทีละขั้น | CSV หน้าตาประหลาด/ทำเอง | ทันที | 4 ขั้น: ไฟล์+บัญชี → จับคู่คอลัมน์ → ตัวอย่าง → นำเข้า |
Wizard เจาะละเอียด
- จับคู่คอลัมน์อัตโนมัติ พร้อม % ความมั่นใจ — บทบาทที่เลือกได้: date · description · withdrawal · deposit · amount · balance · channel · ignore; แก้แล้วกด "ใช้การจับคู่นี้" เพื่อดูตัวอย่างใหม่
- สถิติชัดก่อนลงมือ:
parsed / skipped / ซ้ำในไฟล์+ คอลัมน์ที่ยังขาด - dry-run เปิดเป็นค่าเริ่มต้น — ซ้อมก่อนเสมอ: บอกว่า "จะเพิ่มกี่รายการ ข้ามซ้ำกี่รายการ เข้ารีวิวกี่รายการ" โดยยังไม่แตะฐานข้อมูล ปรับ UI · #10 ปุ่มจะเขียนว่า "ทดลองนำเข้า (dry-run)" จนกว่าจะเอาติ๊กออก จึงกลายเป็น "นำเข้า" จริง
- นำเข้าจริงได้ batch id ประทับทุกแถว — อยากถอนทั้งชุดก็ตามรอยได้
- กันซ้ำสองชั้น: ซ้ำเป๊ะถูกข้าม, ก้ำกึ่งเข้าคิวรีวิวให้คนตัดสิน
ทะเบียนรายการฉบับ Master — ทุกปุ่ม ทุกคีย์ลัด
หน้าทะเบียน (register) คือที่ที่ใช้เวลามากที่สุด — นี่คือรายการเครื่องมือครบทุกชิ้น พร้อมตำแหน่งและหน้าที่ (ทั้งหมดผ่านการกดจริงใน Storyboard ฉาก C/S)
| เครื่องมือ | อยู่ตรงไหน | ทำอะไร |
|---|---|---|
| + เพิ่มรายการ | ใต้หัวบัญชี | แถวกรอกโผล่บนตาราง: วันที่ · ประเภท(รับ/จ่าย) · ผู้รับ/จ่าย · หมวด · โน้ต · จำนวน |
| นำเข้ารายการ · File Import | ข้างปุ่มเพิ่ม | ทางลัดไปหน้านำเข้า ผูกบัญชีนี้ให้เลย |
| Undo / Redo | แถวเดียวกัน | ย้อน/ทำซ้ำการแก้ไขในทะเบียน |
| View ▾ | ขวาบนตาราง | เปิด/ปิดคอลัมน์ ยอดสะสม · Running Balance + กรองช่วงวันที่ |
| ช่องค้นหา | ขวาบน | กรองแถวสดๆ จากผู้รับเงิน/หมวด/โน้ต |
| ติ๊กเลือกหลายแถว | คอลัมน์แรก | เปิดแถบ bulk: ติดธง · เปลี่ยนหมวด · ผูกอสังหา · ย้ายบัญชี · ลบที่เลือก |
| ปุ่มธง | หน้าแถว | แปะธงสี (ตั้งชื่อธงเองได้ในเมนูงบ → แก้ไขธง) |
| © เคลียร์ | ท้ายแถว | มาร์ค "ธนาคารตัดแล้ว" — ย้ายเงินฝั่ง เคลียร์/ยังไม่เคลียร์ (บทที่ 1) |
| แยก / แก้ / ลบ | ท้ายแถว (hover) | split หลายหมวด (บทที่ 4) · แก้ไขในแถว · ลบเข้าถังขยะ (กู้คืนได้) |
| Reconcile · กระทบยอด | มุมขวาบนสุด | พิธีปิดงวดกับธนาคาร (บทที่ 5) |
| ดินสอ ✎ | ข้างชื่อบัญชี | แก้ชื่อ/ชนิด/สกุล/ซ่อนบัญชี |
| สถิติบัญชี | ท้ายหน้า | ยอดคงเหลือ · รายรับ/จ่ายรวม · สุทธิ · กราฟเข้า-ออก 6 เดือนของบัญชีนี้ |
คีย์ลัดหน้าทะเบียน (กด ? ในหน้าเพื่อดู)
| คีย์ | ทำอะไร | คีย์ | ทำอะไร |
|---|---|---|---|
/ | โฟกัสช่องค้นหา | j / k | เลื่อนแถวลง/ขึ้น |
x | เลือก/ไม่เลือกแถว | e | แก้ไขแถวที่โฟกัส |
s | เปิด/ปิดตัวแยกรายการ | a | เลือกทั้งหมด |
Del | ลบที่เลือก | Esc | ปิด/ล้างที่เลือก |
ทุกหน้า: g b ไปงบ · g r ไปรายงาน · g a ไปรวมบัญชี · ? ตารางคีย์ลัด · ⌘K เรียก AI | |||
เป้าหมวด (Category Targets) — 4 ชนิด + Snooze + Inspector
นอกจาก "เป้าหมายชีวิต" ระยะยาว หน้างบมีระบบเป้ารายหมวดของตัวเอง — หัวใจของปุ่ม "จัดให้ครบเป้า" และแท็บ "ยังไม่ถึงเป้า"
| ชนิดเป้า | ความหมาย | ตัวอย่าง |
|---|---|---|
| ใส่เงินทุกเดือน (monthly funding) | จัดสรรเข้าหมวดนี้เดือนละ X เสมอ ไม่สนว่าเหลือเท่าไหร่ | ออม/ลงทุน 30,000 ทุกเดือน |
| เติมให้ครบทุกเดือน (refill) | เติมจนยอด "คงเหลือ" กลับไปแตะ X ทุกต้นเดือน (ใช้เท่าไหร่ เติมเท่านั้น) | ค่ากิน คงเหลือ 20,000 เสมอ |
| เก็บถึงยอดเป้า (target balance) | สะสมจนหมวดมี X แล้วหยุด | กองซ่อมบ้าน 100,000 |
| เก็บถึงยอดภายในวันที่ (target by date) | สะสมถึง X ภายในวันที่กำหนด — ระบบเฉลี่ยรายเดือนให้ | ค่าเทอม 60,000 ก่อน พ.ค. |
- Inspector รายหมวด (คลิกชื่อหมวด): เห็นสมการ คงเหลือ = ยกมา + จัดสรร − ใช้ไป ของหมวดนั้น + ประวัติการย้ายเงิน (Moves) + ปุ่ม Auto-Assign เฉพาะหมวด
- Snooze เป้าเดือนนี้: ข้ามเป้าชั่วคราวโดยไม่ลบ — หมวดหายจากแท็บ "ยังไม่ถึงเป้า" และไม่ถูกนับในปุ่ม "จัดให้ครบเป้า" เฉพาะเดือนนี้
- รายได้ที่คาดไว้ (Cost to Be Me): กรอกรายได้เดือนนี้ → ระบบเทียบ "รายได้ − ผลรวมเป้าทุกหมวด" — ติดลบ = เป้าที่ตั้งแพงกว่ารายได้ ต้องเลือกลดเป้าหรือหารายได้เพิ่ม
- ย้ายเงินระหว่างหมวด: คลิกป้ายคงเหลือท้ายแถว → popover ดึงเงินจากหมวดหนึ่งไปอีกหมวด (บันทึกใน "การย้ายล่าสุด")
รายการประจำ — ทุก field ทุกจังหวะของเครื่องยนต์อัตโนมัติ
เครื่องยนต์ที่ทำให้บิลรายเดือน "เดินเอง" — เข้าใจ field ครบแล้วตั้งได้ทุกรูปแบบตั้งแต่ Netflix ยันค่าเช่ารับ
| Field | ค่า/ความหมาย |
|---|---|
| ชื่อ | ป้ายที่โผล่ในคิว/ปฏิทิน เช่น "ค่าเน็ตบ้าน AIS Fibre" |
| ประเภท | รายจ่าย · รายรับ · โอน (มีช่องบัญชีปลายทาง to_account — ใช้ทำ "โอนเข้าออมอัตโนมัติ") |
| ความถี่ | รายวัน · รายสัปดาห์ · รายเดือน · รายปี · เดือนละ 2 ครั้ง (twice-monthly เช่นเงินเดือนแบ่งงวด) |
| ทุก N (interval) | คูณความถี่ เช่น รายเดือน×3 = รายไตรมาส |
| เริ่ม / สิ้นสุด | วันงวดแรก และวันหมดอายุกฎ (เว้นว่าง = ตลอดไป — เหมาะกับผ่อนที่มีงวดจบ ใส่วันจบไว้) |
| ต้องอนุมัติก่อน | ติ๊ก = ทุกงวดเข้า "คิวรออนุมัติ" ให้กด ✓/✗ (แก้ยอดก่อนอนุมัติได้) · ไม่ติ๊ก = ลงบัญชีเงียบๆ อัตโนมัติ |
- วงจรของงวด: ถึงกำหนด → ระบบ materialize เป็นรายการรอ → (อนุมัติ) → ลง transactions จริงพร้อมหมวด/บัญชีตามกฎ → โผล่ในทะเบียน งบ และรายงานเหมือนรายการมือทุกประการ
- ปุ่ม "สร้างรายการที่ครบกำหนด": บังคับ materialize ทันทีไม่ต้องรอรอบ (มีประโยชน์หลังเครื่องปิดไปหลายวัน)
- ปฏิทินอ่านจากกฎโดยตรง: เห็นงวดล่วงหน้าก่อนถึงกำหนดจริง และคลิก event ในปฏิทินจะพากลับมาที่กฎต้นทาง
เป้าหมายชีวิต — สูตรทุกตัวเลขบนการ์ด และเป้าเกษียณในตัว
การ์ดเป้าหมายไม่ได้โชว์เลขลอยๆ — ทุกตัวมาจากสูตรตรงไปตรงมา (พิสูจน์จากการทดสอบจริงในฉาก I: เป้ารถ EV)
- "คาดถึงปี X": ประมาณจากอัตราการเติมเงินจริงที่ผ่านมา — เติมถี่ขึ้น ปีคาดการณ์ขยับเข้าใกล้เอง (เห็นสดๆ ในการทดสอบ: 2031→2030 หลังเติมเงิน)
- ป้าย ตามเป้า/ตามไม่ทัน: เทียบเส้นทางการเติมปัจจุบันกับเส้นตรงสู่กำหนด
- สถานะ: ทำอยู่ → พักไว้ (หยุดนับชั่วคราว มีปุ่มทำต่อ) → ทำสำเร็จ ("ถึงเป้าแล้ว" ย้ายกลุ่ม) → ลบ
- ช่วยคำนวณ (ครอบครัว/เรียน): ตัวช่วยตั้งยอดเป้าจากโจทย์จริง เช่น ค่าเทอมต่อปี×จำนวนปี
เป้าเกษียณในตัว (การ์ดใหญ่ล่างสุด)
- ฉายภาพความมั่งคั่งไปข้างหน้าจาก Net Worth ปัจจุบัน + อัตราออมจริงต่อเดือน → บอก "ที่จังหวะนี้ ถึง ฿30M ในปี X (อายุ Y)"
- ตอบสนองข้อมูลจริงทันที: ในการทดสอบ เมื่ออนุมัติเงินเดือนเข้าเพิ่ม อัตราออม/เดือนขยับจาก 37,375 → 52,328 และปีคาดการณ์เลื่อนจาก 2029 → 2028
- กราฟฉายถึงปี 2045 พร้อมเส้นเป้า — แตะ "รายละเอียด →" เพื่อดูสมมติฐานเต็ม
รายงานทั้งระบบ + สูตร Age of Money
แผนที่ของหน้า "ทบทวน" ทั้ง 6 แท็บ ช่วงเวลา 8 แบบ ตัวกรอง 2 มิติ และรายงานพิเศษ 3 ฉบับ
| แท็บ | เห็นอะไร | พิเศษ |
|---|---|---|
| ภาพรวม | หน้ารวม (การ์ด NW + insights + IvE + flow + trends + heatmap) | heatmap ความเข้มรายจ่ายรายวัน |
| สัดส่วนการใช้จ่าย | donut ตามกลุ่ม/ตามหมวด + AI วิเคราะห์เทียบค่าเฉลี่ย | รายการ "ยังไม่จัดหมวด" แสดงแยกตรงไปตรงมา |
| แนวโน้มการใช้จ่าย | กระแสเงินเข้า→ออก (ตามช่วง — แก้ #2) + ตารางรายหมวด×เดือน | อัตราการออมของช่วง |
| ความมั่งคั่งสุทธิ | กราฟแท่งรายเดือน + ตารางการเปลี่ยนแปลง | ฐานเดียวกับ hero (แก้ #4) |
| รายรับ-รายจ่าย | matrix รายหมวด×เดือน + กราฟแท่งคู่ (ตามช่วง — แก้ #13) | |
| อายุของเงิน | ตัวเลข AoM + ป้ายสุขภาพ + ทางเข้ารายงานพิเศษ | Wrapped · รายปี · ตรวจสุขภาพ |
สูตร Age of Money (นับแบบ FIFO)
- ตีความ: AoM 43 วัน = เงินที่ใช้วันนี้หามาได้เมื่อ ~6 สัปดาห์ก่อน → มีกันชน 1 เดือนครึ่ง; YNAB แนะนำ ≥30 วัน
- ช่วงเวลาเลือกได้ (เดือนนี้ → ทั้งหมด) — ตัวเลขคำนวณจากหน้าต่างที่เลือก
- ส่งออกได้ทุกแท็บ: CSV (ธุรกรรมดิบ) · Excel (.xlsx) · JSON — และงบมี CSV/JSON ของตัวเอง (
group,category,budgeted,rollover,spent,available)
อสังหาริมทรัพย์ครบวงจร — ผู้เช่า สัญญา ค่าเช่า และหนี้ต่อหลัง
อสังหาฯ ในระบบไม่ใช่แค่ "ตัวเลขมูลค่า" — แต่ละหลังคือหน่วยธุรกิจย่อยที่มีหน้า detail ของตัวเอง (/properties/:id)
| ส่วน | เก็บอะไร | ไปโผล่ที่ไหน |
|---|---|---|
| มูลค่า + ประวัติประเมิน | ราคาซื้อ · มูลค่าปัจจุบัน · ประวัติเป็นงวด | Net Worth, พอร์ต (±% vs ซื้อ), แจ้งเตือนครบกำหนดประเมินรายปี |
| สินเชื่อ | ผู้ให้กู้ · เงินต้น · งวด/เดือน · ดอกเบี้ย · ยอดคงเหลือ | หนี้สินรวม (fold ตามสกุลของทรัพย์แม่เสมอ — บทที่ 6) |
| ผู้เช่า + สัญญา | ชื่อผู้เช่า · สัญญาต่อยูนิต · วันหมดสัญญา | การ์ด "ทรัพย์ที่ต้องดูแล" หน้าแรก (สัญญาหมดใน 60 วัน) |
| ค่าเช่า | ค่าเช่า/เดือน ต่อหลัง | yield % ในพอร์ต + ตั้งเป็นรายการประจำรายรับได้ |
- ค่างวดผ่อน (ค่าผ่อนบ้าน) กับ "หนี้คงเหลือ" แยกเลนกัน: งวดคือกระแสเงินสดในงบ หนี้คงเหลือคือ balance sheet — ลดหนี้คงเหลือด้วยการอัปเดตยอดที่สินเชื่อ
- ธุรกรรมผูกอสังหาฯ ได้ (ปุ่ม "ผูกอสังหา" ใน bulk bar) — รวมต้นทุนจริงต่อหลังเพื่อดู ROI
ระบบและความปลอดภัย — Backup · Audit · ถังขยะ · หลายงบ · PWA
| กลไก | รายละเอียด |
|---|---|
| Backup (/backup) | สำรอง/ดาวน์โหลดฐานข้อมูล + งานสำรองอัตโนมัติ (launchd) — ก่อน deploy รุ่นใหม่ระบบ snapshot ให้เองด้วย |
| Audit log (/audit) | ทุกการเปลี่ยนแปลงถูกจดเป็นแถว (ตาราง/ผู้กระทำ/เวลา กรองได้) — ตรวจย้อนหลังได้เสมอ |
| ถังขยะ (/trash) | ลบ = พักไว้ก่อนเสมอ (กู้คืนได้เต็มรูป) · ลบถาวรต้องยืนยันอีกชั้น — พิสูจน์แล้วถึงระดับ DB ในฉาก U/P |
| หลายงบ | งบใหม่ (เริ่มว่าง/สำเนาโครง) · เมนูโชว์ RECENT PLANS เมื่อมี ≥2 งบ · ข้อมูลแยกขาดต่องบ · Fresh Start = เริ่มใหม่โดยเก็บโครงเดิม |
| โหมดส่วนตัว | ทุกตัวเลขเป็น ฿•••••• (รวม SVG หลังแก้ #7) — บังบนจอเท่านั้น ไม่แตะข้อมูล |
| ธีม | ค่าเริ่มต้น / มืด / ตามระบบ — เลือกแล้วกด นำไปใช้ (บันทึกทั้ง localStorage และ server) |
| PWA | manifest "Boom Life" ติดตั้งเป็นแอปมือถือ/เดสก์ท็อป — local-first ตามคำโปรยของระบบเอง |
| Feature toggles | เมนูงบ → ปรับแต่งฟีเจอร์: เปิด/ปิดรายโมดูล (พอร์ต/ภาษี/ผู้คน/ฯลฯ) จอเหลือเท่าที่บ้านเราใช้ |
ภาคผนวก — บั๊กที่พบและแก้ระหว่างจัดทำคู่มือนี้ (PR #1519)
คู่มือนี้เขียนจากการกดจริงทุกปุ่ม — ระหว่างทางเราพบและแก้บั๊กจริง ยื่นเป็น PR ต่อระบบ พร้อม test ปิดทุกตัว:
| # | อาการ | การแก้ | บทที่เกี่ยว |
|---|---|---|---|
| 1 | USD สองเรทบนหน้าเดียว (บัญชี vs หลักทรัพย์) | as-of วันนี้ใช้ cache เมื่อใหม่กว่า history (เทียบวันแบบ local) | 6 |
| 2 | บล็อกกระแสเงินไม่ตามช่วงเวลา + ป้าย 12 เดือน hardcode | scope ตาม ?range= + label เป็นพารามิเตอร์ | 14 |
| 3 | กลาง donut เขียน "ทั้งเดือน" ทุกช่วง | ป้ายตาม preset (ทั้งเดือน/ทั้งช่วง) | 14 |
| 4 | ป้าย ▼ บนการ์ด NW ขยับจากรายการไร้บัญชี ทั้งที่ตัวเลขหลักนิ่ง | back-projection ตัดธุรกรรมไร้บัญชี (ฐานเดียวกับ hero) | 1 |
| 5 | "สรุปเดือน" ดูขัดกับ RTA หลังเงินเข้า | เพิ่มบรรทัด พร้อมจัดสรร (ยังไม่ลงหมวด) ในแผง | 2 |
| 6 | AI เล่าองค์ประกอบหนี้ผิด (เลขถูก) | fact-sheet หนี้รายก้อน + ข้อกำกับใน context | 8 |
| 7 | โหมดส่วนตัวไม่บังตัวเลขกลาง donut (SVG) | fill:transparent + mask element เฉพาะ SVG (3 จุด) | 16 |
| 10 | ปุ่มนำเข้า wizard อ่านว่า "ไม่ทำงาน" ตอน dry-run | ป้ายปุ่มบอกโหมดจริง: ทดลองนำเข้า (dry-run) ⇄ นำเข้า | 9 |
| 11 | split บรรทัดหมวดว่างเต็มยอดเกิดได้ในคลิกเดียว | บังคับหมวด (client required + server 400) | 4 |
| 12 | ปุ่ม "เพิ่มบัญชี" เป็นลิงก์เปล่า | deep-link /#quick-add + focus + เติม "เปิดบัญชี " | 10 |
| 13 | กราฟรายรับ-รายจ่ายค้าง 12 เดือนบนแท็บเลือกช่วง | series+label ตามช่วงที่เลือก | 14 |
ข้อ 8-9 ของรายงานสอบสวนถูกถอนหลังทดสอบซ้ำบนสภาพแวดล้อมสะอาด (เป็นผลข้างเคียงของเครื่องมือทดสอบ ไม่ใช่บั๊กแอป) — บันทึกไว้อย่างโปร่งใสใน PR · ทั้งชุดยืนยันด้วย test 8,758 ตัว (0 fail)
คู่มือเชิงลึกครบชุด 16 บท + ภาคผนวก
ทุกบทอ้างอิงพฤติกรรมจริงของระบบรุ่นล่าสุด ผ่านการกดจริงทุกปุ่ม (Storyboard 25 ฉาก) และตรวจเลขถึงระดับฐานข้อมูล