#standards#porting#csharp#kms#frontend#uat
ถอดแบบหน้าจอจาก C# เดิม (Source-First)
โปรเจกต์นี้พัฒนาต่อยอดจากโค้ดเดิม D:\sml\ (C#/Java) โดยใช้โค้ดเดิมเป็น KMS (ฐานความรู้ตรรกะธุรกิจ) เท่านั้น และเดินหน้าอย่างเดียว (Forward-Only) ห้ามแก้ย้อนกลับเว้นลุงจืดสั่ง (AGENTS.md ข้อ 11) ก่อนทำหน้าจอใหม่หรือแก้ฟิลด์ต้องไล่โค้ด C# ให้ครบ ห้ามเดาโครงหน้าจอ
กฎ/วิธีทำ: ลำดับสืบค้น C# (Source-First Flow)
- เริ่มที่
D:\sml\SMLCM(Program.cs→SMLAccount) หาmenuKeyในD:\sml\SMLAccount\Menu.Designer.csเพื่อดูชื่อเมนู ตำแหน่งใน Tree และTag - ไล่
case "<menuKey>":ใน_selectMenu.csของโมดูลSMLERPGlobal,SMLERPConfig,SMLERPControl,SMLERPIC,SMLERPAP,SMLERPAR,SMLERPGL,SMLERPASSET,SMLPOSControlและSMLAccount\_mainForm.csเพื่อดูว่า case สร้าง UserControl/Form คลาสใด และส่งโหมดอะไรเข้าไป (ตรวจแล้ว: ไฟล์เหล่านี้มีอยู่จริงในD:\sml\) - แกะ
.csและ.Designer.csให้ลึก เพื่อหาฟิลด์/แท็บที่ซ่อนอยู่_myScreen: ดู_maxColumn(1 = เรียงคอลัมน์เดียวเต็มบรรทัดcolSpan: 12, 2 = ซ้าย-ขวาcolSpan: 6) ห้ามยุบ/แยกคอลัมน์เอง แล้วไล่ทุก_addTextBox,_addNumberBox,_addDateBox,_addCheckBox,_addComboBox,_addRadioButtonพร้อมพิกัด(row, column, rowSpan, colSpan)- UserControl ลูก (เช่น
_warehouseLocationControl,_userGroupDetailControl,_screen_more,_grid...) ต้องเปิด.cs/.Designer.csของลูกทุกตัว _myTabControl: ดูทุกTabPageที่ประกาศและที่เพิ่มด้วยTabPages.Add/_glCreate()และตรวจTabPages.RemoveAt,Dispose(),Visible = falseใน Constructor/Load (แท็บอาจถูกซ่อนตอนรัน)_myGrid/ToolStrip: ไล่ทุก_addColumn(รวม Checkbox, Lookup F2, Display Subquery) และปุ่มพิเศษเหนือตาราง เช่นAll WareHouse and Shelf,เลือกทั้งหมด,Clear,ดึงข้อมูล- Parent Filter: ตรวจ
_searchTopScreen/_extraWhereที่บังคับเลือกกลุ่มแม่ก่อน เช่น จังหวัด → อำเภอ → ตำบล, กลุ่มหลัก → กลุ่มย่อย, คลัง → ที่เก็บ
- ผังหน้าจอธุรกรรม (AGENTS.md ข้อ 8): ถอด
_icTransControl,_icTransScreenTopControl,_icTransItemGridControl,_glCreate(),_icTransScreenMoreControlครบทุกฟิลด์ตามinformation_schema.columns
C# เป็นความจริงสูงสุด (ห้ามตัดฟิลด์เพราะ DB เก่า)
- โครงตาราง/คอลัมน์ใน C# (
_g.d.<table>._tableในD:\sml\SMLERPGlobal\_data.cs) และ Java เป็นความจริงสูงสุด ฐานsmldemoอาจเป็นรุ่นเก่า - พบคอลัมน์/ตารางที่มีใน C# แต่ DB ยังไม่มี ห้ามตัดฟิลด์ออกจากหน้าจอ ให้รัน
ALTER TABLE ... ADD COLUMN IF NOT EXISTSหรือCREATE TABLE IF NOT EXISTSให้ DB รองรับตาม C# ครบ 100% - ระวังชื่อคอลัมน์สะกดต่างกันตามนิยามจริง เช่น
ic_shelf.whcode(ไม่มี_) เทียบic_wh_shelf.wh_code(มี_)
ตรวจฝั่ง Frontend คู่กัน
- เปิด
frontend/account/tabs/screenRegistry.tsxดูว่าmenuKeyวิ่งไป Component หรือ Schema ใด (frontend/src/config/schemas/icMasterSchemas.ts,masterDetailSchemas.ts) — skill เขียนพาธเป็นfrontend/account/screenRegistry.tsxซึ่งไม่พบแล้ว ของจริงอยู่ในtabs/ - ต้องตรง C# 100%: ทุกฟิลด์ที่ C# มีต้องแสดง (ไม่ซ่อนใน conditional), จำนวน/ชื่อ/ลำดับแท็บ, การจัด Row/Column
- Backend Spec
backend/internal/application/process/master_detail_specs.goต้องบันทึก/โหลดครบทุกฟิลด์และตารางย่อย (ตรวจแล้ว: ไฟล์มีอยู่จริง) - หน้าจอต้องไม่ถูกดัดแปลง Layout: ห้ามยุบตารางหลายตัวเป็นแท็บย่อยเอง ถ้าจอเดิมเรียงแนวตั้งต้องเรียงแนวตั้ง (AGENTS.md ข้อ 6) รูปแบบ Header/Toolbar/ธีมดู Header และ Toolbar 2 แถว ธีมการ์ด และสีพื้นหลัง Widget (EmployeeScreen Standard) และชนิดช่องกรอกดู ช่องกรอกมาตรฐานและกฎป้ายข้อความ (NumberBox, DateBox, CodeBox, LookupBox, ห้าม F1-F12)
ยืนยันผลและขอบเขตงาน
- ทดสอบเปิดหน้าจอจริงด้วย Playwright กดทุกแท็บย่อย ไม่มี SQL/Console Error และทดสอบบันทึก/อ่านผ่าน Playwright API Request คู่กับ query DB เสมอ (UAT Swarm 32 บอท: คำสั่ง DSL และกติกาผู้ทดสอบขี้สงสัย (UAT Swarm DSL, Skeptical Tester))
- ผู้ทดสอบต้องอ่านโค้ดหน้าจอจริงก่อนวางแผน (Code-First) แล้วตรวจ
Screen + Every Button + DB CRUD + API + Report/PDFใช้ข้อมูลUAT-ตั้งautoIssueMate = trueและแตกสคริปต์ขนาน 8–16+ ตัว (porting §23) - ห้ามสร้าง/แก้/ลบไฟล์นอก
d:\smlaiaccount(รวมD:\sml\): ถ้าต้องแก้ ให้เขียน Prompt สำเร็จรูประบุไฟล์เป้าหมาย สาเหตุ โค้ดที่แก้ และวิธีตรวจรับ ให้ลุงจืดสั่ง AI อื่นทำ (porting §24, กฎขอบเขตงานและกฎเหล็กประจำ repo (Repo Scope & Iron Rules))
ที่มา
AGENTS.mdข้อ 5, 6, 8, 11 (โฟลว์สืบค้นเมนู, ห้ามดัดแปลง Layout, ถอดหน้าจอธุรกรรม, Forward-Only).agents/skills/csharp-frontend-deep-inspect/SKILL.md§1–§4docs/SMLERP_SCREEN_PORTING_STANDARDS.md§23–§24 (ไฟล์มีเฉพาะสองหัวข้อนี้)
ดูเพิ่ม
สารบัญมาตรฐานและกฎเหล็กของ SML Ai Account (Standards Overview) · Header และ Toolbar 2 แถว ธีมการ์ด และสีพื้นหลัง Widget (EmployeeScreen Standard) · ช่องกรอกมาตรฐานและกฎป้ายข้อความ (NumberBox, DateBox, CodeBox, LookupBox, ห้าม F1-F12) · UAT Swarm 32 บอท: คำสั่ง DSL และกติกาผู้ทดสอบขี้สงสัย (UAT Swarm DSL, Skeptical Tester) · กฎขอบเขตงานและกฎเหล็กประจำ repo (Repo Scope & Iron Rules) · ภาพรวม Frontend ของ SML Ai Account (Frontend overview)