# ชุดฝึก S3: ตรวจภาพโครงสร้างที่เข้าถึงยาก

`TRAIN-CSS-01` · `CSS-RULE-v1` · 14 แถวกายภาพ · 13 record ID · 14 แนวคำตอบ · 13 ตุลาคม 2569

ข้อมูลทั้งหมดเป็น **synthetic_training_data** ที่ผู้เขียนแต่งเป็นคำบรรยายภาพ ไม่มีไฟล์ภาพของแถว CSV ไม่มีพิกัดโลก ภาพเสมือนจริงในบทเรียนเป็นเพียงภาพประกอบบริบท ไม่ใช่ภาพของ `R01–R13`. `expected.csv` เป็น **expected_training_result** ตามกฎโจทย์ ไม่ใช่ผลตรวจโครงสร้าง ผลรันระบบ ผลผู้เรียน หรือผลภาคสนาม. ผู้ตรวจเฉพาะสาขา `not_assigned`, P3 `pending_field_review`, P5 B/O/D `0/0/0 NOT_RUN`, CLO/PLO `pending_design`.

## คำขอและขอบงาน

คำขอสมมติ `REQ-CSS-01`: `INSPECTOR_ROLE` ต้องการบัญชีภาพและข้อจำกัดของส่วน `ASSET-A` ภายใน `2026-10-13T15:00:00+07:00` เพื่อกำหนดจุดและวิธีตรวจต่อ. `ASSET-A`, `MEMBER-A` ถึง `MEMBER-F`, `VIEW-1` ถึง `VIEW-9` และ `local_member_grid` เป็นรหัสกระดาษ ไม่ใช่สะพานไทยหรือจุดที่นำไปค้นหาได้. E0 เป็นรอบอ้างอิงวันที่ 12 ต.ค., E1 เป็นรอบติดตามวันที่ 13 ต.ค. ผู้รับยังไม่ได้ส่ง/รับ/รับทราบ package จริง. ขอบผลส่งมอบคือรายการสิ่งที่บันทึกไว้จากคำบรรยายภาพ, ช่องที่อ่านไม่ได้, ข้อค้างและข้อเสนอให้ผู้ตรวจที่มีคุณสมบัติทวน. **ห้ามสรุปความแข็งแรง ความปลอดภัย สาเหตุ หรือขนาดความเสียหายจากชุดฝึกนี้**.

เปิดไฟล์ `.csv` เป็น UTF-8 โดยบังคับทุกคอลัมน์เป็นข้อความ เพื่อรักษา `+07:00`, `unknown` และรหัส. เก็บ `scenario.csv` ต้นฉบับแยกจากสำเนาคำนวณ. คำนวณ SHA-256 ของไฟล์ก่อนและหลังรันเพื่อยืนยันว่า input ไม่ถูกแก้; เช่น `sha256sum scenario.csv expected.csv` หรือ PowerShell `Get-FileHash -Algorithm SHA256`. ผล hash เฉพาะเครื่องของผู้เรียน/ผู้เขียนต้องบันทึกกับคำสั่ง เวลา exit status และผลต่างที่ตรวจได้ ไม่เติมใน expected ย้อนหลัง.

## พจนานุกรมข้อมูล

| คอลัมน์ | ความหมายและหน่วย / ค่า `unknown` |
|---|---|
| `scenario_id`, `record_id`, `revision` | คีย์ตรรกะ `(scenario_id,record_id,revision)`. `R08/v0` และ `R08/v1` เป็นประวัติคนละรุ่น ไม่ใช่ duplicate; v1 supersede v0 เฉพาะ R08. คีย์เดียวซ้ำต้อง HOLD ทุก occurrence |
| `observed_at`, `received_at` | เวลาจำลอง ISO 8601 พร้อม offset ของการสังเกตและรับไฟล์; `unknown` หมายถึงไม่ทราบจริง ไม่ใช้ received แทน observed |
| `source` | `SYN-PHOTO` หมายถึงคำบรรยายภาพที่แต่งขึ้น ไม่มีภาพต้นทางที่บันทึกจริงหรือ licensed source ใน CSV |
| `coverage` | `member_patch` = เฉพาะหย่อมของสมาชิก, `partial_member_patch` = หย่อมที่ถูกบังบางส่วน; ไม่เท่ากับการครอบคลุมทั้งโครงสร้าง |
| `uncertainty` | ข้อจำกัดเชิงภาพตามข้อความ เช่น `unknown_dimensions`; ไม่มีค่าความคลาดเคลื่อนตัวเลขหรือค่าความเชื่อมั่น; `unknown` ไม่ใช่ศูนย์ |
| `status` | ทุกแถว `unverified` หมายถึงผู้แต่งยังไม่อ้างการยืนยันเชิงวิศวกรรม; expected disposition คำนวณแยก |
| `rights` | `training_only` ใช้ในแบบฝึก ไม่ส่งออกเป็นเหตุจริง; `unknown` ที่ R09 ต้องพักการแชร์ |
| `recipient` | `INSPECTOR_ROLE` เป็นบทบาทสมมติของผู้ตรวจที่มีคุณสมบัติ ไม่ใช่ชื่อบุคคล/หน่วยที่รับจริง |
| `epoch_id`, `asset_id`, `member_id`, `view_id` | รหัสรอบ/ทรัพย์สิน/ส่วน/ช่องภาพเป้าหมายในกระดาษ; `view_id` เป็นช่องที่วางแผนถ่าย ไม่ใช่เรขาคณิตมุมจริงซึ่งอยู่ใน `angle_class`. `unknown` ที่ R07 หมายถึงระบุส่วนจริงไม่ได้ |
| `angle_class` | `normal_A` และ `oblique_B` เป็นชนิดมุมสมมติ ไม่ใช่องศาที่วัดแล้ว; `oblique_B` เทียบตรงกับ `normal_A` ไม่ได้ |
| `light_state`, `occlusion` | `adequate`/`insufficient` และ `none`/`pipe_shadow` เป็นป้ายของโจทย์; ภาพมืดหรือถูกบังต้องคง unreadable |
| `scale_reference` | `visible_training_scale` เป็นสเกลเชิงป้ายในเรื่องเล่า ไม่ใช่ไม้บรรทัดที่สอบกลับได้; `unknown` ห้ามรายงานขนาด |
| `location_reference` | `local_member_grid` เป็นรหัสตำแหน่งสมมติ ไม่ใช่พิกัดโลก; `unknown` ห้ามจับคู่สมาชิกหรือจุดซ่อมเอง |
| `image_quality` | `readable`/`unreadable` ตามกฎโจทย์; ความชัดไม่รับรองความครบ, ความถูกต้อง, สิทธิ์ หรือความปลอดภัย |
| `camera_config`, `camera_calibration` | `CAM-A/CAL-A-v1` เป็นคู่ฐานสมมติที่ metadata ครบสำหรับการฝึก; `CAM-B/unknown` เป็นการเปลี่ยนชุดที่ยังไม่มีหลักฐานเทียบ/สอบเทียบ ไม่ใช้ผลก่อนหลังวัดขนาด |
| `observation_note` | คำบรรยายที่แต่งขึ้น ไม่ใช่ภาพจริงและไม่ใช่คำวินิจฉัย |

## กฎเฉลย `CSS-RULE-v1`

อ่านทุกแถวรวม header ด้วย `source_row` ใน `expected.csv`. รักษาทั้งรุ่น v0/v1 และไม่ลบแถวที่อ่านไม่ได้. ลำดับ gate: (1) ตรวจคีย์/เวลา/แหล่ง/สิทธิ์, (2) ตรวจแสง การบังและความชัด, (3) ตรวจมุม/สเกล/ส่วน/ตำแหน่ง, (4) ตรวจคู่รุ่นกล้องและ calibration, (5) ส่งเพียงข้อสังเกตที่อยู่ในขอบไปยังผู้ตรวจ. `R08/v0` เป็น `history_superseded`; v1 ยัง `hold_camera_change` เพราะ CAM-B ไม่ผ่าน gate. `R01`, `R11` และ `R13` เป็น `baseline_context`, ไม่ใช่ผลวินิจฉัย. `R02` และ `R10` เป็น `candidate_review`, หมายถึงคำบรรยายพอส่งให้ผู้ตรวจทวน **ภายในโจทย์** เท่านั้น. R13 เป็นมุม `normal_A` ของ `MEMBER-C/VIEW-4` ที่ใช้ทวน R05 `oblique_B`; มุมไม่ซ้ำจึงเทียบตรงไม่ได้. อีกแปด occurrence เป็น HOLD หรือ unreadable ที่ต้องแสดงเหตุ. ไม่มีสถานะใดแปลว่าโครงสร้างปลอดภัย.

ข้อผิดพลาดที่ต้องทดลอง: `R03` แสงไม่พอ, `R04` บัง, `R05` มุมไม่ซ้ำ, `R06` สเกลหาย, `R07` ตำแหน่งหาย, `R08/v0` ภาพเบลอที่ยังต้องเก็บประวัติ, `R08/v1` กับ `R12` กล้องเปลี่ยนเป็น CAM-B ที่ calibration unknown, `R09` สิทธิ์ไม่ทราบ. กรณี mutation เพิ่ม: duplicate key, missing observed_at, `received_at` ก่อน observed_at, config ID ไม่รู้จัก, เปลี่ยน metadata CAM-B ให้เหมือน CAM-A โดยไม่มีหลักฐาน, export `unknown` rights. กฎนี้เป็นการออกแบบการสอน มิใช่มาตรฐานตรวจรับภาพภาคสนามหรือกฎหมายไทย.

## การส่งต่อและระดับหลักฐาน

Package ฝึกต้องมี `request`, `scope`, `alternatives`, `observation`, `unknowns`, `decision_limit`, `handoff` พร้อม owner/เวลาทวน. สถานะส่งต่อเริ่ม `not_sent`; ต้องมีหลักฐานเหตุการณ์แยกจึงเปลี่ยน `sent → received → acknowledged`. แม้ผู้รับตอบรับก็ไม่เท่ากับเห็นชอบคำวินิจฉัย. ภาพ/คำบรรยายที่เข้าถึงยากหรือมีสิทธิ์ไม่ชัดต้องเสนอวิธีภาคพื้น/ทีมอื่นและวิธีเข้าถึงที่ปลอดภัยให้ผู้มีหน้าที่ตัดสิน. การปฏิบัติจริงต้องตรวจคน อุปกรณ์ คู่มือ สภาพแวดล้อม พื้นที่ สิทธิ์การบินและการเข้าถึง กับผู้มีหน้าที่ไทยในวันปฏิบัติ.

แหล่งแนวคิด: FHWA NBIS Q313-1/Q313-2 สำหรับการใช้ UAS เป็นเครื่องมือเสริมใน **ระบบสหรัฐ**; NIST Aerial Drone Tests สำหรับการแยกความสามารถชุดโดรนจากทักษะผู้ควบคุม; MnDOT 2015 เป็นกรณีประวัติศาสตร์สหรัฐที่แสดงข้อจำกัดการถ่ายใต้สะพาน. รายละเอียดข้ออ้างอยู่ใน `research/drone-applications-case-studies-source-register.md` ของ repository. FAA/NBIS ไม่ใช่ข้อกำหนดไทยและไม่ได้กำหนด threshold ของโจทย์นี้.
