#standards#report#pdf#thai#backend
ตัดคำไทยใน PDF และรายงานหลายชั้น
PDF รายงานสร้างฝั่ง Go (report_pdf.go) ต้องตัดบรรทัดไทยโดยไม่แยกสระ/วรรณยุกต์ออกจากพยัญชนะ และรองรับรายงานแม่-ลูกหลายชั้นด้วยยอดรวมที่คำนวณด้วย *big.Rat
ตัดคำไทย (ชื่อฟังก์ชันตรวจกับโค้ดจริง)
- KMS เรียกว่า
wrapThaiTextSmart/ skill เรียกwrapThaiAwareLine— ทั้งสองชื่อไม่พบในโค้ดปัจจุบัน (ไฟล์/ฟังก์ชันอ้างอิงไม่พบแล้ว) ฟังก์ชันจริงที่ทำหน้าที่นี้ในreport_pdf.go:ฟังก์ชัน บรรทัด หน้าที่ isThaiCombiningRune1588 ตรวจตัวอักษรไทยที่ต้องติดพยัญชนะ (สระบน/ล่าง วรรณยุกต์) splitIntoGraphemeClusters1602 แตกข้อความเป็น grapheme cluster ก่อนวัดความกว้าง isThaiLeadingVowel1678 สระหน้า ( เ แ โ ไ ใ) ห้ามค้างท้ายบรรทัดsegmentThaiTokens1688 แบ่งคำไทยเป็นโทเค็นตามขอบเขตคำ wrapHeaderLabelToLines1800 ตัดหัวคอลัมน์ wrapGraphemeFallback/wrapLongToken1837 / 1862 ตัดโทเค็นยาวทีละ cluster เมื่อไม่มีจุดตัดคำ wrapTextToLines2043 ตัดข้อความเซลล์ตามความกว้างจริง normalizeThaiUpstairsMarks404 ปรับสระ/วรรณยุกต์ที่ซ้อนบนให้แสดงถูก - กฎ: ห้ามแยกสระหน้า (
เ แ โ ไ ใ) หรือวรรณยุกต์ออกจากพยัญชนะ และตัวเลขต้องไม่ถูกตัดกลาง (fitPDFNumbers,widenPDFNumericColumnsขยายคอลัมน์ตัวเลขก่อน) - ค่า
0/0.00ใน PDF แสดงว่าง (isZeroNumericString,report_pdf.go:2101) และจัดรูปformatNumberWithCommas(:2126)
รายงานหลายชั้น (Multi-Level Hierarchical Report)
- ตัวสร้าง:
buildReportMultiLevelHierarchy(&res, groupByColumn, subGroupByColumn)ในreport_hierarchy.go:51เรียกจากreport.go:370(ชื่อไฟล์นี้ไม่ได้อยู่ใน KMS แต่เป็นที่ตั้งจริงของตรรกะหลายชั้น) - โครงสร้าง:
ReportHierarchyLevel(Level 1 Root / 2 SubGroup,KeyColumn,LabelColumn,ExtraColumns,TitlePrefix) และReportGroupNode(Subtotals,OpeningValue,Children) - ตรวจโครงสร้างอัตโนมัติ: บัญชีคุมสต็อกพิเศษ (2.24.6, 2.25.2, 2.25.3), ยอดคงเหลือตามคลัง/ชั้นเก็บ/ล็อต, ประวัติซื้อ-ขาย, สูตรชุดสินค้า, ราคา, ลูกหนี้-เจ้าหนี้เคลื่อนไหว/Ageing, รายละเอียดเอกสาร, GL/สมุดรายวัน
- ผู้ใช้เลือกจัดกลุ่ม 1 หรือ 2 ชั้นเองได้ผ่าน
groupByColumn+subGroupByColumnกับรายงานหรือ SQL On-The-Fly - ตัวอย่างจาก KMS: ชั้น 1 แสดงรหัส/ชื่อสินค้า ชั้น 2 แสดงรายการเคลื่อนไหวพร้อมชื่อลูกค้า/เจ้าหนี้
- ยอดรวม: ใช้
*big.Ratทุกกลุ่ม; คอลัมน์เคลื่อนไหว (จำนวนเพิ่ม/ลด, มูลค่าเพิ่ม/ลด) รวมทุกบรรทัดในกลุ่ม ส่วนคอลัมน์ยอดคงเหลือสะสม (running balance, ต้นทุนเฉลี่ย) เอาค่า แถวสุดท้ายของกลุ่ม และ Grand Total รวมจากยอดสุดท้ายของแต่ละกลุ่มชั้น 1 — ห้ามรวมซ้ำทีละบรรทัด
ที่มา
docs/kms/KMS_SMLWORK_UX_REPORT_AUTH_MAP_STANDARDS.mdWorkflow §3 (ตัดคำไทยอัจฉริยะ, รายงานหลายชั้น).agents/skills/report-and-form-engine/SKILL.mdWorkflow 1 ข้อ 1backend/internal/application/process/report_pdf.go,report_hierarchy.go(อ่านโค้ดจริง)
ดูเพิ่ม
สารบัญมาตรฐานและกฎเหล็กของ SML Ai Account (Standards Overview) · มาตรฐาน Engine รายงานกลางและตัวออกแบบ JSON-First (Global Report Engine) · ความถูกต้องของข้อมูล: เงิน ภาษี Transaction เดียว และ Rebuild (Data Integrity, big.Rat, ExecBatch) · ภาพรวม Backend Go ของ SML Ai Account (Backend overview) · ภาพรวมระบบบัญชี SML AI Account (Accounting Overview)