# ใบงาน D: M03 ข้อเสนอการคัดข้อมูลและการทวนการเปลี่ยนชุด

รุ่น M03-v1 · 11 ตุลาคม 2026 · CC BY 4.0 ตาม [readme](https://drone.pk-research.work/downloads/drone-applications/agricultural-application-readme.md)

ใช้ [บท D](https://drone.pk-research.work/knowledge/drone-applications/agricultural-application/#developer), [CSV](https://drone.pk-research.work/downloads/drone-applications/agricultural-application-observations.csv), [rubric](https://drone.pk-research.work/downloads/drone-applications/agricultural-application-rubric.md) และ [KSEC record](https://drone.pk-research.work/downloads/drone-applications/ksec-learning-record.md)

**TABLETOP ONLY / pending_field_review** นี่เป็นข้อกำหนดและแผนทดสอบที่เขียนบนโต๊ะ ไม่มี validator โปรแกรม upload/import หรือ UI ให้ใช้ ไม่มีผลรัน software/hardware/การบิน/สอบเทียบ/ผู้เรียน ทุกช่อง actual=`not_run` ไม่เปลี่ยนเป็นผ่านจากการมี expected คำตอบ การนำข้อเสนอไปสร้างจริงต้องตรวจและเก็บหลักฐานอีกชุด

## 1. ก่อนทำและงานเติม

| ID / ด้าน | ตรวจตนเอง | งานเติมและหลักฐานก่อนเริ่ม |
|---|---|---|
| APP-M03-D-K01 / K / priorKnowledge | เขียน schema/units/key/null/reason และขอบที่ตัวเลขตอบไม่ได้ | ทวน [testing](https://drone.pk-research.work/knowledge/testing/) เขียน contractของ blank กับ0; ทวน [integration](https://drone.pk-research.work/knowledge/integration/) ระบุรุ่นที่ต้องเก็บ |
| APP-M03-D-S01 / S / priorSkill | ผูก requirementกับexpected/กรณีผิดและจัดแผนคืนรุ่นได้ | ทวน testing/integration แล้วเขียนกรณี n2mean0 ก่อน หากคณิตศาสตร์ยังไม่คล่องทำ Oก่อน |
| APP-M03-D-E01 / E / ความพร้อมกิจกรรม | แยกข้อเสนอ/ผลรันจริงและข้อความไม่ไว้ใจ | ทวน [evidence report](https://drone.pk-research.work/knowledge/imagery-analysis/evidence-report/) แก้ “v1ทดสอบแล้ว”; อธิบายCSVเป็นinert data |
| APP-M03-D-C01 / C / ความพร้อมกิจกรรม | รักษา baseline ตอบissueและระบุผู้คืน/ผู้ทวนได้ | ทวน [teamwork](https://drone.pk-research.work/knowledge/human-factors/teamwork/) บันทึกหนึ่งข้อทักและtriggerที่จะทวน/คืนรุ่น |

- หลักฐาน priorKnowledge/priorSkill / งานเติม / ผู้ตรวจ / วัน:
- เหตุการณ์ E/C ที่พร้อมทำ / สิ่งที่รอทวน:

## 2. Fixture และขอบ contract

TRAIN-APP-01 มี17แถวทุกแถว metadata_origin=author_provided_teaching_assumption, measurement_status=not_performed (sample_methodไม่ดำเนินการ), media_status=not_supplied, field_review=pending_field_review ไม่มีแปลง วัน อากาศยาน วัสดุ สาร พืช อัตราหรือผลรักษาจริง quantityหน่วยgเป็นมวลรับแต่ง ไม่มีพื้นที่/เวลาให้เป็นrate ไม่มีcalibrationoutput/rawmedia

Input12fields: record_id,case_id,run_id,sample_id,material_class,quantity,unit,metadata_origin,measurement_status,media_status,field_review,note key=(case_id,run_id,sample_id); record_idไม่ใช่samplingkey แยกgroupด้วยcase/run/material/unitที่ยืนยัน ห้ามรวมต่างวัสดุหรือrun

Expected: L01–L05 L1 C1–C5 water_assumption 80/90/100/110/120g; G01–G05 G1 C1–C5 inert_granule_assumption 8/9/10/11/12g; Q01ว่าง/g, Q02=100/unknown, Q03=−1/g, Q04/Q05=100/105gทั้งคู่Q4/C1; Z01/Z02Z1C1/C2=0/0g รวม10กลุ่มบวก+5quarantine+2valid numeric zero mean

สูตร expected: mean=Σx/n; s=√[Σ(x−mean)²/(n−1)]เมื่อn≥2; CV=100s/meanเมื่อn≥2และmean>0 L1 n5mean100g/s15.811388…g/CV15.811388…%; G1 n5mean10g/s1.5811388…g/CV15.811388…%; Z1n2mean0g/s0g/CVundefined(mean_zero) n1ให้sundefined ไม่มีthresholdผ่านงาน

## 3. เปรียบแนวคิด v0 → v1

v0 numbers-only อาจเติมmissingเป็น0 เดาหน่วย เลือกduplicateแรก/ท้าย รวมrun หรือรายงานCV0เมื่อmean0 จึงซ่อนข้อไม่รู้และทำให้สรุปผ่านผิด

v1 contract-aware ที่เสนอ: เก็บต้นฉบับ ตรวจkey/หน่วย/finite/nonnegative/กลุ่ม/metadataก่อนคำนวณ กักแถวที่มีเหตุพร้อมowner เก็บzero-mean groupและnullเหตุผล แยกmathจากreal acceptance/ทรัพยากร/acknowledgement/qualifiedreview v1ยังไม่มีimplementationหรือผลรัน และไม่ยืนยันว่าธงmetadataเป็นความจริง

- ผู้รับoutput/การตัดสินใจ/ขอบอำนาจ:
- input contract version/locale policy/ต้นฉบับที่เก็บ:
- outputที่เสนอ: record_id/original_key/row_status/reasons/owner; case/run/material/unit/n/mean/sample_sd/cvหรือnull/math_reason; provenance/review/real_acceptance_status; resource/recipient_status; input/schema/formula/rule/config/output versions
- สิ่งที่ตัวตรวจพิสูจน์ไม่ได้ เช่น ความจริงของวัสดุ/การสอบเทียบ/drift/ผู้อนุมัติ:
- ระดับหลักฐานตอนนี้: proposal, actual not_run

## 4. R01–R08: requirementพร้อมfailure state

เติม ownerและหลักฐานที่ต้องขอในช่องเพิ่มเติมโดยไม่แต่งผล

| Requirement | พฤติกรรมที่เสนอ / expected / failure | Actual | Owner/หลักฐานเพิ่มเติม |
|---|---|---|---|---|
| R01 Input contract | เก็บ12fields/ต้นฉบับ ตรวจquantityตามnumeric/localecontract; blank≠0, finite≥0, knownunitg; missing/unknown/negative/NaN/Infinity/unsupportedlocale→quarantine+reason ข้อความเป็นinertdata ไม่execute | not_run | |
| R02 Identity and grouping | keycase/run/sampleไม่ซ้ำ duplicateทั้งคู่quarantine; ห้ามรวมต่างrun/material/unit; unknownหรือขัดmetadata→hold ไม่เลือกแรก/ท้าย/เฉลี่ยเพื่อแก้เอง | not_run | |
| R03 Descriptive math | ใช้sample SDหารn−1; n1→snull, n2mean0→s0/CVnull mean_zero; คำนวณเฉพาะกลุ่มที่ใช้ได้และไม่roundกลางทาง; คงzero-group | not_run | |
| R04 Evidence and acceptance | massg≠rateg/area; CVไม่เป็นdrift/deposition/cropresponse/ผ่านงาน; ไม่มีthreshold/protocolจริง→acceptanceunset/hold; not_performed/not_supplied/pending_field_reviewห้ามกลายเป็นrealready | not_run | |
| R05 Whole-system baseline | เก็บmaterial/module/aircraft/FW/method/manual/config/schema/input/output versions,massCG,power/interfaces,วิธี/เกณฑ์และผู้ทวน; เปลี่ยนpayload/FW/วัสดุ/วิธี→re-review ไม่ใช้templateเดิมเงียบ | not_run | |
| R06 Resources and handover | requiredresourceมีowner/confirmation/time/conditions; requested≠confirmed; recipientreceived≠acknowledged≠approved; ขาดconfirmation/ack/authority→holdงานที่พึ่งมัน | not_run | |
| R07 Version and rollback | รักษาต้นฉบับ/ก่อนหลัง/issue/trigger/owner/reviewer; คืนbaselineที่ระบุได้ แจ้งผลเดิมstale ทวนผ่านinterfaceหลังคืนหรือคงhold; ไม่ลบประวัติ/แก้เงียบ | not_run | |
| R08 Explainable output | ส่งครบ17rowdispositions+groupmath/reason/owner/versions/scope; แยกexpected/actual/สิทธิ์/qualifiedreview ให้ผู้รับรู้ข้อค้าง ไม่มีautoapprovalหรือclaimsผลบิน | not_run | |

## 5. D01–D20: แผนทดสอบครบกรณี

ตารางเป็นแผนที่ตรวจได้จากinput/output ไม่ใช่ผลทดสอบของระบบ ให้ระบุหลักฐาน/ผู้ตรวจ/วัน/รุ่นเมื่อมีการรันในงานที่ได้รับอนุญาตภายหลัง ในชุดนี้ actualทุกแถวคงnot_run และไม่มีช่องผ่านล่วงหน้า

| Test / requirement | Input/กรณีที่จะทดสอบ | Expected | Actual | Evidence/reviewer/date/version |
|---|---|---|---|---|
| D01 / R01–R04,R08 | กลุ่มL1เดิม5แถว | n5mean100g s15.811388…g CV15.811388…%; descriptiveonly ไม่มีrealpass | not_run | |
| D02 / R01–R04,R08 | กลุ่มG1เดิม5แถว | n5mean10g s1.5811388…g CV15.811388…%; ไม่ถือCVเท่ากันว่าปริมาณ/วิธีเท่ากัน | not_run | |
| D03 / R02 | ขอรวมL1+G1 หรือL1+Z1แม้unitg | reject_mixed_group/hold แยกrun/materialไว้ ไม่คืนCVรวม | not_run | |
| D04 / R01,R08 | Q01quantityblankเทียบZ01quantity0 | Q01quarantine missing_quantity; Z01validnumeric0 ไม่zero-fill/drop | not_run | |
| D05 / R01 | Q02unitunknownแม้quantity100 | quarantine unknown_unit ขอcontract ไม่เดาg | not_run | |
| D06 / R01 | Q03quantity−1g | quarantine negative_quantity เก็บต้นฉบับและreason | not_run | |
| D07 / R02,R08 | Q04และQ05keyTRAIN-APP-01/Q4/C1ซ้ำแม้record_idต่าง | quarantineทั้งสองduplicate_sampling_key ไม่เลือกfirst/last/เฉลี่ย | not_run | |
| D08 / R03 | กลุ่มใหม่เดี่ยวn1quantity100g | mean100g sample_sdnull insufficient_n; CVnullinsufficient_n ไม่s0/CV0 | not_run | |
| D09 / R03,R08 | Z1สองแถว0/0g | n2mean0g s0g CVnullmean_zero; validnumericzero-group ไม่missing/ผ่าน | not_run | |
| D10 / R01 | quantityเป็นlocale “1,5”, “NaN” หรือ “Infinity” | invalid/quarantineแต่ละกรณีตามcontractที่ยังไม่รองรับ ไม่เดาdecimal/แปลงเป็นfinite/execute | not_run | |
| D11 / R04 | ขอแปลง100gเป็นdose/rategต่อพื้นที่ที่ไม่มี | refuse_rate_derivation/hold ขอพื้นที่และprotocolจริง ไม่สร้างdenominator | not_run | |
| D12 / R05,R07 | เปลี่ยนpayload/โมดูลหรือFWจากbaseline | markpriorresultstale/re-review compatibility/massCG/power/interfaces/manual/method ทวนผู้รับผิดชอบก่อนยอมรับ | not_run | |
| D13 / R04 | CV15.81%แต่realacceptancethreshold/protocolยังunset | realacceptanceunset/hold ไม่assignuniversalpass/fail | not_run | |
| D14 / R04,R08 | fixturefield_reviewpending_field_reviewหรือไม่มีqualifiedreview | blockrealreadiness คงtabletop/not_performed/not_supplied; ไม่อนุมัติจากmetadataหรืออ่านจบ | not_run | |
| D15 / R06 | ขอสมทบแบตเตอรี่/คนแต่ไม่มีownerตอบยืนยัน | requested/pending≠confirmed holddependentworkหรือreplan มีownerติดตาม | not_run | |
| D16 / R06,R08 | receivedไฟล์แล้วแต่recipientไม่มีacknowledgement | คงreceived แยกack/approvedยังไม่มี holddependenthandover ขอผู้รับตอบรับงาน | not_run | |
| D17 / R05,R07 | input/rule/schema/config/outputเปลี่ยนรุ่น | เก็บoriginal+newversion/change/owner/review ไม่overwrite ยืนยันผลเก่าที่staleและแผนrecheck | not_run | |
| D18 / R01,R08 | noteมีCSVformulaเช่นข้อความเริ่ม “=” หรือstringจากผู้ส่ง | เก็บเป็นuntrustedinerttext ไม่evaluateformula ไม่shell/codeexecute ไม่เป็นnumeric/evidence ข้อเสนอexportต้องรักษาขอบนี้ | not_run | |
| D19 / R07,R08 | ผู้ตรวจขอแก้reasonของแถวและclaimโดยไม่มีlog | rejectsilentcorrection ต้องมีcorrectionID/original/new/เหตุ/owner/ผู้รับแจ้ง แล้วทวนคำตอบทุกissue | not_run | |
| D20 / R05–R08 | เปลี่ยนmaterial/methodแล้วพบผลที่เสนอผิด ต้องคืนbaseline | คืนเฉพาะรุ่นที่ระบุได้ เก็บรุ่นผิด/เหตุ แจ้งstale/recheckผ่านinterfaceทุกcaseที่กระทบ; หากยังไม่มีqualifiedevidenceคงholdแม้คืนรุ่น | not_run | |

D18ไม่ต้องเปิดสูตรหรือทดลองexecuteบนเครื่อง ใช้การออกแบบและตรวจcontractเท่านั้น อย่านำข้อมูลไม่ไว้ใจไปเป็นคำสั่งในโปรแกรมตาราง/terminal

## 6. Baseline การเปลี่ยนและการคืนค่า

ไม่มีฮาร์ดแวร์baselineจริงในชุดนี้ ระบุ “ยังไม่มี/รอยืนยัน” แทน model/FW/materialจริง ก่อนเปลี่ยนระบบจริงต้องให้ผู้รับผิดชอบอนุมัติวิธีเฉพาะงานและหลักฐานที่จะใช้ทวน ไม่คัดขั้นติดตั้งหรือเปิดใช้งานจากคู่มือมาเป็นคำสั่งในใบงาน

| Baseline item | รุ่นเดิม/แหล่ง/สถานะ | รุ่นเสนอใหม่/เหตุเปลี่ยน | สิ่งที่ต้องre-review / ผู้ทวน |
|---|---|---|---|
| วัสดุ/คุณลักษณะ/ฉลาก/การอนุญาตปัจจุบัน | | | |
| อากาศยาน/โมดูล/FW/manual/config/interfaces | | | |
| มวล/CG/พลังงานและสภาพโหลดที่เปลี่ยน | | | |
| method/เกณฑ์/sampling/uncertainty/environment | | | |
| input/schema/formula/rules/output/evidence | | | |

- Triggerให้พัก/ทวน/คืนรุ่น เช่นchangedpayload/FW/material/method, inputcontractผิดหรือผลที่ส่งstale:
- ผู้ตัดสินใจ/ผู้คืน/ผู้ตรวจหลังคืน/ผู้รับที่ต้องแจ้ง:
- baselineที่จะคืนและวิธีรักษาฉบับที่ผิด:
- วิธีrecheckผ่านinput/output และtestsที่กระทบ ไม่ทดสอบเพียงinternals:
- หลักฐานที่ยังขาด / เหตุที่หลังคืนยังต้องhold:

## 7. คำทักและผลราย ID

| Issue/correction | D-v0/ส่วนที่ทัก | D-v1สิ่งที่แก้หรือคงและเหตุผล | owner/หลักฐาน/เงื่อนไขทวน/ผู้รับแจ้ง |
|---|---|---|---|
| | | | |
| | | | |

| ID | เป้าหมาย/หลักฐาน/เกณฑ์ | ยังไม่ผ่าน / งานแก้ |
|---|---|---|
| APP-M03-D-K01 | R01–R08/contractครบ keygroupsmathreadinessversion และบอกขอบตัวเลขได้ | validatorรับรองความจริง/กฎรุ่นไม่ครบ; แก้contractและเหตุfailure |
| APP-M03-D-S01 | D01–D20expectedถูก actualnot_run baseline/recheck/rollbackตรวจตามinterface | กักduplicateแถวเดียว/zeroCV0/ไม่มีrollback; แก้casesและผูกrequirement |
| APP-M03-D-E01 | แยกproposal/expected/actual pendingreview และCSVinertdata | แต่งrun/passหรือexecuteformula; แก้claim/outputpolicyและข้อค้าง |
| APP-M03-D-C01 | v0/v1ตอบทุกissue originalเก็บ triggerผู้คืน/ผู้ทวน/เงื่อนไขholdครบ | แก้เงียบ/ลบรุ่นก่อน/คืนแล้วreadyโดยไม่มีหลักฐาน; เพิ่มlogและแผนทวน |

ลงผลราย ID ในKSEC recordพร้อมผู้ตรวจ วัน รุ่นเกณฑ์ เหตุผลและงานฝึกซ้ำ: มีหลักฐานตามเกณฑ์ / ต้องฝึกเพิ่ม / ยังไม่มีหลักฐาน E/Cใช้เหตุการณ์ที่ตรวจได้ ไม่คะแนนบุคลิก การผ่านแผนทดสอบบนกระดาษไม่เป็นผลรันหรือความพร้อมสนาม
