#process#overview#hub#backend#router#handler
ภาพรวมกลุ่ม process ของ Backend
โฟลเดอร์ backend/internal/application/process/ คือชั้น Service ของงานที่ไม่ใช่รายการบัญชีหลัก ได้แก่ รายงาน, เอกสารและตารางสินค้า, ข้อมูลหลัก, ราคา/บาร์โค้ด, เครื่องมือสต็อกและระบบ, workflow, ผู้ช่วย AI และ POS โน้ตในโฟลเดอร์นี้ครอบคลุมเฉพาะกลุ่มที่ไม่ใช่บัญชี (กลุ่ม trans, gl, stock, cost, ap, pay, cheque, fx, fa, period ฯลฯ อยู่ในโน้ตของส่วนบัญชี ดู ภาพรวมระบบบัญชี SML AI Account (Accounting Overview)) ภาพรวมระบบ backend ทั้งหมดดู ภาพรวม Backend Go ของ SML Ai Account (Backend overview)
ทำงานอย่างไร
เส้นทางคำขอ: request -> dispatch -> handler -> service
- ในโค้ดไม่มีไฟล์
process.goเป็นตัวกระจายกลาง การกระจายคำขอแบ่งเป็น 2 ชั้นคือ route group ในrouter.goและ*_handler.goในadapter/inbound/http/process/(รายละเอียด ตัวกระจายคำขอของ process (Process dispatcher)) router.goลงทะเบียน/process(:127-167) และ/api/v1/process(:168-209) เป็นชุดเดียวกัน ผ่าน middlewareAuth(JWT) แล้วRequireRight(ex.Rights, processhttp.RequiredRight)ตรวจสิทธิ์เมนูก่อนถึง handler (ดู การตรวจสิทธิ์เมนูของ route process (Process route rights))- handler ถอด JSON เข้า struct ใส่
ProviderCode/DatabaseName/ ผู้ใช้จาก token (ฟิลด์เหล่านี้json:"-"ไม่รับจาก body) แล้วเรียกService Serviceขอ connection pool ของบริษัทผ่านcompanyPool(ctx, providerCode, databaseName)(ระบบหลายบริษัท) แล้วทำงานกับฐานข้อมูลของบริษัทนั้น- กลุ่ม POS แยกอีกชุดที่
/api/v1/pos/*(router.go:328-348) ใช้การยืนยันตัวตนแบบ token ของเครื่อง POS หรือ token ผู้ใช้ (ดู POS ซิงก์ข้อมูลเครื่องแคชเชียร์ ผูกเครื่อง/ดึงส่วนต่าง/กู้คืน/รูปภาพ (POS Device Sync))
แผนที่โน้ตทั้งหมดในหมวดนี้
ตัวกระจายและสิทธิ์
- ตัวกระจายคำขอของ process (Process dispatcher) - route group, ตาราง action ของแต่ละกลุ่ม, ตัวช่วย
serve, ขนาด body - การตรวจสิทธิ์เมนูของ route process (Process route rights) -
routeRightsและRequiredRightแปลง route เป็นสิทธิ์เมนู (route ที่ไม่รู้จักถือเป็นสิทธิ์ผู้ดูแล) - สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf) - สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (
perm_wh_shelf) - ชื่อเมนูจากไฟล์เมนู SML ฝังในไบนารี (Menu Title / smlMenu.json) -
smlMenu.jsonฝังในไบนารี ใช้หาชื่อเมนูไทยเติมหัวรายงาน
รายงาน
- เครื่องมือรายงานฝั่ง Backend (Report engine / RunReport) -
RunReportเครื่องมือรายงานฝั่ง backend - ทะเบียนรายงานรายเมนูและเงื่อนไขกรอง (Menu report registry & conditions) - ทะเบียนรายงานรายเมนูและเงื่อนไขกรอง
- SQL กำหนดเองและเทมเพลตรายงาน (Custom SQL & report templates) - SQL กำหนดเองและเทมเพลตรายงาน
- การจัดกลุ่มหลายระดับและการพิมพ์ PDF รายงาน (Report hierarchy & PDF) - จัดกลุ่มหลายระดับและพิมพ์ PDF (ฟอนต์ไทยฝังในไบนารี)
เอกสารและตารางสินค้า
- บันทึก/ลบเอกสารนอก ic_trans แผนคำสั่งเอกสาร และรายการเอกสารหนี้ค้างชำระ (Save Doc / Doc Plan) -
doc/save,doc/delete,doc/billsสำหรับap_ar_trans/gl_journalและรายการหนี้ค้างชำระ - ยกเลิกและอนุมัติเอกสาร (Document cancel / approve) - ยกเลิกและอนุมัติเอกสาร
- สถานะต่อเนื่องของเอกสาร กราฟโยงเอกสาร และเลขที่เอกสารถัดไป (Doc flow & numbering) - สถานะต่อเนื่องของเอกสาร กราฟโยงเอกสาร เลขที่เอกสารถัดไป
- แนบรูปเอกสารและรูปสินค้า (Document & item pictures) - แนบรูปเอกสารและรูปสินค้า
- ตารางสินค้า: คำนวณแถว สูตรลัด และ action ของ transgrid (Item grid calc) -
transgridคำนวณแถว สูตรลัด ยอดรวม นำเข้าอ้างอิง - ตัวกรองหน้าค้นหา (Lookup filters: party / ref-doc / warehouse / held items) - ตัวกรองหน้าค้นหา (คู่ค้า, เอกสารอ้างอิง, คลัง, สินค้าถูกกัน)
ข้อมูลหลัก ราคา บาร์โค้ด
- ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ และเลย์เอาต์รายการ (Master-detail, code auto-run, DataList) - ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ เลย์เอาต์ DataList
- ข้อมูลสินค้าและข้อมูลสินค้าเพิ่มเติม (Item master & item detail) - ข้อมูลสินค้าและข้อมูลสินค้าเพิ่มเติม
- เครื่องมือหาราคาและแก้ราคา (Price engine / price center / modify price) - เครื่องมือหาราคา ศูนย์ราคา และแก้ราคา (
modifyprice) - บาร์โค้ดสินค้า ส่วนลดบาร์โค้ด EAN13 และพิมพ์ป้าย (Barcode menus 2.1.7-2.1.17) - บาร์โค้ดสินค้า ส่วนลดบาร์โค้ด EAN13 พิมพ์ป้าย
เครื่องมือสต็อกและระบบ
- เครื่องมือสต็อก กลุ่ม route stocktools (Stock Tools) - กลุ่ม
stocktools(ตรวจบาร์โค้ด, ซีเรียล, ล็อต, ยอดยกมา, ฯลฯ) - ต้นทุนแฝง เฉลี่ยค่าใช้จ่ายเข้าสินค้า (Hidden Cost, เมนู 2.22) - ต้นทุนแฝง เฉลี่ยค่าใช้จ่ายเข้าสินค้า
- เครื่องมือกระบวนการระบบ ตรวจ ic_trans / คำนวณแต้มใหม่ / นำเข้าที่อยู่จัดส่ง (Sysproc Tools) - ตรวจ
ic_trans, คำนวณแต้มใหม่, นำเข้าที่อยู่จัดส่ง - เปลี่ยนรหัสหลัก สินค้า/ลูกหนี้/เจ้าหนี้/ผังบัญชี (Change Code) - เปลี่ยนรหัสหลัก สินค้า/ลูกหนี้/เจ้าหนี้/ผังบัญชี
- โหลดข้อมูลจังหวัด/อำเภอ/ตำบลมาตรฐาน (Province Load) - โหลดจังหวัด/อำเภอ/ตำบลมาตรฐาน
- กลุ่ม route workflow เมนูกระบวนการระบบ (Workflow Menus) - กลุ่ม
workflow(เมนูกระบวนการระบบ) - ผู้ช่วย AI แบบกฎคำนวณ 6 ตัว (AI Copilot ai-*) - ผู้ช่วย AI แบบกฎคำนวณ
ai-*6 ตัว
POS
- POS ซิงก์ข้อมูลเครื่องแคชเชียร์ ผูกเครื่อง/ดึงส่วนต่าง/กู้คืน/รูปภาพ (POS Device Sync) - ผูกเครื่อง ดึงส่วนต่างข้อมูล กู้คืน รูปภาพ
- POS รับบิลขายจากเครื่องแคชเชียร์ กล่องรับบิล/ประมวลผล/ยกเลิก/ตัดสต็อกเป็นชุด (POS Bill Inbox) - กล่องรับบิลขาย ประมวลผลเป็น flag 44, ยกเลิก, ตัดสต็อกเป็นชุด
- POS ตั้งค่าร้าน/เครื่อง/โปรโมชัน และกะขาย รับ-ส่งเงิน (POS Config and Shift) - ตั้งค่าร้าน/เครื่อง/โปรโมชัน และกะขาย รับ-ส่งเงิน
ลำดับอ่านที่แนะนำ
- เข้าใจโครงก่อน: ตัวกระจายคำขอของ process (Process dispatcher) -> การตรวจสิทธิ์เมนูของ route process (Process route rights)
- งานเอกสาร: บันทึก/ลบเอกสารนอก ic_trans แผนคำสั่งเอกสาร และรายการเอกสารหนี้ค้างชำระ (Save Doc / Doc Plan) -> สถานะต่อเนื่องของเอกสาร กราฟโยงเอกสาร และเลขที่เอกสารถัดไป (Doc flow & numbering) -> ยกเลิกและอนุมัติเอกสาร (Document cancel / approve) -> ตารางสินค้า: คำนวณแถว สูตรลัด และ action ของ transgrid (Item grid calc)
- งานรายงาน: เครื่องมือรายงานฝั่ง Backend (Report engine / RunReport) -> ทะเบียนรายงานรายเมนูและเงื่อนไขกรอง (Menu report registry & conditions) -> การจัดกลุ่มหลายระดับและการพิมพ์ PDF รายงาน (Report hierarchy & PDF)
- งาน POS: POS ซิงก์ข้อมูลเครื่องแคชเชียร์ ผูกเครื่อง/ดึงส่วนต่าง/กู้คืน/รูปภาพ (POS Device Sync) -> POS รับบิลขายจากเครื่องแคชเชียร์ กล่องรับบิล/ประมวลผล/ยกเลิก/ตัดสต็อกเป็นชุด (POS Bill Inbox) -> POS ตั้งค่าร้าน/เครื่อง/โปรโมชัน และกะขาย รับ-ส่งเงิน (POS Config and Shift)
ขอบเขตที่ยังไม่ครอบคลุม (ยังไม่ยืนยัน)
- ไฟล์
uat*มีเฉพาะไฟล์ทดสอบ (uat_s1_fixes_test.go) จึงไม่มีโน้ต - ตัวฟังก์ชัน
report_menu_*และservice.goอ่านเฉพาะส่วนที่เกี่ยวกับโน้ตแต่ละเรื่อง ไม่ได้อ่านครบทุกบรรทัด - ไฟล์
docs.goเขียนเฉพาะกลไก ส่วนรายละเอียดบัญชีของap_ar_trans/gl_journalดู ภาพรวมระบบบัญชี SML AI Account (Accounting Overview)
ที่มาในโค้ด
backend/internal/adapter/inbound/http/router.go:40-57-ExtraHandlersของ processbackend/internal/adapter/inbound/http/router.go:127-209- route group/processและ/api/v1/processbackend/internal/adapter/inbound/http/router.go:328-348- route กลุ่ม POSbackend/internal/adapter/inbound/http/process/permission.go:20-24- ตารางสิทธิ์routeRightsbackend/internal/application/process/menu_title.go:10- ไฟล์เมนูที่ฝังในไบนารี