# ใบงาน D: M02 ข้อเสนอ index/temporal-pair validator ออฟไลน์

รุ่น M02-v1 · 11 ตุลาคม 2026 · CC BY 4.0 ตาม [readme](https://drone.pk-research.work/downloads/drone-applications/crop-monitoring-readme.md)

ใช้ [บท D](https://drone.pk-research.work/knowledge/drone-applications/crop-monitoring/#developer), [CSV](https://drone.pk-research.work/downloads/drone-applications/crop-monitoring-observations.csv), [rubric](https://drone.pk-research.work/downloads/drone-applications/crop-monitoring-rubric.md) และ [KSEC record](https://drone.pk-research.work/downloads/drone-applications/ksec-learning-record.md)

นี่เป็น **ข้อกำหนดและแผนทดสอบที่ผู้เรียนออกแบบ** ไม่มีตัว validator ส่งมอบ ไม่มีผลรัน software/hardware/WebODM จริง actual ต้องคง “ยังไม่รัน” จนมีหลักฐาน ทำกิจกรรมได้โดยอ่านและเขียนแผน ไม่ต้องมีโดรน

## ก่อนทำและงานเติม

- K / APP-M02-D-K01: เขียน requirement หน่วย identity/สถานะได้ ถ้ายังไม่ได้ทวน [testing](https://drone.pk-research.work/knowledge/testing/) และ [sensor limits](https://drone.pk-research.work/knowledge/imagery-analysis/sensor-limitations/) แล้วเขียน input หนึ่งแถว
- S / APP-M02-D-S01: ผูก expected กับกรณีผิดและเก็บ null ได้ ถ้ายังไม่ได้ทวน [integration](https://drone.pk-research.work/knowledge/integration/) และ [testing](https://drone.pk-research.work/knowledge/testing/) แล้วเขียน zero case ก่อน ถ้าเลขยังไม่คล่องทำ B/O
- E / APP-M02-D-E01: แยก expected/actual และสิทธิ์ได้ ถ้ายังไม่ได้ทวน [evidence report](https://drone.pk-research.work/knowledge/imagery-analysis/evidence-report/) แล้วแก้ claim “v1 ผ่านทดสอบ”
- C / APP-M02-D-C01: เก็บ baseline/issue ตอบผู้ตรวจได้ ถ้ายังไม่ได้ทวน [teamwork](https://drone.pk-research.work/knowledge/human-factors/teamwork/) แล้วบันทึกคำทักและวิธีคืนรุ่น

## 1. เปรียบแนวคิด v0 และ v1

v0 numbers-only คำนวณอัตราส่วนแล้วจับคู่โดยดูตัวเลข จึงอาจปล่อย C delta=0 และสร้างข้อสรุปเสถียร แม้ขาด records; D อาจถูกเติม 0 หรือถูกละทิ้งถ้าไม่มี null policy

v1 metadata-aware ตรวจ schema/หน่วย/identity/scale+offset provenance/QA/stage/pair ก่อนอนุญาต delta แยก per-date numeric status กับ pair_comparable มี null+reason/owner เมื่อล้มเหลว C/D ยัง HOLD v1 ไม่รับรองคุณภาพภาพจริงหรือยืนยัน phenology จากธงสมมติ

- ผู้รับ output / การตัดสินใจ:
- input schema/version/ข้อจำกัด:
- output schema/version: sample_id, ndvi หรือ null, numeric_status, reason; pair zone/T1/T2, pair_status, delta หรือ null, missing evidence, owner; metadata/source/formula/rule versions
- คำถามที่ validator ตอบไม่ได้:
- ระดับหลักฐานตอนนี้: proposal; ไม่มี actual run

## 2. R01–R06

| Requirement | พฤติกรรมและ expected | Actual / หลักฐาน |
|---|---|---|
| R01 Input contract | ตรวจ key/time/finite/null/0–1 หลังแปลงตาม contract; หน่วยและ identity ต้องทราบ ไม่รันข้อความ CSV เป็น code/คำสั่ง; fields หาย/ขัดแย้งให้ failure reason และเก็บต้นฉบับ | ยังไม่รัน / ______ |
| R02 Band and transform | ยืนยัน Red/NIR จาก metadata/provenance ไม่ใช้เลขแบนด์ Landsat; ใช้ scale+offset ต่อแบนด์ตามผลิตภัณฑ์ก่อน NDVI; identity/units/scale ขาดหรือขัดแย้งให้ HOLD/invalid ไม่เดา | ยังไม่รัน / ______ |
| R03 Index validity | NDVI ไร้มิติ; exact zero denominator→ndvi=null reason zero_denominator; missing/nonfinite ไม่ใช่0; near-zero flag ตาม threshold/ความไวที่เจ้าของผลิตภัณฑ์ยืนยัน ไม่สร้าง epsilon สากล | ยังไม่รัน / ______ |
| R04 Temporal qualification | จับคู่ zone เดียว 2campaign ไม่ซ้ำ เวลาเรียง; ตรวจ stage/status/records/alignment และ conflicting QA; C/D HOLD, valid one-date คงแยก; teaching assumptions ไม่ใช่สนาม certified | ยังไม่รัน / ______ |
| R05 Explainable handover | output เห็น 7numeric/1undefined 2comparable/2HOLD พร้อม reason/owner/ขอบใช้; แยก confidential/public สิทธิ์และไม่มี diagnosis/area percent/NDRE | ยังไม่รัน / ______ |
| R06 Review and rollback | เก็บ input/formula/rule/schema/config/output versions ผู้ทวน issue ก่อนหลังและ trigger/ผู้คืน/ผู้ตรวจ/วิธีทวนหลังคืน; failure ไม่ส่ง stale delta เป็น current | ยังไม่รัน / ______ |

## 3. Test matrix: expected กับ actual แยกกัน

ระบุ test ID, requirement, input change, expected, actual, evidence link, reviewer/date/version ไม่มีช่อง “ผ่าน” ล่วงหน้า ค่าตัวเลขเป็น expected math ของกรณีสังเคราะห์ ไม่ใช่ผลทดสอบระบบ

| Test / requirement | Input/กรณี | Expected | Actual / หลักฐาน |
|---|---|---|---|
| D01 / R01–R05 | CSVเดิม | 7 numeric 1undefined; AΔ+0.05 BΔ−0.25; C/D HOLD ไม่รายงาน delta | ยังไม่รัน / ______ |
| D02 / R01,R02 | unit=percent หรือ unknown แทน reflectance_fraction | หยุดใช้จนมี contract/การแปลงที่มีที่มาและรุ่น; ไม่ถือ20เป็น0.20โดยเงียบ | ยังไม่รัน / ______ |
| D03 / R02 | identity ขาด/Red=NIR/สลับ identity ขัดกับ schema | invalid/HOLD+reason ขอ provenance; ไม่เดาแบนด์จากค่ามากน้อย | ยังไม่รัน / ______ |
| D04 / R02 | ใส่ค่าของแบนด์สลับแล้วติด label ผิดแต่สอดคล้องกัน | numerical A-T1 จะ −0.50; ตัวเลขอย่างเดียวพิสูจน์สลับไม่ได้ ต้องรายงานข้อจำกัดและขอ source metadata/manual ไม่อ้างว่าจับได้เสมอ | ยังไม่รัน / ______ |
| D05 / R02 | hypothetical transform: red0.20/nir0.60 scaleทั้งคู่0.5 offsetทั้งคู่0.1 มี contract ที่ประกาศ | หลังแปลงred0.20/nir0.40 NDVI=1/3≈0.333333; ละoffsetจะได้0.50จึงผิด; เป็น fixture transform ไม่ใช่ค่ากล้องจริง | ยังไม่รัน / ______ |
| D06 / R01–R03 | numeric/scale/offset หายหรือ NaN/Infinity | null+reason เก็บแถวและข้อค้าง ไม่เติม0/drop; unknown transform ไม่คำนวณ | ยังไม่รัน / ______ |
| D07 / R03 | red=0 nir=0 | ndvi=null zero_denominator; ไม่0 | ยังไม่รัน / ______ |
| D08 / R03 | ตัวส่วนใกล้ศูนย์ตาม product-specific threshold ที่ต้องขอ | flag sensitivity_review; บันทึก threshold/ที่มา/รุ่นหรือ HOLD เมื่อยังไม่ยืนยัน ไม่ invent universal epsilon | ยังไม่รัน / ______ |
| D09 / R04 | duplicate zone+campaign แม้ sample_id ต่าง | หยุดจับคู่ที่กำกวมพร้อม reason; ไม่เลือกแถวล่าสุด/เฉลี่ยเอง | ยังไม่รัน / ______ |
| D10 / R04 | stage เปลี่ยน/หาย หรือ status ขัดกับ verified claim | HOLD ขอ phenology/context; ไม่เปรียบเหมือนเงื่อนไขเดิมโดยเงียบ | ยังไม่รัน / ______ |
| D11 / R04 | quality_status=records_present แต่ radiometric_record=missing | HOLD conflicting_QA; summary ไม่ทับ field-level failure | ยังไม่รัน / ______ |
| D12 / R04 | C-T2 records missing แม้ NDVIเท่ากัน | คงรายวัน0.75พร้อมข้อจำกัด; pair HOLD delta=null ไม่claim stable | ยังไม่รัน / ______ |
| D13 / R03,R04 | D-T1 undefined D-T2 valid0.60 หรือเหลือวันเดียว | คงT2รายวัน pair HOLD no_valid_baseline delta=null | ยังไม่รัน / ______ |
| D14 / R01,R04 | timezone/time ขาด วันที่ผิดcampaign/เรียงย้อน หรือ alignment missing | failure/HOLDตามเหตุ ขอหลักฐานและไม่ปล่อย delta | ยังไม่รัน / ______ |
| D15 / R05 | ขอexport public ทุกfield/ภาพพร้อมบุคคล | ตรวจสิทธิ์/ลดข้อมูลตามผู้รับ คงQA/ข้อไม่รู้ ไม่เพิ่มclaim diagnosis/NDRE | ยังไม่รัน / ______ |
| D16 / R06 | reviewerพบv1ปล่อยC deltaหรือเปลี่ยนruleไม่บันทึกรุ่น | พักoutput แจ้งผู้รับที่เกี่ยว เก็บissue คืนbaselineที่ระบุ ทวนC/Dหลังคืนก่อนปล่อยรุ่น | ยังไม่รัน / ______ |

เพิ่มกรณี negative/out-of-contract, malformed CSV, missing required columns, inconsistent time/provenance ตาม R01 ไม่อ้างว่า output valid เท่ากับการวัดถูกจริง แยก calibration/radiometry กับ alignment และข้อไม่รู้เรื่อง stage/weather/background/dense canopy

## 4. Change-review record สำหรับ C

| Field | บันทึก |
|---|---|
| baseline/input/schema/formula/rule/config versions | |
| v0ข้อจำกัด numbers-only / v1พฤติกรรมที่เสนอ | |
| ผู้ทำ / ผู้ทวน / วันและขอบทวน | |
| issue และ test IDs / หลักฐานหรือ expected ที่เกี่ยว | |
| คำตอบทุกคำทัก: แก้/คง/เหตุผล/ข้อค้าง | |
| รุ่นก่อน–หลังและผลกระทบต่อ output เดิม | |
| trigger พักงาน/คืนค่า | |
| รุ่นที่คืน / ผู้คืน / ผู้ตรวจ | |
| วิธีตรวจหลังคืน (D01 D12 D13 และ case ที่ล้มเหลว) | |
| ผู้รับ output ที่ต้องแจ้งและวิธีระบุรุ่นที่ใช้ไม่ได้ | |
| ยังไม่รัน / สิ่งที่ต้องมีจึงทดสอบได้ | |

หากพบความผิดอย่าส่งผลเดิมเป็นปัจจุบัน คืนรุ่นไม่ได้แก้หลักฐานสนามที่ขาด ต้องคง C/D HOLD จนมีข้อมูลที่ตรวจได้

## ตรวจราย ID

APP-M02-D-K01 ผ่านเมื่อ R01–R06/schema/units/identity/transform/QA/pair/provenanceและขอบตรวจครบ
APP-M02-D-S01 ผ่านเมื่อ expected ครบ normal/units/swap/transform/missing/zero/nearzero/duplicate/stage/conflictingQA/one-date/failure/review/rollback และ actual ยังไม่รันตามจริง
APP-M02-D-E01 ผ่านเมื่อแยก proposal/expected/actual ระบุไม่มี validator/สนามจริงและสิทธิ์ output ไม่แต่งผล
APP-M02-D-C01 ผ่านเมื่อ change-review record เก็บรุ่น/คำตอบ/trigger/owner/rollback/ทวนหลังคืนครบ

ใช้ rubric ระบุมีหลักฐานตามเกณฑ์ / ต้องฝึกเพิ่ม / ยังไม่มีหลักฐาน พร้อมงานแก้ E/C ประเมิน recorded actions/reasoning ไม่เป็นคะแนนบุคลิก ความพร้อมเรียนแยกจากพร้อม deploy/สนาม
