แชท LINE OA สำหรับลูกค้าและแอดมิน (sys-lineoa)
ระบบ /lineoa เป็นหน้าจอห้องแชทแบบ LINE Official Account ใช้จำลองการคุยกับลูกค้าและให้แอดมินใช้ AI ช่วยตอบ คำอธิบายใน metadata ระบุว่าเป็น "ระบบจำลองและบริหารแชทลูกค้า" ที่ต่อกับ DeepSeek AI และฐานข้อมูล (page.tsx:5-13) งานแชท AI และปุ่มเปิดบิลอยู่ที่ แชท AI เอกสารขายในแชท และปุ่มเปิดบิลจาก LINE OA (sys-lineoa-chat-ai) ส่วนการผูกบัญชี LINE กับอีเมลพนักงานอยู่ที่ ผูก LINE User ID กับอีเมลพนักงาน (sys-lineoa-line-binding)
ข้อสังเกตจากโค้ด: ค้นใน
backend/และfrontend/แล้วไม่พบการเรียก LINE Messaging API, webhook หรือการตรวจลายเซ็นของ LINE ข้อความทั้งหมดเกิดในหน้าจอนี้และส่งผ่าน/api/lineoaเท่านั้น ยังไม่มีการรับ-ส่งข้อความกับ LINE จริง
ใครใช้ และเปิดอย่างไร
- ถ้ายังไม่มี session หน้า
/lineoaจะส่งไป/loginและถ้ายังไม่เลือกฐานจะส่งไป/select-database(page.tsx:15-16) - เปิดจากการ์ด "แชท LINE OA (ศูนย์รวมแชทลูกค้า LINE)" รหัส
SYS-11ในกลุ่มgrowth(SystemPortalScreen.tsx:266-277) ตัวหน้าจอคือLineOaChatStudioที่ workspace host โหลดเมื่อ path ขึ้นต้นด้วย/lineoa(PersistentWorkspaceHost.tsx:54,:166,:562) ดู โครงหน้าเว็บและการนำทาง (App shell & routing) - โดเมนสาธิตเปิด
/lineoaได้โดยไม่ต้องล็อกอิน เพราะ path นี้อยู่ในBCDEMO_ALLOWED_PATHS(proxy.ts:10-25) และgetSessionสร้าง session สาธิตให้เมื่อคำขอมาจากโดเมนสาธิต (frontend/src/lib/session.ts:215-218) - หน้าจอมี 2 มุมมอง (
perspective):CUSTOMER_SIMULATORให้ผู้ใช้พิมพ์แทนลูกค้า และADMIN_COPILOTให้แอดมินสั่งงาน AI ค่าเริ่มต้นคือมุมมองลูกค้า (LineOaChatStudio.tsx:650-651,:1906-1923)
Endpoint ฝั่ง Next (/api/lineoa)
| Method / action | ทำอะไร |
|---|---|
GET |
ดึงข้อมูลจริงจากฐานมาแสดงในห้องแชท และอ่านการผูก LINE ของผู้ใช้ |
POST CHAT |
ส่งข้อความให้ AI ตอบ ดู แชท AI เอกสารขายในแชท และปุ่มเปิดบิลจาก LINE OA (sys-lineoa-chat-ai) |
POST CREATE_LINE_ORDER |
ปุ่มยืนยันเปิดบิลจาก Flex card ดู แชท AI เอกสารขายในแชท และปุ่มเปิดบิลจาก LINE OA (sys-lineoa-chat-ai) |
POST BIND_LINE_EMAIL / UNBIND_LINE_EMAIL |
ผูกหรือยกเลิกผูก LINE User ID กับอีเมล ดู ผูก LINE User ID กับอีเมลพนักงาน (sys-lineoa-line-binding) |
ชนิดของ action และ body อยู่ที่ route.ts:573-594 หน้าจอเรียก GET /api/lineoa ตอนเปิด (LineOaChatStudio.tsx:754-757)
ข้อมูลที่ GET อ่าน
route ส่ง SQL 8 ชุดไปที่ /query/batch ของ backend ในคำขอเดียว (route.ts:276-358, :369-378) ดู API ประตูอ่านข้อมูล /query — list, limit, batch (Query gateway read endpoints)
| ชุด | แหล่งข้อมูล |
|---|---|
| 0 KPI | จำนวนลูกค้าใน ar_customer, ผู้ซื้อที่มีเอกสารธง 40/36/44, จำนวนและยอดธง 44 และ 36 ใน ic_trans, มูลค่าสต็อก Σ balance_qty × average_cost และจำนวนสินค้าใน ic_inventory |
| 1 ลูกค้า | ar_customer + ar_customer_detail + ยอดซื้อจาก ic_trans ไม่เกิน 18 ราย ถ้าบางช่องว่างจะใส่ค่าตั้งต้นในโค้ด (ไม่คัดลอกมาที่นี่) |
| 2 สินค้า | ic_inventory เรียงตามมูลค่าคงเหลือ ไม่เกิน 18 รายการ |
| 3 เอกสารขายล่าสุด | ic_trans ธง 40/36/44 ไม่เกิน 24 ใบ |
| 4-5 คลัง | wms_stock_bin และ wms_fulfillment_order อย่างละไม่เกิน 12 แถว |
| 6 ขนส่ง | tms_trip_manifest ไม่เกิน 10 เที่ยว |
| 7 e-Tax | etax_document_log ไม่เกิน 10 แถว ดู ระบบใบกำกับภาษีอิเล็กทรอนิกส์ (sys-etax) |
- ถ้าเป็นฐาน
bcdemoและ KPI ไม่มีค่า จะใช้ตัวเลขสาธิตแทน ส่วนฐานอื่นใช้ 0 (route.ts:391-400) - คำตอบมี
dbContextSummaryซึ่งเป็นข้อความสรุปข้อมูลข้างต้นสำหรับส่งต่อให้ AI (:526-552) ถ้าเรียก backend ไม่ได้จะตอบok: trueพร้อมข้อความ "ใช้ข้อมูลเริ่มต้นชั่วคราว" (:555-570) - ก่อนดึงข้อมูล route อ่านการผูก LINE ผ่าน admin endpoint เมื่อมีกุญแจใน env
ADMIN_API_KEY(:228-275)
ความหมายของธงดูที่ รหัสชนิดเอกสาร trans_flag และทิศทางสต็อก (Trans Flag Map)
Session และบัญชีสาธิต
resolveDemoOrSessionToken ใช้ token จาก session ก่อน ถ้าไม่มี session จะล็อกอิน backend อัตโนมัติด้วยบัญชีสาธิตที่กำหนดในโค้ด (ไม่คัดลอกค่ามาที่นี่) แล้วใช้ฐานสาธิตแทน (route.ts:111-215)
ความสัมพันธ์กับระบบบัญชี
- GET อ่านอย่างเดียวจาก หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans), ทะเบียนลูกหนี้/ลูกค้า (ar_customer), รายละเอียดเงื่อนไขลูกหนี้ (ar_customer_detail) และ ทะเบียนสินค้า (ic_inventory)
- การเปิดบิลจากแชทเรียก ร้านค้าส่งออนไลน์ B2B (sys-market) และ ระบบบริหารความสัมพันธ์ลูกค้า (sys-crm) ต่อ แต่ไม่ได้เขียน
ic_transเอง ดู แชท AI เอกสารขายในแชท และปุ่มเปิดบิลจาก LINE OA (sys-lineoa-chat-ai)
ที่มาในโค้ด
frontend/src/app/lineoa/page.tsx:5-16metadata และ redirectfrontend/shared/layout/SystemPortalScreen.tsx:266-277การ์ดระบบ,frontend/shared/layout/PersistentWorkspaceHost.tsx:54,:166,:562โหลดหน้าจอfrontend/lineoa/LineOaChatStudio.tsx:650-651,:1906-1923มุมมองหน้าจอ,:754-757เรียก GETfrontend/src/app/api/lineoa/route.ts:111-215เลือก token และบัญชีสาธิตfrontend/src/app/api/lineoa/route.ts:228-275อ่านการผูก LINE,:276-358SQL 8 ชุด,:369-378ส่งเข้า/query/batchfrontend/src/app/api/lineoa/route.ts:391-400ค่า KPI สาธิต,:526-570รูปคำตอบ,:573-594ชนิดของ actionfrontend/src/proxy.ts:10-25path ที่โดเมนสาธิตเปิดได้,:66-70matcherfrontend/src/lib/session.ts:215-218session สาธิตตามโดเมน- ดูเพิ่ม: แชท AI เอกสารขายในแชท และปุ่มเปิดบิลจาก LINE OA (sys-lineoa-chat-ai) · ผูก LINE User ID กับอีเมลพนักงาน (sys-lineoa-line-binding) · ผู้ช่วย AI แบบกฎคำนวณ 6 ตัว (AI Copilot ai-*) · API โมดูลธุรกิจ /api/v1/{dashboard,crm,ai,wms,tms,procure,etax,market,autocare} (Business module endpoints)