ระบบ affiliate ตัวจริงมีอยู่แล้วที่พอร์ทัลกลาง เดฟทำ open API ออกมาให้แอปเดลี่มูดึงไปใช้ เราไม่สร้างอะไรใหม่ ไม่แก้อะไรที่หลังบ้าน — เอกสารนี้ตอบคำถามเดียว คือแล้วบนแอปควรมีอะไรบ้าง
ไม่มีแท็บล่าง ไม่มีการ์ดหน้าแรก ไม่มี banner ชวนสมัคร — มีแค่ แถวเดียวในเมนูโปรไฟล์ ใต้หัวข้อ “รายได้เสริม”
จุดที่คนมักออกแบบพลาดคือรวม “เข้าร่วมโปรแกรม” กับ “ลงทะเบียนรับเงิน” เป็นประตูเดียว แล้วบังคับให้กรอกเอกสารตั้งแต่วันแรก ผลคือคนกดเข้ามาดูแล้วถอย — เราแยกเป็นคนละขั้น แพตเทิร์นเดียวกับ Pinto Affiliate
| ขั้น | ต้องใช้อะไร | ปลดล็อกอะไร |
|---|---|---|
| 1. มีบัญชี dailyMu | มีอยู่แล้วตั้งแต่ใช้แอป | เห็นแถว “โปรแกรมแนะนำเพื่อน” ในเมนูโปรไฟล์ |
| 2. เข้าร่วมโปรแกรม | ไม่ต้องกรอกอะไรเลย — กดปุ่มเดียว + ติ๊กยอมรับเงื่อนไข | ได้ลิงก์ทันที · แชร์ได้ · ส่วนแบ่งเริ่มสะสม |
| 3. ลงทะเบียนรับเงิน | ยืนยันตัวตน + บัญชีรับเงิน · ทำตอนอยากถอน ไม่ต้องรีบ | ถอนเงินได้ |
สมัคร → รออนุมัติ → Active/ปฏิเสธ)
แต่ขอให้ตั้งเป็น auto-approve สำหรับ dailyMu เพราะคนที่เข้าร่วมคือลูกค้าเราเองที่ใช้แอปอยู่แล้ว ·
ถ้าต้องรีวิวทุกใบ = มีคนต้องนั่งกดทุกวัน · และถ้าใครทำผิด มี Suspended จัดการทีหลังได้อยู่แล้วdocs/spec.md ยังไม่มีช่อง email ใน UserProfile —
สเปกไม่ตรงกับของจริง ต้องอัปเดต และต้องตอบให้ได้ว่า
ถ้าอีเมลผิดหรือเข้าไม่ได้ ผู้ใช้ทำยังไง เพราะเอกสารภาษีส่งไปแล้วเอาคืนไม่ได้
| เคส | สถานะ | สาระ |
|---|---|---|
| ใช้ลิงก์ตัวเองซื้อเอง | เคาะแล้ว | กดได้แต่ไม่ได้ค่าคอม · เป็นตรรกะหลังบ้านล้วน แอปไม่ต้องมีหน้าจอหรือข้อความอะไรเพิ่ม (ส่วนแบ่งก็แค่ไม่เกิดขึ้น) · แต่ต้องเขียนลงเงื่อนไขให้ชัด กันคนมาถามว่าทำไมซื้อเองแล้วไม่ได้คอม |
| เลิกเข้าร่วมโปรแกรมได้ไหม | ยังไม่เคาะ | ถ้าได้ ต้องมีปุ่มและต้องตอบว่าส่วนแบ่งที่ค้างอยู่จะยังไง (ได้ต่อ / ริบ / ให้ถอนให้หมดก่อน) · ถ้าไม่ได้ ต้องเขียนในเงื่อนไขให้ชัดตั้งแต่ตอนเข้าร่วม |
| เพื่อนที่เป็นผู้ใช้ dailyMu อยู่แล้ว กดลิงก์แล้วนับไหม |
ยังไม่เคาะ | ถ้านับ = คนชวนกันเองในกลุ่มเพื่อนที่ใช้อยู่แล้ว ไม่ได้ลูกค้าใหม่ · ถ้าไม่นับ ต้องบอกผู้แนะนำให้ชัด ไม่งั้นเขาจะงงว่าทำไมแชร์แล้วไม่ได้คอม |
ข้อนี้เป็นกฎธุรกิจข้อแรกในสเปกพอร์ทัล และเป็นสิ่งที่ prototype รอบแรกของเราทำผิด
Direct Share)
ที่เหลือกระจายขึ้นไปให้ upline หลายชั้น (Paid Levels × Upline Share)
ถ้าสมาชิกเห็น % จะถอดสูตรย้อนกลับได้ว่าโครงสร้างการแบ่งเป็นยังไงdocs/* ถูก deploy ขึ้น
dailymu-wallpaper.pages.dev ซึ่งเป็นสาธารณะ ไม่มีล็อกอิน —
เขียนเป็นชื่อ config ได้ แต่ห้ามใส่ค่า ดูค่าจริงที่พอร์ทัลกลางยอดซื้อ × rate เองในแอป
| ป้ายที่แสดงแทน | เมื่อไหร่ |
|---|---|
| ซื้อครั้งแรก | ลูกค้าคนนี้ซื้อผ่านลิงก์เป็นครั้งแรก — ใช้อัตรา Aff Pool (สมาชิกไม่เห็นตัวเลข) |
| ซื้อซ้ำ · ครั้งที่ N จาก M | ครั้งถัดไป — ใช้ Recurring Rate · บอกด้วยว่าเหลือสิทธิ์อีกกี่ครั้ง |
เส้นทางของเงิน 1 ก้อน ตั้งแต่ผู้แนะนำกดแชร์ จนเงินเข้าบัญชีธนาคารจริง มี ด่านคัดออก 4 จุด ที่ทำให้ส่วนแบ่งไม่ถึงมือ — ทุกจุดต้องอธิบายให้ผู้ใช้เข้าใจได้ ไม่งั้นกลายเป็นเรื่องร้องเรียน
Hold Period) ตั้งรายโปรเจกต์ และสเปกระบุว่า ต้องครอบระยะขอคืนเงิน
— ดังนั้นต้องดูนโยบายคืนเงินของเดลี่มูก่อนถึงจะตั้งได้
ตรวจ 3 อย่างตามลำดับ และปุ่มเปลี่ยนข้อความตามชั้นที่ติด แทนที่จะปล่อยให้กดแล้วค่อยขึ้น error ผู้ใช้จะรู้ตั้งแต่ยังไม่กดว่าติดอะไรและต้องไปทำอะไรต่อ
| ชั้นที่ตรวจ | ถ้าไม่ผ่าน ปุ่มขึ้นว่า | กดแล้วไปไหน |
|---|---|---|
| 1. ยืนยันตัวตนผ่านแล้ว | 🪪 ยืนยันตัวตนก่อนถอน | หน้ายืนยันตัวตน |
| 2. มีบัญชีรับเงิน | 🏦 เพิ่มบัญชีรับเงินก่อน | หน้าแก้บัญชีรับเงิน |
| 3. ยอด ≥ ขั้นต่ำ | 💸 ยอดยังไม่ถึง ฿X | ไม่ไปไหน — แต่บอกว่าขาดอีกเท่าไหร่ |
ไม่มีถ่ายเซลฟี่คู่บัตร ไม่มี liveness — อัปโหลด 2 ไฟล์ แล้วให้หลังบ้านจับคู่ ชื่อบนบัตรกับชื่อบัญชีรับเงินเอง ถ้าไม่ตรงค่อยแจ้งกลับมาให้แก้
พอร์ทัลมี 7 สถานะเพราะแอดมินกับทีมบัญชีต้องใช้แยกแยะงาน แต่ผู้ใช้ทั่วไปบนแอปต้องการรู้แค่ “เงินถึงไหนแล้ว” — เลยยุบเหลือ 4 กลุ่ม แล้วให้กดดู timeline ครบทุกขั้นที่พอร์ทัล
| กลุ่มที่แอปแสดง | ครอบสถานะจริง | ยอดเงินอยู่ไหน |
|---|---|---|
| ⏳ รออนุมัติ | Requested · Approved | ถูกล็อกออกจากกระเป๋าแล้ว |
| → กำลังโอน | Processing | ล็อก · ย้อนกลับไม่ได้แล้ว |
| ✓ โอนแล้ว | Paid | เข้าบัญชีธนาคาร · เกิดภาระภาษีทันที |
| ↩ ไม่สำเร็จ · คืนเงิน | Rejected · Failed · Returned | คืนเข้ากระเป๋า (Failed = รอแอดมินคืน) |
หน้าภาพรวมกับหน้ากระเป๋าใช้ตรรกะเดียวกัน แสดงได้ทีละอันเท่านั้น เรียงตามความเร่งด่วน กดจบเรื่องหนึ่งแล้วเรื่องถัดไปถึงโผล่
พอเปิด Monthly Sales Threshold การ์ดยอดเงินบนแอปต้องแยกเป็น 3 ก้อน
| ก้อน | ความหมาย | ถอนได้ไหม |
|---|---|---|
| ยอดถอนได้ | พ้น Hold แล้ว และผ่านเป้ารอบแล้ว | ได้ |
| รอปล่อย | ยังอยู่ในระยะ Hold | ยังไม่ได้ |
| รอผ่านเป้ารอบนี้ | พ้น Hold แล้ว แต่ยอดขายของตัวเองรอบนี้ยังไม่ถึงเป้า | ยังไม่ได้ |
0 คือค่าที่แปลว่าปิด — 1 บาท ไม่ใช่0 ระบบข้ามตรรกะนี้ทั้งก้อน แต่ที่ 1 บาท ตรรกะยังทำงานอยู่ —
ใครที่รอบนั้นขายเองไม่ได้เลยสักบาท จะไม่ผ่านเป้าและโดนตัดคอม ทั้งที่เจตนาคืออยากปิด
0 UI หายไป 3 ชิ้น — ยอดก้อนที่ 3 · แท็บ “ถูกตัด” ในหน้ารายได้ · แบนเนอร์เป้ารอบ
ใน prototype กดปุ่ม 🎯 เป้ารอบ ที่แถบล่างจอเพื่อสลับดูความต่างได้ทันที
ค่าพวกนี้ตั้งได้รายโปรเจกต์ (เช่น ถอนขั้นต่ำ TAKRA ฿500 · Delima ฿300) และสเปกระบุว่า “ทุกรายการ snapshot ค่า config ณ เวลาที่เกิดรายการ การเปลี่ยนค่าทีหลังมีผลเฉพาะรายการใหม่” — แปลว่าค่าพวกนี้ไม่คงที่ตามเวลาด้วย
| ค่า (ชื่อในระบบกลาง) | แอปเอาไปทำอะไร |
|---|---|
Minimum Withdrawal | ด่านที่ 3 ก่อนถอน · ข้อความปุ่ม · ปุ่มลัดจำนวนเงิน |
Hold Period | “ปล่อยเข้ากระเป๋าในอีก N วัน” — ต้องครอบระยะขอคืนเงินของ dailyMu |
Repeat Purchase CountTime Ceiling | ป้าย “ครั้งที่ N จาก M” · บอกว่าลูกค้าคนนี้เหลือสิทธิ์อีกกี่ครั้ง |
Monthly Sales ThresholdMonthly Summary Date | แบนเนอร์เป้ารอบ · ยอด “รอผ่านเป้ารอบนี้” · แท็บ “ถูกตัด” |
Attribution Policy | “เพื่อนที่กดลิงก์นับเป็นของคุณ N วัน” (ปัจจุบัน 30 วัน last-click) |
Payout Schedule | ข้อความบอกรอบโอน — แสดงอย่างเดียว ไม่มี batch อัตโนมัติ |
| ภาษีหัก ณ ที่จ่าย 3% (ภ.ง.ด.3) | สรุปยอดสุทธิก่อนกดยืนยันถอน |
const CONF ก้อนเดียว เพื่อให้ย้ายไปเป็นค่าจาก API ได้ในจุดเดียว
ไม่ต้องบอกตัวเลขของ dailyMu ตอนนี้ — ตั้งที่หลังบ้านเท่าไหร่ แอปก็แสดงตามนั้น
| สถานะจริง | ป้ายในแอป | แท็บ | เข้ายอดถอนได้ |
|---|---|---|---|
Pending | รอปล่อย | รอปล่อย | ไม่ |
Available | เข้ากระเป๋าแล้ว | เข้ากระเป๋าแล้ว | ใช่ |
Paid | ถอนออกไปแล้ว | เข้ากระเป๋าแล้ว | ถอนไปแล้ว |
Reversed | ลูกค้าขอคืนเงิน | ยกเลิก | ไม่ |
Canceled | ยกเลิก | ยกเลิก | ไม่ |
QuotaCut | ถูกตัด | ถูกตัด | ไม่ |
QuotaCut ต้องแยกจาก Canceled เด็ดขาด — คนละสาเหตุกันคนละเรื่อง
และ QuotaCut เป็นเงินที่ผู้ใช้เคยเห็นแล้วว่าจะได้ แล้วหายไปเพราะทำยอดไม่ถึง
ถ้าอธิบายไม่ได้จะกลายเป็นเรื่องร้องเรียนทันที
| สถานะในระบบกลาง | ป้ายในแอป | ความหมาย | ถอนเงินได้ไหม |
|---|---|---|---|
| ยังไม่ยื่น | ยังไม่ยื่น | เพิ่งสมัคร ยังไม่ได้อัปโหลดอะไร | ไม่ได้ |
| รอตรวจสอบ | รอตรวจสอบ | ยื่นแล้ว รอหลังบ้าน 1–3 วันทำการ | ไม่ได้ — แต่ส่วนแบ่งยังสะสม |
| ผ่าน | ยืนยันแล้ว | ชื่อบนบัตรตรงกับชื่อบัญชีรับเงิน | ได้ |
| ไม่ผ่าน | ไม่ผ่าน | มีเหตุผลกลับมาเสมอ ยื่นใหม่ได้ไม่จำกัด | ไม่ได้ |
| ถูกเพิกถอน | ถูกเพิกถอน | เคยผ่านแล้ว แอดมินตรวจซ้ำพบข้อมูลไม่ตรง | ไม่ได้ |
| สถานะในระบบกลาง | ป้ายในแอป | เกิดจาก | ถอนเงิน | รับคอมใหม่ |
|---|---|---|---|---|
| Active | ปกติ | ล็อกอินอย่างน้อย 1 ครั้งภายในเกณฑ์ | ได้ | ได้ |
| Inactive | ไม่เคลื่อนไหว | ไม่ล็อกอินเกิน Inactive Threshold | ได้ | ถูกข้ามตอนแบ่ง pool |
| Suspended | ถูกระงับ | แอดมินระงับชั่วคราว | ได้ | ไม่ได้ |
| เรื่อง | อยู่ไหน | เหตุผล |
|---|---|---|
| ภาพรวม affiliate | ในแอป | หน้าแรกของส่วนนี้ — ยอด 3 ก้อน · ลิงก์ · ทางไปเมนูย่อย · ปุ่มไปพอร์ทัล |
| แชร์ลิงก์ · QR | ในแอป | งานหลักที่ทำบ่อยสุด และทำบนมือถือสะดวกกว่า |
| รายได้ของฉัน | ในแอป | เฉพาะส่วนแบ่งของตัวเอง · กราฟ 6 เดือน · 5 แท็บ |
| กระเป๋า · ถอนเงิน | ในแอป | เหตุผลทั้งหมดที่คนเข้ามาส่วนนี้คือมารับเงิน |
| ยืนยันตัวตน | ในแอป | อัปโหลดไฟล์ได้ · บุคคลธรรมดาเท่านั้น · ไม่มีเซลฟี่ |
| บัญชีรับเงิน | ในแอป | ดูและแก้ได้ · ต้องใส่รหัสผ่านยืนยัน |
| ทีม · ผู้แนะนำของฉัน | พอร์ทัล | เฟสแรกไม่มีทีม · ต่อให้อนาคตมี แอปก็แสดงแค่ค่าคอมของตัวเอง |
| นิติบุคคล · ใบกำกับภาษี · VAT | พอร์ทัล | เฟสนี้ไม่รับนิติบุคคล — มีปุ่มในหน้ายืนยันตัวตนพาไป |
| ยอดละเอียด · ประวัติถูกตัด · CSV | พอร์ทัล | ของที่ดูนานๆ ครั้ง ทำบนจอมือถือไม่สนุก |
| timeline การถอนครบ 7 สถานะ | พอร์ทัล | แอปโชว์ 4 กลุ่มพอ กดดูละเอียดต่อได้ |
| การ์ดวัดผล · นับถอยหลังเป้า | พอร์ทัล | ออกแบบมาเพื่อเร่งเร้าให้คนขาย ขัดกับการเป็นแอปดูดวง |
| ประวัติการใช้งานบัญชี | พอร์ทัล | เรื่องความปลอดภัยของพอร์ทัล |
| ศูนย์แจ้งเตือน | พอร์ทัล | แอปมีระบบแจ้งเตือนของตัวเองอยู่แล้ว ไม่ทำซ้ำ |
| เห็นได้ | เห็นไม่ได้ |
|---|---|
| มีคนซื้ออะไร เมื่อไหร่ | ชื่อจริง เบอร์ อีเมลของผู้ซื้อ |
| จำนวนเงินส่วนแบ่งที่ได้ | อัตราส่วนแบ่งและโครงสร้าง pool |
ชื่อแบบปิดบัง เช่น ก***ญ | วอลเปเปอร์หรือดวงที่ผู้ซื้อสร้าง |
ไฟล์เอกสารยืนยันตัวตนส่งตรงเข้าพอร์ทัลกลาง ไม่เก็บใน storage ของแอป
เรียงตามผลกระทบ — ข้อบนสุดถ้าตอบอีกแบบ ต้องรื้อ flow ใหม่
| เรื่อง | คำถาม |
|---|---|
| API ต้องไม่ส่ง rate | ยืนยันว่า endpoint ส่งมาแต่จำนวนเงิน ไม่มี % หรือ pool structure ติดมา — ถ้าส่งมาถือว่าละเมิดกฎ No rate exposure ตั้งแต่ต้นทาง |
| ยอด “รอผ่านเป้ารอบนี้” | API ส่งมาเป็นก้อนแยกเลยไหม หรือแอปต้องคำนวณเอง — ถ้าต้องคำนวณเอง แปลว่าต้องรู้ rate ซึ่งผิดกฎข้อ 2 |
| คอมจากทีม | ถ้าอนาคตเปิดทีม API แยกได้ไหมว่าก้อนไหนจากยอดตัวเอง ก้อนไหนจาก upline — แอปจะแสดงแค่ของตัวเอง |
Payout Schedule | มี 2 รูปแบบในระบบ (TAKRA = วันที่ 1 และ 16 · Delima = ทุกวันศุกร์) — API ส่งเป็นข้อความสำเร็จรูปให้แสดงเลย หรือส่งข้อมูลดิบให้แอปประกอบประโยคเอง |
| นิติบุคคลที่มีอยู่แล้ว | ถ้าคนที่เป็นนิติบุคคลในพอร์ทัลล็อกอินเข้าแอป จะให้เห็นอะไร — กันไม่ให้เข้า · ดูได้แต่ถอนไม่ได้ · หรือ API ไม่ส่งเคสนี้มาเลย (ทางที่สะอาดสุดน่าจะเป็นข้อหลัง) |
| เปิด auto-approve ให้ dailyMu | พอร์ทัลมีระบบอนุมัติใบสมัครอยู่ — ตั้งเป็นอนุมัติอัตโนมัติสำหรับ tenant นี้ได้ไหม (เราตกลงแล้วว่าไม่มีสถานะ “รออนุมัติ” ในแอป) |
| อีเมลผู้ใช้ | API ส่งอีเมลจากบัญชี dailyMu มาให้ใช้เป็นปลายทาง 50 ทวิ ได้ไหม (แอปเก็บอีเมลตั้งแต่ตอนสมัครใช้แอปอยู่แล้ว · แก้ในแอปไม่ได้) |
| ลิงก์เข้าพอร์ทัล | มี one-time login link + return URL ให้ไหม — แอปมีปุ่มลิงก์ออกพอร์ทัล 6 จุด ถ้าผู้ใช้ต้องกรอกล็อกอินใหม่ทุกครั้ง กฎ “ของละเอียดให้ไปพอร์ทัล” ใช้ไม่ได้ทั้งข้อ |
| อัปโหลดเอกสาร | รับ multipart ตรงเลย หรือต้องขอ signed URL ก่อน · จำกัดขนาดและชนิดไฟล์เท่าไหร่ |
| เปลี่ยนบัญชี | พอร์ทัลรีเซ็ตสถานะ KYC เองไหม · การยืนยันรหัสผ่านทำที่ API ฝั่งไหน · ใครเป็นคนส่งอีเมลแจ้งเตือน |
| ลิงก์แนะนำ | ใครออกโค้ด · ผูกกับ user id ของ dailyMu หรือของพอร์ทัล · ทำเป็น deep link เข้าแอปได้ไหม |
| Inactive | เกณฑ์ไม่ล็อกอินของ dailyMu เท่าไหร่ · ถ้าไม่มีทีม การเป็น Inactive มีผลกับคอมของตัวเองไหม |