# M09 ผู้พัฒนา: สัญญาสองทะเบียนและข้อเสนอทดสอบ

รุ่น 1.17.23 · 12 ตุลาคม 2026

**TRAIN-LOG-01 เป็น TABLETOP ONLY** ตัวเลข ตำแหน่ง ขอบตัวอย่าง พลังงาน บทบาทและเหตุการณ์ทั้งหมดเป็นข้อมูลที่ผู้เรียบเรียงแต่ง ไม่มีชิ้นส่วนที่วัด ชุดที่ผู้ผลิตอนุมัติ เส้นทาง สถานที่ วันที่บิน การขนส่ง ข้ออนุญาต ผู้รับจริง หลักฐานรับมอบ หรือผลผู้เรียน ตำแหน่งเป็นเมตรสัมพัทธ์กับจุดอ้างอิงลำสมมติ และลำดับเหตุการณ์เป็นลำดับที่แต่ง ไม่ใช่เวลาจริง

ทุกแถวเป็น **pending_field_review** ผู้ตรวจเฉพาะสาขา **specialist=not_assigned** และประตูความพร้อม P3 ยังเปิด การทำใบงานครบหรือคำนวณได้ยังไม่ยืนยันคน ชุด สภาพปัจจุบัน สิทธิ์ ความพร้อมบินหรือการรับสินค้า

ใช้ [manifest CSV](https://drone.pk-research.work/downloads/drone-applications/field-logistics-manifest.csv), [handover CSV](https://drone.pk-research.work/downloads/drone-applications/field-logistics-handover.csv), [readme](https://drone.pk-research.work/downloads/drone-applications/field-logistics-readme.md) และ [rubric 12 ID](https://drone.pk-research.work/downloads/drone-applications/field-logistics-rubric.md) หรือใช้ข้อมูลครบในภาคผนวกของไฟล์นี้ได้ด้วยกระดาษและเครื่องคิดเลข ไม่ต้องมีโดรนหรือซอฟต์แวร์ควบคุม

## เปลี่ยนข้อเสนอ v0 ให้ตรวจขอบได้

**D-v0 เป็นข้อเสนอผิด**: ลืมบรรจุภัณฑ์ เติมช่องว่างเป็นศูนย์ ไม่บอกนิยามมวล บวกจำนวนรับสะสม และถือ acknowledgement เป็นยอมรับสินค้า ให้เสนอ D-v1 ที่รักษานิยาม องค์ประกอบ ข้อมูลขาด รุ่น ที่มาและสถานะ โดยยังไม่สร้าง parser/validator/payload control/backend/runtime

Input ที่เสนอมีสอง CSV ตาม schema ท้ายไฟล์ ตารางพลังงานแต่ง และรายการข้อมูลจริงที่ต้องขอผ่านผู้รับผิดชอบ Output ที่เสนอมีค่าคณิตศาสตร์เมื่อมีนิยามและข้อมูลครบ แยก known subtotal/unknown เหตุ toy bounds/energy ข้อค้างและ owner สถานะรายงานรับปัจจุบัน correction/history รุ่น current/stale และข้อจำกัดการแชร์ Output ไม่สร้าง readiness approval หรือคำสั่งบิน

## Requirements R01–R08

| Requirement | สัญญาที่ต้องเสนอ |
| --- | --- |
| R01 | คง schema ที่มา key รุ่นและสถานะสองทะเบียน; ช่องว่างคงว่าง ไม่เลือกข้อมูลชนเอง |
| R02 | นิยาม payload/gross รวมกล่องและบรรจุภัณฑ์ครบ ลำพร้อมแบตเตอรี่ไม่บวกแบตเตอรี่ซ้ำ |
| R03 | ทวนหน่วย/ค่าจำกัด/ข้อมูลครบก่อน moment/CG แยกแบบจำลองแกนเดียวกับ whole assembly approval |
| R04 | พลังงานครบทุกช่วงและ usable จึงให้ total/headroom; reserve ต้องมีฐานชุดจริง ไม่อนุมานจาก toy |
| R05 | แยก readiness/authorization/receiver/current conditions จากคณิตศาสตร์และ prepared; ไม่อนุมาน SOP |
| R06 | อ่านจำนวนสะสม correction/ack/condition แยก; รุ่นเก่ากัก เก็บต้นฉบับและประวัติ |
| R07 | เก็บ input/schema/rules/config/output และ baseline; เปลี่ยนชุดต้อง re-review คืน known-reviewed หรือ hold |
| R08 | ข้อมูลเฉื่อยและแชร์ขั้นต่ำตามสิทธิ์/ผู้รับ; ไม่ execute note และไม่ส่งเมื่อสิทธิ์ขาด |

## งานที่ต้องส่ง

1. D-v0/D-v1 พร้อมเหตุแก้ทั้งห้าปัญหาและ input/output contract ของสองทะเบียน
2. R01–R08 ผูกกับ fields นิยามและ reason ที่ออกทาง interface โดยแยกตัวเลขสอนกับหลักฐานจริง
3. D01–D20 ตามตาราง ใส่ input expected และ **actual=not_run ทุกกรณี** proposal ไม่ใช่ผลรันและไม่เพิ่มแถวทดลองผิดใน fixture
4. Baseline และ change/rollback proposal: input/schema/rules/config/output ผู้เสนอ ผู้พัก ผู้คืน ผู้ทวน ผู้รับแจ้ง stale รุ่นที่เคยทวนหรือ hold และกรณีที่จะ recheck D01/D02/D03/กรณีที่ได้รับผลกระทบ
5. Policy ข้อมูลเฉื่อยกับสำเนาตามวัตถุประสงค์ ไม่ให้ CSV formula/command/path ทำงาน ไม่เปิดช่องแชร์หรือส่งจนสิทธิ์กับผู้รับยืนยัน

| Test / requirement | Input/เหตุการณ์ที่เสนอ | Expected ของการออกแบบ | Actual |
| --- | --- | --- | --- |
| D01 / R02,R03,R04,R05 | A ครบห้ารายการและพลังงานแต่ง | payload3.3 gross7.3 moment−0.05 CG−0.006849315; energy90 headroom30; toy only และ readiness unknown | not_run |
| D02 / R02,R03,R04 | B ตาม fixture | gross8.3 CG−0.030120482 นอกทั้งสองขอบแต่ง; energy150 headroom−30 เสนอ replan ไม่อนุมัติ | not_run |
| D03 / R01,R03 | C03 mass ว่างและ C05 x ว่าง | มวลส่วนทราบ7.0; payload/gross/moment/CG unknown ไม่เติม0หรือใช้ subtotal เทียบขอบ | not_run |
| D04 / R01,R02 | proposal ลบกล่องหรือ packaging ออกจากห้ารายการ | incomplete assembly พร้อมเหตุและรายการต้องขอ ไม่ให้ complete gross | not_run |
| D05 / R02 | proposal เพิ่ม battery ที่รวมใน aircraft_with_battery แล้ว| ชี้ double count; ขอฐานองค์ประกอบ ไม่เงียบลบหรือบวกซ้ำ | not_run |
| D06 / R03,R04 | proposal ใส่ g ใน mass_kg หรือ cm ใน x_m หรือ kg ใน Wh | unit mismatch ต้องขอข้อมูลถูกหน่วย ไม่แปลงด้วยสมมติฐานไม่ระบุ | not_run |
| D07 / R03 | proposal negative mass หรือ NaN/Infinity; signed x มีได้ | กัก invalid mass/nonfinite; x ติดลบที่เป็นตำแหน่งถูกนิยามไม่ใช่ความผิดอัตโนมัติ | not_run |
| D08 / R03,R05 | proposal A toy ผ่านแล้วอ้าง physical CG/envelope ผ่าน | คง one-axis static model; assembly validation not_performed และต้องขอการทวนชุดจริง | not_run |
| D09 / R03,R07 | proposal ของเคลื่อนหรือ mount เปลี่ยนขณะ gross เดิม | hold/review whole assembly ไม่สืบ CG/pass รุ่นเดิม; ผู้ทวนเทคนิคมี owner | not_run |
| D10 / R01,R04 | C return ว่างและ usable unknown | known subtotal55 Wh เท่านั้น; full total/headroom unknown ไม่เติมขากลับ0 | not_run |
| D11 / R04,R05 | proposal reserve หายหรืออ้าง20Whเป็นมาตรฐาน | คง unknown เมื่อหาย และปฏิเสธ reserve ทั่วไปจาก toy; ขอฐานแผนจริง | not_run |
| D12 / R05 | proposal prepared/toy pass ให้เป็น authorized/บินได้/SOP | คง not_performed; draft allowed แต่ไม่ dispatch ไม่อนุมานวิธีปล่อยสินค้า | not_run |
| D13 / R05,R08 | proposal ผู้รับไม่ยืนยันหรือ authorization pending | hold dispatch/share; owner หลักฐานและทางเลือก; ไม่เรียก pending receipt ก่อน authorized send | not_run |
| D14 / R06 | L03=1 L04=2 supersedes L03 และ L05=2 | ยอดสะสมปัจจุบัน2 ไม่5; เก็บ L03 และ correction; ack ไม่เติมจำนวน | not_run |
| D15 / R05,R06 | L04/L05 condition unknown แต่จำนวน2/2 | ไม่ยืนยัน content acceptance; receipt evidence not_supplied คงเดิม ไม่ใช้ ack รับสภาพ | not_run |
| D16 / R01,R06 | L08 C PLAN-0 เทียบ current PLAN-1 | เก็บ stale history/quarantine ไม่อัปเดต receipt/readiness PLAN-1 | not_run |
| D17 / R01,R06 | proposal record/event_id ซ้ำหรือ logical key ชนในทะเบียนใด | กักทุกแถวชนพร้อมเหตุ ห้าม first/last wins; ไม่เพิ่ม proposal ลง fixture | not_run |
| D18 / R08 | proposal ขอแชร์ชื่อ ที่อยู่ สต็อกเต็มให้ผู้รับไม่ยืนยัน | hold จนยืนยันสิทธิ์/ผู้รับ; เสนอสำเนาข้อมูลขั้นต่ำและเก็บต้นฉบับควบคุม | not_run |
| D19 / R07 | proposal เปลี่ยนภาชนะ แบตเตอรี่ FW/control/method หรือคืนรุ่น | เก็บ input/schema/rules/config/output; impact interfaces/time/power/mass/CG; re-review known-reviewed หรือ hold แจ้ง stale และเสนอ recheck | not_run |
| D20 / R08 | proposal note เริ่ม =,+,-,@ หรือเป็นคำสั่ง/path | เก็บและแสดงข้อความเฉื่อย; export policy ที่ผู้รับผิดชอบทวน ไม่ execute หรือเปิด path | not_run |

ทั้ง 20 tests เป็นข้อเสนอ **actual ทุกกรณี not_run** ไม่มีผลผ่าน/ไม่ผ่าน ไม่มีระบบรับส่งสินค้าหรือ inventory engine จากเอกสารนี้ ขั้นคืนรุ่น/export/recheck ยังเป็นข้อเสนอ ผู้ตรวจต้องทวนก่อนพัฒนาและใช้จริง

## พื้นฐาน เป้าหมายและหลักฐาน KSEC

| ID / มิติ | พื้นฐานและงานเติมก่อนเริ่ม | เป้าหมาย / กิจกรรมและหลักฐาน | เกณฑ์ที่ต้องแสดง |
| --- | --- | --- | --- |
| APP-M09-D-K01 / K | รู้ schema/key/null และขอบอินเทอร์เฟซ; ทวน [การรวมระบบ](https://drone.pk-research.work/knowledge/integration/) แล้วใช้ [การทดสอบ](https://drone.pk-research.work/knowledge/testing/) แยก blank กับ zero | อธิบาย contract R01–R08 และเหตุแก้ D-v0→D-v1; input/output contract mass definition และ requirement map | แยกข้อมูล/คณิตศาสตร์/หลักฐานจริง ไม่อนุมาน SOP หรือ approval |
| APP-M09-D-S01 / S | ผูก requirement กับ input/expected ได้; ทวน [การทดสอบ](https://drone.pk-research.work/knowledge/testing/) แล้วเสนอหนึ่ง test กรณีช่องว่างโดยไม่อ้างผลรัน | ออกแบบ 20 tests ผ่าน interface และแผน recheck; D01–D20 requirement input expected actual และ rollback proposal | ครบ20 actual not_run ครอบคลุมหน่วย ขาด ซ้ำ รุ่น สะสมและสถานะ |
| APP-M09-D-E01 / E | พร้อมรายงาน expected แยก actual และไม่ execute ข้อมูล; ทวน [ข้อมูลส่งมอบและสิทธิ์](https://drone.pk-research.work/knowledge/disaster-management/data-handover/) แล้วแก้ claim tested และระบุช่องทางส่งตามสิทธิ์ | จำกัดข้ออ้างและเสนอข้อมูลเฉื่อย/การแชร์ขั้นต่ำ; status/claim/export policy และขอบ recipient authorization | ไม่มี parser/runtime/autoapproval; CSV ไม่รันสูตร/คำสั่ง/path |
| APP-M09-D-C01 / C | พร้อมเก็บ baseline รับคำทักและระบุผู้พัก/คืน/ทวน; ทวน [การรวมระบบ](https://drone.pk-research.work/knowledge/integration/) แล้วระบุ trigger เปลี่ยนภาชนะหรือ firmware | ควบคุมการเปลี่ยนและคืนรุ่นพร้อมผู้รับผิดชอบ; D-v0/D-v1 input/schema/rules/config/output change/rollback/recipient log | เปลี่ยนทั้งชุดต้อง re-review; known-reviewed หรือ hold และแจ้ง stale |

## ตรวจตนเอง แก้และส่งซ้ำ

| ID | ต้องฝึกเพิ่มเมื่อ | มีหลักฐานตามเกณฑ์เมื่อ | แก้และส่งซ้ำ |
| --- | --- | --- | --- |
| APP-M09-D-K01 | validator ผ่านเท่ากับ approved หรือไม่รวม packaging | contract คงที่มา unknown และ reason ที่ไม่อ้าง readiness | เติมนิยามและขอบแล้วให้ผู้ตรวจทวน contract; ทวน [การรวมระบบ](https://drone.pk-research.work/knowledge/integration/) |
| APP-M09-D-S01 | เขียน tested/pass หรือไม่มี duplicate/blank case | expected ทวนได้ครบทุก case และ actual not_run | เติม case/expected ที่ขาดแล้วทวน mapping ใหม่; ทวน [การทดสอบ](https://drone.pk-research.work/knowledge/testing/) |
| APP-M09-D-E01 | อ้างระบบทำงานจริงหรือใช้ note เป็นคำสั่ง | แสดงข้อความเฉื่อยและคงไม่ส่งเมื่อสิทธิ์ขาด | ถอน claim กับแก้ export policy แล้วให้ผู้ทวนตรวจ; ทวน [ข้อมูลส่งมอบและสิทธิ์](https://drone.pk-research.work/knowledge/disaster-management/data-handover/) |
| APP-M09-D-C01 | สืบผล toy ผ่านหลังเปลี่ยนระบบหรือคืน v0 ที่ผิด | คงทั้งรุ่น ผู้ทวนและข้อเสนอ recheck ก่อนใช้งาน | เติมผลกระทบ เจ้าของ คืนรุ่นและ recheck แล้วส่งซ้ำ; ทวน [การรวมระบบ](https://drone.pk-research.work/knowledge/integration/) |

ลงผลราย ID เป็น **มีหลักฐานตามเกณฑ์ / ต้องฝึกเพิ่ม / ยังไม่มีหลักฐาน** พร้อมเหตุ รุ่น ผู้ตรวจและงานเติม เก็บก่อน/หลังกับคำตอบทุกข้อทัก หากยังไม่เกิดกิจกรรมคงยังไม่มีหลักฐาน ไม่แต่งผลผู้เรียน ผลสนามหรือผล tests ช่อง CLO/PLO ยังว่างและ pending_design ใช้ [learning record ร่วม](https://drone.pk-research.work/downloads/drone-applications/ksec-learning-record.md) เพื่อเตรียมบันทึก ไม่รับรองความสามารถจากการอ่าน

## สัญญาข้อมูลครบสำหรับใช้แยกไฟล์

Manifest มี 15 แถวและ 15 fields ตามลำดับ:

```text
record_id,case_id,shipment_id,plan_version,component_id,component_role,mass_kg,x_m,measurement_basis,metadata_origin,measurement_status,assembly_validation_status,execution_status,review_status,note
```

| Field | นิยามและค่าที่ใช้ |
|---|---|
| record_id / case_id / shipment_id | รหัสแถว A01–C05 / TRAIN-LOG-01 / A B C |
| plan_version / component_id | PLAN-1 / COMP-01–COMP-05 ตามลำดับบทบาทในแต่ละ shipment |
| component_role | aircraft_with_battery รวมแบตเตอรี่แต่ไม่รวมกล่อง/บรรจุภัณฑ์/ของ; empty_cargo_case กล่องเปล่า; total_packaging บรรจุภัณฑ์ทั้งหมด; contents_pack1/2 สิ่งของแต่ละห่อ |
| mass_kg / x_m | มวล kg และตำแหน่ง m สัมพัทธ์จุดอ้างอิงลำสมมติ; C03 mass และ C05 x ว่าง ต้องคงว่าง |
| measurement_basis | author_assumed_point_masses_1d ทุกแถว; สมมติจุดมวลนิ่งแกนเดียว |
| metadata_origin | author_provided_teaching_assumption ทุกแถว |
| measurement_status / assembly_validation_status / execution_status | not_performed ทุกแถวทั้งสามช่อง |
| review_status | pending_field_review ทุกแถว |
| note | TABLETOP_ONLY_no_measurement_or_flight_approval ทุกแถว; ข้อความเฉื่อย |

logical key ของ manifest คือ (case_id,shipment_id,plan_version,component_id) ถ้ามีชนกันต้องกักรายการที่ชนทั้งหมด ไม่เลือกแถวแรก/สุดท้ายเอง ตัวอย่างผิด หน่วยผิดหรือรายการซ้ำเป็นเพียงข้อเสนอ tests ไม่เพิ่มใน 15 แถว

| record_id | shipment / component_id | component_role | mass_kg | x_m |
| --- | --- | --- | --- | --- |
| A01 | A / COMP-01 | aircraft_with_battery | 4 | 0 |
| A02 | A / COMP-02 | empty_cargo_case | 0.5 | 0 |
| A03 | A / COMP-03 | total_packaging | 0.3 | 0 |
| A04 | A / COMP-04 | contents_pack1 | 1.5 | 0.1 |
| A05 | A / COMP-05 | contents_pack2 | 1 | -0.2 |
| B01 | B / COMP-01 | aircraft_with_battery | 4 | 0 |
| B02 | B / COMP-02 | empty_cargo_case | 0.5 | 0 |
| B03 | B / COMP-03 | total_packaging | 0.3 | 0 |
| B04 | B / COMP-04 | contents_pack1 | 1.5 | 0.1 |
| B05 | B / COMP-05 | contents_pack2 | 2 | -0.2 |
| C01 | C / COMP-01 | aircraft_with_battery | 4 | 0 |
| C02 | C / COMP-02 | empty_cargo_case | 0.5 | 0 |
| C03 | C / COMP-03 | total_packaging | ว่าง | 0 |
| C04 | C / COMP-04 | contents_pack1 | 1.5 | 0.1 |
| C05 | C / COMP-05 | contents_pack2 | 1 | ว่าง |

Handover มี 8 แถวและ 17 fields ตามลำดับ:

```text
event_id,case_id,shipment_id,plan_version,event_order,event_type,recipient_role,declared_packs,received_packs,quantity_basis,cargo_condition,authorization_basis,supersedes_event_id,event_origin,execution_status,receipt_evidence_status,review_status
```

| Field | นิยามและค่าที่ใช้ |
|---|---|
| event_id / case_id / shipment_id | L01–L08 / TRAIN-LOG-01 / A B C |
| plan_version / event_order | PLAN-1 ยกเว้น L08 PLAN-0 / ลำดับแต่งต่อ shipment ไม่ใช่ timestamp จริง |
| event_type / recipient_role | ชนิดเหตุการณ์ตามตาราง / ROLE-A ROLE-B ROLE-C เป็นบทบาทสมมติ |
| declared_packs / received_packs | declared=2 ทุกแถว / จำนวนสะสมตามตาราง ช่องว่างไม่ใช่ 0 |
| quantity_basis | author_assumed_cumulative_receipt_report ทุกแถว |
| cargo_condition | assumed_sealed หรือ unknown; ไม่ใช่ผลตรวจสภาพจริง |
| authorization_basis | not_confirmed_for_tabletop หรือ author_assumed_confirmed_for_tabletop; ทั้งสองเป็นค่าข้อมูลสอน ไม่ใช่ข้ออนุญาตจริง |
| supersedes_event_id | L04 อ้าง L03; แถวอื่นว่าง; เก็บ L03 ในประวัติ |
| event_origin | author_provided_teaching_assumption ทุกแถว |
| execution_status / receipt_evidence_status / review_status | not_performed / not_supplied / pending_field_review ทุกแถว |

event_id ต้องไม่ชน และ key ลำดับ (case_id,shipment_id,plan_version,event_order) ต้องทวนเมื่อชน ตรวจรุ่นปัจจุบัน PLAN-1 จาก manifest ก่อนอ่านเหตุการณ์ ห้ามใช้ L08 เปลี่ยนสถานะ C ของ PLAN-1

| event_id | shipment / plan / order | event_type / recipient_role | received_packs | condition | authorization_basis | supersedes |
| --- | --- | --- | --- | --- | --- | --- |
| L01 | A/PLAN-1/1 | prepared / ROLE-A | ว่าง | assumed_sealed | not_confirmed_for_tabletop | ว่าง |
| L02 | A/PLAN-1/2 | dispatched / ROLE-A | ว่าง | assumed_sealed | author_assumed_confirmed_for_tabletop | ว่าง |
| L03 | A/PLAN-1/3 | receipt_report / ROLE-A | 1 | assumed_sealed | author_assumed_confirmed_for_tabletop | ว่าง |
| L04 | A/PLAN-1/4 | receipt_correction / ROLE-A | 2 | unknown | author_assumed_confirmed_for_tabletop | L03 |
| L05 | A/PLAN-1/5 | acknowledgement / ROLE-A | 2 | unknown | author_assumed_confirmed_for_tabletop | ว่าง |
| L06 | B/PLAN-1/1 | authorization_requested / ROLE-B | ว่าง | assumed_sealed | not_confirmed_for_tabletop | ว่าง |
| L07 | C/PLAN-1/1 | dispatch_proposed / ROLE-C | ว่าง | assumed_sealed | not_confirmed_for_tabletop | ว่าง |
| L08 | C/PLAN-0/2 | stale_receipt_report / ROLE-C | 2 | unknown | author_assumed_confirmed_for_tabletop | ว่าง |

ตารางและค่าคงที่ข้างต้นให้ข้อมูลทุก field ของสอง CSV ได้ครบ ไม่มีข้อมูลบุคคลจริง ข้อความ CSV เป็นข้อมูลเฉื่อย ไม่ให้สูตร คำสั่งหรือ path ในข้อความทำงาน ไม่สร้าง parser validator ระบบจัดสรรสต็อก mission state engine ระบบปล่อยของหรือ backend ในชุดนี้

## แนวคำตอบมวล จุดศูนย์ถ่วงและพลังงาน

เฉพาะโจทย์นี้ declared_payload = กล่องเปล่า + บรรจุภัณฑ์ + สิ่งของสองห่อ; assembly_gross = ลำพร้อมแบตเตอรี่ + declared_payload; moment = Σ(mass_kg × x_m); x_CG = moment / assembly_gross เมื่อมวลและตำแหน่งครบ มวลรวมเป็นบวกและทุกค่าเป็นจำนวนจำกัด นิยามผู้ผลิตจริงอาจต่างกัน ต้องทวนชุดที่อนุมัติจริง

ขอบสมมติที่ผู้เรียบเรียงตั้งคือ assembly_gross ≤ **8 kg** และ x_CG อยู่ใน **[−0.02,+0.02] m** ใช้อธิบายอสมการเท่านั้น ไม่ใช่ข้อกำหนดผู้ผลิตหรือขอบอนุมัติบิน แบบจำลองเป็นจุดมวลนิ่งแกนเดียว ไม่มีการวัดหรือการทวนพลวัต การยึดสินค้าและการเคลื่อนของจริง

| Shipment | declared payload | gross ทั้งชุด | moment | x_CG | คำตอบเฉพาะโจทย์ |
|---|---|---|---|---|---|
| A | 3.3 kg | 7.3 kg | −0.05 kg·m | −0.05/7.3 = −0.006849315 m | อยู่ในสองอสมการสมมติเท่านั้น ความพร้อมจริงยังไม่ยืนยัน |
| B | 4.3 kg | 8.3 kg | −0.25 kg·m | −0.25/8.3 = −0.030120482 m | เกินมวลและอยู่นอกช่วง CG สมมติ ให้เสนอวางใหม่/บริการ/ภาคพื้น |
| C | unknown | unknown; ส่วนมวลที่ทราบ 7.0 kg | unknown | unknown | บรรจุภัณฑ์และตำแหน่งห่อ 2 ว่าง ขอข้อมูล ไม่ใช้ 7.0 เทียบ 8 เป็นยอดครบ |

A คิดทีละส่วน: moment ของสิ่งของ = 1.5×0.1 + 1×(−0.2) = −0.05 kg·m ส่วนอีกสามรายการอยู่ x=0 จึงให้ moment ศูนย์ เมื่อนำ moment หารมวลทั้งชุด 7.3 kg ได้ x_CG ข้างต้น อย่าหารด้วย payload 3.3 kg หรือบวกแบตเตอรี่เดิมซ้ำ

พลังงานเป็นตารางสมมติแยกจาก manifest: total_energy = outbound + service + return + reserve เมื่อครบ; headroom = usable_energy − total_energy เมื่อทั้งสองด้านทราบ ตัวเลขไม่มาจากแรงดัน กระแส แบตเตอรี่จริง แบบจำลองลม ระยะหรือสมรรถนะการบิน **reserve 20 Wh เป็นสมมติฐานสอนเท่านั้น ไม่ใช่คำแนะนำพลังงานสำรองหรือร้อยละสำรอง**

| Shipment | usable (Wh) | ไป / ส่ง / กลับ / reserve (Wh) | ผลรวมพลังงาน | headroom |
|---|---|---|---|---|
| A | 120 | 30 / 5 / 35 / 20 | 90 Wh | 30 Wh ตามโจทย์ ไม่ยืนยันบิน |
| B | 120 | 60 / 10 / 60 / 20 | 150 Wh | −30 Wh; เสนอวางใหม่/วิธีอื่น |
| C | unknown | 30 / 5 / ว่าง / 20 | ส่วนที่ทราบ 55 Wh; ยอดครบ unknown | unknown เพราะขากลับและพลังงานใช้ได้ขาด |

ไม่มีสัดส่วน shipment ผ่าน ไม่มีพิกัดบรรทุกจริง ระยะบินหรือคำสั่งบินอัตโนมัติ A ยังต้องมีหลักฐานชุดจริง คน สภาพปัจจุบันและสิทธิ์ B มีปัญหาทั้งตัวเลขและการอนุญาตแยกกัน C ต้องขอข้อมูลและการอนุญาตก่อนทวนใหม่

## แนวคำตอบสายการครอบครองและรายงานรับ

| Event | การอ่านสถานะสมมติที่ถูกต้อง | งานค้าง |
|---|---|---|
| L01 | prepared แต่ authorization ยังไม่ยืนยัน | hold dispatch; ทำร่างได้ ไม่มีการส่ง |
| L02 | สมมติว่าการส่งได้รับอนุญาตและ dispatched แล้ว| sent/pending receipt เฉพาะเรื่องแต่ง ไม่มีการส่งจริง |
| L03 | รายงานสะสมรับ 1 จาก declared 2 | quantity discrepancy ยังปิดจำนวนไม่ได้ |
| L04 | แก้รายงาน L03 เป็นสะสม 2 และเก็บ L03 ไว้ | จำนวนตรงเฉพาะเรื่องแต่ง สภาพ unknown ยังไม่ยอมรับสภาพครบ |
| L05 | ตอบรับทราบรายงานปัจจุบันที่สะสม 2 | ack ไม่เพิ่มอีก 2 ห่อ และไม่ยืนยันสภาพ |
| L06 | B ขอ authorization แต่ยังไม่ยืนยัน | hold dispatch; ปัญหามวล/CG/พลังงานต้องทวนแยก |
| L07 | C มีเพียง dispatch proposed | ไม่ใช่ dispatched/receipt; hold สิทธิ์และข้อมูลชุด/พลังงาน |
| L08 | C รายงานจาก PLAN-0 แต่แผนปัจจุบันเป็น PLAN-1 | เก็บประวัติและกักข้อมูลเก่า ไม่อัปเดต receipt หรือความพร้อม PLAN-1 |

received_packs เป็น **รายงานจำนวนสะสม** จึงห้ามบวก 1+2+2 ของ L03/L04/L05 เป็น 5 รายงานปัจจุบันของ A คือ 2 จาก 2 เฉพาะเรื่องแต่ง โดยสภาพยังค้าง ต้องเก็บต้นฉบับ correction และรุ่นที่ถูกแทน ไม่เติม received ช่องว่างเป็น 0 และไม่ถือ log ส่งเป็นหลักฐานผู้รับครอบครองสินค้า

บันทึกจริงต้องมีผู้ส่ง/ผู้รับที่มีอำนาจ เวลา รุ่นแผน/ชุด รหัสสินค้า จำนวน สภาพและหลักฐานสายการครอบครองที่ตรวจได้ แยกการถึงของ การรับทราบข้อความและการยอมรับสภาพ เจ้าของบันทึกเก็บต้นฉบับควบคุมสิทธิ์กับสำเนาตามวัตถุประสงค์ ลดชื่อ ที่อยู่และรายละเอียดสต็อกเท่าที่จำเป็น ห้ามแชร์หรือ dispatch เมื่อผู้รับ/สิทธิ์ยังไม่ยืนยัน คำว่า pending receipt ใช้หลังการส่งที่ได้รับอนุญาตจริงเท่านั้น; ในทะเบียนนี้ L02 เป็นสมมติฐาน ไม่ใช่หลักฐานการส่งนั้น

## แหล่ง ขอบอ่านและสิทธิ์

- [UNICEF Guidance on the Use of Drones in Supply Chains](https://www.unicef.org/supply/documents/unicef-guidance-use-drones-supply-chains), [PDF](https://www.unicef.org/supply/media/10326/file): ตรวจปก/สารบัญและส่วน 1–3 หน้า PDF 4–7 ของเอกสาร 16 หน้า วันที่ 12 ตุลาคม 2026 ไม่อ้างว่าอ่านภาคผนวกจัดซื้อหรือขั้นตอนสินค้าทางการแพทย์ครบ
- [DJI FlyCart 30 downloads](https://www.dji.com/flycart-30/downloads), [User Manual v1.1 (หน้า download ลงวันที่ 9 กรกฎาคม 2025; ปก PDF ระบุ 2024.06)](https://dl.djicdn.com/downloads/DJI_FlyCart_30/20250709/DJI_FlyCart_30_User_Manual_v1.1_0709.pdf): ตรวจปกและหน้า PDF/พิมพ์ 33 กับ 79 จาก 98 หน้า วันที่ 14 ตุลาคม 2026 ไม่ได้อ่านคู่มือกว้าน ไม่มีการย้ายตัวเลข ขั้นตอนหรือคุณสมบัติรุ่นนี้เป็นเกณฑ์ทั่วไป
- ฐาน KSEC และขอบ OBE ใช้ [ภาพรวม KSEC](https://drone.pk-research.work/knowledge/drone-applications/#ksec) K=Knowledge, S=Skills, E=Ethics, C=Character; C ไม่ใช่ experience competency ใช้พฤติกรรมในชิ้นงาน ไม่ติดป้ายบุคลิกและไม่รับรอง KSEC/OBE จากการอ่าน

โจทย์ กระบวนการสอน ตัวเลข สูตร ตาราง requirements/tests และ rubric เป็นงานออกแบบของ PK-Research / Drone-Hub ไม่ใช่ SOP ของ UNICEF หรือผู้ผลิต ใบงานและ fixture ที่เรียบเรียงใหม่ใช้ [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) ให้เครดิตผู้เรียบเรียง ชุด/รุ่น แหล่งและการแก้ เอกสาร รูป โลโก้และสื่อภายนอกคงสิทธิ์เจ้าของเดิม ไม่รวม PDF ภายนอกหรือขยายใบอนุญาตให้สื่อเหล่านั้น
