ระบบบริหารความสัมพันธ์ลูกค้า (sys-crm)
ระบบ /crm เป็นแดชบอร์ดงานขายที่อ่านข้อมูลลูกค้าและเอกสารขายจริงจากฐานบัญชี มาแสดงเป็นกระดานดีล โปรไฟล์ลูกค้า 360 องศา ตารางโทรติดตาม การจัดเกรดลูกค้า และผลงานทีมขาย ชื่อหน้าใน metadata คือ "ระบบบริหารความสัมพันธ์ลูกค้า (Smart CRM 360°)"
ใครใช้ และเปิดอย่างไร
- ทีมขายที่ล็อกอินและเลือกฐานข้อมูลแล้ว เปิดได้จากการ์ด "CRM (บริหารความสัมพันธ์ลูกค้า 360°)" ในกลุ่ม
growthหรือพิมพ์/crmตรง ๆ ดู โครงหน้าเว็บและการนำทาง (App shell & routing) - หน้าจอเลือกได้ 5 โมดูล (
CrmModuleId):kanbanกระดานดีลการขาย,customer360โปรไฟล์ลูกค้า 360 องศา,followupตารางโทรติดตามและนัดหมาย,rfmจัดเกรดลูกค้า VIP และsalesteamผลงานทีมขาย (CrmDashboard.tsx:57-62,:930-960)
Endpoint
| Method / path | handler | ทำอะไร |
|---|---|---|
GET /api/v1/crm/overview |
Overview |
KPI ดีล ลูกค้า และทีมขาย |
GET /api/v1/crm/activities |
ListActivities |
ประวัติการติดต่อลูกค้า |
POST /api/v1/crm/activities |
CreateActivity |
บันทึกการติดต่อพร้อมรูป |
POST /api/v1/crm/upload |
UploadImage |
อัปโหลดรูปเข้า MinIO |
GET /api/v1/crm/image |
ServeImage |
ส่งรูปหรือภาพย่อจาก MinIO |
ทั้งหมดอยู่หลัง middleware Auth (router.go:260-268) รายละเอียดการบันทึกกิจกรรมและรูปอยู่ที่ บันทึกการติดต่อลูกค้าและรูปใน MinIO (sys-crm-activity-images)
ข้อมูลที่ Overview อ่าน (handler.go:155-250)
| ส่วน | แหล่งข้อมูล |
|---|---|
| KPI | ic_trans ธง 40 (ใบเสนอราคา), 36 (ใบสั่งขาย), 44 (ขาย), 48 (ลดหนี้) นับจำนวนและรวม total_amount ส่วน ap_ar_trans ธง 41 (วางบิล) และ 43 (รับชำระ) รวม total_net_value |
| กราฟ pipeline รายวัน | ยอดธง 40+36 เทียบกับยอดปิดการขายธง 44 |
| Customer 360 | ar_customer + ar_customer_detail + ยอดซื้อจาก ic_trans |
| ดีล | เอกสารธง 40/36/44 พร้อมรายการสินค้าจาก ic_trans_detail |
| ทีมขาย | erp_user ไม่เกิน 15 คน |
ความหมายของธงดูที่ รหัสชนิดเอกสาร trans_flag และทิศทางสต็อก (Trans Flag Map) และเอกสาร ใบเสนอราคาขาย (Sales Quotation) · ใบสั่งขายสินค้า (Sales Order) · ขายสินค้า/บริการ และใบกำกับภาษีเต็มรูป (Sales Invoice)
กระดานดีลและเกรดลูกค้า
- ขั้นของดีลมาจากธงเอกสาร: 40 เป็น
qt, 36 เป็นsoและธงอื่นเป็นwonชื่อผู้ดูแลดีลวนตามรายชื่อทีมขาย (handler.go:340-370) - ลูกค้าที่ยังไม่มีเอกสารเลยถูกสร้างเป็นการ์ด
leadไม่เกิน 6 ใบ ยอดดีลตั้งเป็น 1,850,000 + ลำดับ × 640,000 (:376-402) - เกรดลูกค้าคิดในหน้าจอจากยอดซื้อรวม: ≥ 18,000,000 เป็น VIP Diamond, ≥ 9,000,000 เป็น Gold Loyal, > 0 เป็น Silver Active ต่ำกว่านั้นเป็นลูกค้ามุ่งหวัง (
CrmDashboard.tsx:145-180)
ข้อสังเกตจากโค้ด: ยอดของการ์ด
leadเป็นตัวเลขสาธิต และการเลื่อนขั้นดีลหรือสร้างดีลใหม่บนกระดาน (advanceDealStage,handleCreateNewDeal) เปลี่ยนเฉพาะ state ในเบราว์เซอร์ ไม่มีการเรียก API (CrmDashboard.tsx:611-644)
ความสัมพันธ์กับระบบบัญชี
- CRM อ่านอย่างเดียวจาก หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans), รายการสินค้าในเอกสาร (ic_trans_detail), ทะเบียนลูกหนี้/ลูกค้า (ar_customer), รายละเอียดเงื่อนไขลูกหนี้ (ar_customer_detail), หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) และ erp_user — ผู้ใช้/พนักงานในฐานบริษัท ไม่ได้เขียนเอกสารขาย
- ตารางที่ CRM เขียนเองคือ
crm_customer_activityระบบ POS และ Market ก็เขียนตารางนี้ตรงด้วย (pos_bill.go:267) ดู ราคาขั้นบันได คูปอง และการสั่งซื้อ B2B ที่ซิงก์ข้ามระบบ (sys-market-checkout-sync) ส่วน LINE OA เรียกPOST /api/v1/crm/activitiesแต่ส่งชื่อฟิลด์ไม่ตรง ดู แชท AI เอกสารขายในแชท และปุ่มเปิดบิลจาก LINE OA (sys-lineoa-chat-ai) - วงจรขายของบัญชีอยู่ที่ ขายถึงรับเงิน (Order-to-Cash)
ที่มาในโค้ด
frontend/src/app/crm/page.tsx:6metadatafrontend/crm/CrmDashboard.tsx:57-64โมดูลและขั้นดีล,:145-180เกรดลูกค้า,:347ดึง overview,:611-644ปุ่มบนกระดาน,:930-960ป้ายโมดูลfrontend/shared/layout/SystemPortalScreen.tsx:250-259การ์ดระบบ,frontend/shared/layout/PersistentWorkspaceHost.tsx:158จับคู่เส้นทางbackend/internal/adapter/inbound/http/router.go:260-268route/api/v1/crmbackend/internal/adapter/inbound/http/crm/handler.go:155-250SQL ของ overview,:340-402ขั้นดีลและการ์ดlead- ดูเพิ่ม: บันทึกการติดต่อลูกค้าและรูปใน MinIO (sys-crm-activity-images) · API โมดูลธุรกิจ /api/v1/{dashboard,crm,ai,wms,tms,procure,etax,market,autocare} (Business module endpoints) · ชนิดเอกสาร / รหัสเอกสาร (document type / trans_flag)