#standards#ux#i18n#calendar#frontend#backend
ปีปฏิทิน พ.ศ./ค.ศ. และระบบ 2 ภาษา
กฎข้อ 4, 17, 21: ฐานข้อมูลเก็บปี ค.ศ. เท่านั้น ส่วนหน้าจอ รายงาน และ PDF เปลี่ยนตามค่า erp_option.year_type ทันที ภาษาหน้าจอสลับไทย/English ได้ทั้งหน้า
กฎปีปฏิทิน (year_type)
- DB (PostgreSQL) เก็บวันที่เป็น
YYYY-MM-DDค.ศ. 100% — ห้ามบันทึกปี พ.ศ. (25xx) ลงตาราง ต้องแปลงเป็น ค.ศ. ก่อนบันทึก erp_option.year_type:0หรือว่าง = ค.ศ.,1= พ.ศ. (บวก 543)- แสดงผล
DD/MM/YYYYที่DateBox.tsx,dateText.ts(isoToDmy(val, yearType)),numeric.ts(getSmlYearType()บรรทัด 394,formatSmlDate()บรรทัด 422) - ฝั่ง Backend รายงาน/PDF ใช้
year_typeในreport.go,report_menu_so_po.go,report_menu_gl_fa.go,report_pdf.go(เดิมบวก 543 ตายตัว แก้เป็นตามyear_typeแล้ว) - โทเคน
ปปปปในรูปแบบเลขที่เอกสาร (stock_tools.goautoRunPattern) เป็นรูปแบบข้อความของเลขที่ ไม่ใช่การเก็บวันที่ จึงคงไว้ - สลับฐานข้อมูลแล้วต้องล้างแคชค่าตั้งต้น:
invalidateSmlSettings()(numeric.ts:516) —api-client.tsเรียกให้อัตโนมัติหลัง login/เลือกฐานข้อมูล - ระวังวันที่ timezone:
new Date("YYYY-MM-DD")เป็นเที่ยงคืน UTC ทำให้เครื่อง timezone ช้ากว่าแสดงวันก่อนหน้า ให้แยก Y/M/D เป็นวันที่ท้องถิ่น (formatThaiDateในutils.tsแก้แล้ว) และค่าเริ่มต้น "วันนี้" ใช้todayLocal()ไม่ใช่toISOString() GlobalYearTypeFormatter.tsxตามที่ KMS อ้างไม่พบในโค้ดแล้ว (ไฟล์อ้างอิงไม่พบแล้ว);frontend/src/components/ui/DateBox.tsxก็ไม่พบ ของจริงอยู่frontend/shared/ui/DateBox.tsx
ระบบ 2 ภาษา (ไทย / English) และ Balloon Help (กฎข้อ 21)
- ปุ่มธงชาติบน Topbar สลับภาษาทั้งหน้าจอทันที (skill อ้าง
LanguageContextค่าth|en— ชื่อ context นี้ไม่พบเป็นไฟล์ใน source ปัจจุบัน) - รายงานและแบบฟอร์มสลับภาษาแยกอิสระ (
ไทย / English / TH+EN) จากภาษาหน้าจอหลัก ผ่านdata-independent-lang="true"(ตรวจแล้วในfrontend/account/report/UniversalReportScreen.tsx:1085) สลับทั้งหัวรายงาน ชื่อคอลัมน์ ข้อมูลหลักสองภาษา (name_1/name_eng_1) และคำอ่านจำนวนเงินบาท (numberToThaiBahtText/numberToEnglishBahtText) - Balloon Help: ชี้เมาส์ที่ป้ายฟิลด์/ปุ่มแล้วแสดงคำอธิบายจากคลัง JSON
frontend/src/config/help/data/ผ่านGlobalBalloonHelp.tsx(ตำแหน่งจริงfrontend/shared/components/GlobalBalloonHelp.tsx; skill อ้างfrontend/src/components/common/ซึ่งไม่พบแล้ว) - ข้อความ UI ทุกส่วนเน้นภาษาไทยที่เข้าใจง่าย
ตัวอย่าง (ตามที่ skill ให้)
เก็บ DB: 2026-10-30
yearType=1 แสดง 30/10/2569
yearType=0 แสดง 30/10/2026
ที่มา
AGENTS.mdกฎข้อ 4, 17, 21docs/kms/KMS_SMLWORK_UX_REPORT_AUTH_MAP_STANDARDS.md§4 + Limitationdocs/kms/KMS_SECURITY_DATA_INTEGRITY_LESSONS.mdข้อ N5, N6, M8 และรอบที่ 3 (รายงานตามyear_type).agents/skills/report-and-form-engine/SKILL.mdWorkflow ข้อ 3
ดูเพิ่ม
สารบัญมาตรฐานและกฎเหล็กของ SML Ai Account (Standards Overview) · ช่องกรอกมาตรฐานและกฎป้ายข้อความ (NumberBox, DateBox, CodeBox, LookupBox, ห้าม F1-F12) · มาตรฐาน Engine รายงานกลางและตัวออกแบบ JSON-First (Global Report Engine) · ความถูกต้องของข้อมูล: เงิน ภาษี Transaction เดียว และ Rebuild (Data Integrity, big.Rat, ExecBatch) · ภาพรวม Frontend ของ SML Ai Account (Frontend overview)