ขอ connector
แจ้งผู้ดูแล WCS ถึงชื่อระบบ ผู้รับผิดชอบ และขอบเขตการใช้งาน รับ token ผ่าน secret store ขององค์กร
WATER CAD STUDIO · INTEGRATIONS
ให้ระบบสำรวจและวิเคราะห์บริบทส่งข้อมูลพร้อมที่มาเข้าสู่ WCS แล้วรับแบบ รายการคำนวณ ปริมาณ และ BOQ กลับตามฉบับที่ผ่านการตรวจ
คู่มือ · Client · Callback / SQL
ตัวอย่างข้อมูล · SHA-256 manifest
แจ้งผู้ดูแล WCS ถึงชื่อระบบ ผู้รับผิดชอบ และขอบเขตการใช้งาน รับ token ผ่าน secret store ขององค์กร
เลือกแม่แบบ อ่าน fields, หน่วย, investigations, HOLD และ requirements SHA จาก API ล่าสุด
ใช้รหัส record/revision ที่คงเดิม พร้อมที่มาของค่าทุกช่อง ส่งไฟล์ที่ประกาศให้ครบก่อนขอสร้างแบบ
เปิดฉบับส่งตรวจให้ผู้รับผิดชอบดำเนินการ รับ callback เมื่ออนุมัติ แล้วดาวน์โหลดตาม fingerprint และ SHA
แตก ZIP แล้วตั้ง WCS_EXCHANGE_TOKEN จาก secret store ใน environment ของ service ก่อนเรียกคำสั่ง ตัวอย่างนี้ไม่มี token ให้คัดลอก
python -m pip install -r requirements-sdk.txt
python sdk/wcs_exchange_client.py --output templates.json templates
python sdk/wcs_exchange_client.py --output RH-15_requirements.json requirements RH-15SDK ใช้ HTTPS ของ https://cad-studio.entawisdom.com เป็นค่าเริ่มต้น ไฟล์ output ต้องเป็นชื่อใหม่เพื่อไม่เขียนทับหลักฐานเดิม
ส่ง Authorization: Bearer <service-token> ใน header ผู้ดูแลสร้าง connector จากบัญชี admin และ CSRF ของเว็บ ไม่ใช้บัญชีวิศวกร บัญชีฐานข้อมูล หรือ worker token เป็น credential ของระบบต้นทาง
| Scope | ใช้สำหรับ |
|---|---|
requirements:read | อ่านทะเบียนแม่แบบและข้อกำหนดรายชนิด |
submissions:write | ส่งข้อมูลและไฟล์หลักฐานของ connector นี้ |
submissions:read | อ่านสถานะและรับไฟล์ฉบับอนุมัติที่เป็นเจ้าของ |
drafts:generate | ขอสร้างแบบและเตรียมฉบับส่งตรวจ |
กำหนดเฉพาะสิทธิ์ที่ต้องใช้จริง Token ไม่ทำให้ service อนุมัติแบบหรือปิด HOLD ได้ เมื่อเพิกถอน connector ให้หยุดใช้ token เดิมและตรวจสถานะคำขอที่ค้างกับผู้ดูแล
เรียก GET /api/exchange/v1/requirements/{template} และตรวจ requirements_sha256 SDK ตรวจ hash ของคำตอบให้แล้ว แม่แบบแต่ละรายการมี generation inputs กับข้อกำหนดสำรวจ/ทดสอบแยกกัน การมีรายการในทะเบียนไม่ได้แปลว่าสร้าง CAD ได้ ให้ตรวจ generation_supported เสมอ
values ใช้ key และหน่วยตาม fields ที่ประกาศ ไม่แปลง UTM, datum หรือหน่วยให้เองuser_supplied, measured, standard, designer_selected และ assumed ให้ตรงข้อเท็จจริงobserved_on, method และ evidence_ids ที่มีไฟล์จริงให้ผู้ตรวจอ่านexample_defaults เป็นตัวอย่างสมมติ ไม่เติมเป็นค่าพื้นที่จริงอัตโนมัติ{
"value": 2.5,
"unit": "m",
"classification": "assumed",
"source_reference": "ตัวอย่างรูปแบบข้อมูลเท่านั้น"
}submission ประกอบด้วย schema_version, template, source_reference, requirements_sha256, values และข้อมูล paper/title/location/evidence ตามที่ใช้ กระดาษรองรับ A3 และ A1 โดยเริ่มต้น A3 พิกัดรองรับ EPSG:4326 พร้อมที่มาและ classification ที่กำหนด
Schema envelope ตรวจโครงสร้างทั่วไป ไม่ยืนยันว่าข้อมูลครบทุกช่องหรือถูกต้องทางวิศวกรรม ต้องอ่าน requirements ของแม่แบบนั้นร่วมด้วย
ประกาศ evidence ใน submission ด้วย id, title, source_reference และ SHA-256 แล้วอัปโหลดผ่าน POST /api/exchange/v1/submissions/{id}/evidence เฉพาะ connector เจ้าของรายการ
python sdk/wcs_exchange_client.py upload-evidence SUBMISSION_UUID survey-report-R1 actual_report.pdf --media-type application/pdf --expected-sha256 ACTUAL_SHA256ส่งไฟล์ที่ประกาศให้ครบก่อน generate หรือ prepare-review ข้อมูล/ไฟล์เปลี่ยนต้องออก source revision ใหม่ ไฟล์เดิม ชื่อเดิม ชนิดเดิมส่งซ้ำได้และคืน UUID เดิม หลังเริ่มสร้างงานห้ามเพิ่มหรือแทนไฟล์ต้นทางในรายการเดิม
การรับไฟล์และตรวจ hash ไม่ใช่การยืนยันเนื้อหารายงาน ผลทดสอบ หรือการรับรองทางวิศวกรรม ข้อ HOLD ยังเปิดจนผู้ตรวจที่มีอำนาจตรวจหลักฐานจริง
python sdk/wcs_exchange_client.py submit provided_submission_R1.json --idempotency-key SOURCE-RECORD-001:R1
python sdk/wcs_exchange_client.py status SUBMISSION_UUID
python sdk/wcs_exchange_client.py generate SUBMISSION_UUID
python sdk/wcs_exchange_client.py status SUBMISSION_UUID
python sdk/wcs_exchange_client.py prepare-review SUBMISSION_UUIDIdempotency-Key ยาว 8–128 ตัวอักษร ใช้รหัส record/revision ที่คงเดิมสำหรับข้อมูลเดิม key เดิมกับข้อมูลเปลี่ยนจะได้409 เมื่อข้อมูลเปลี่ยนให้ออก revision ใหม่ ไม่ใช้ key สุ่มเพื่อหลบผล validation
validated คือผ่านรูปแบบข้อมูล ไม่ใช่ผลสำรวจผ่านตรวจgenerating / generated คือสถานะสร้างไฟล์ ไม่ใช่สถานะอนุมัติdispatch_uncertain ต้องตรวจคำขอเดิมและให้ผู้ดูแลกระทบยอด ไม่สร้าง CAD ซ้ำแทนการตรวจCAD รายการคำนวณ QTO และ BOQ อ้างฉบับและรหัสรายการเดียวกัน รายการราคาไม่มีหลักฐานคงว่าง ไม่สร้างผลสำรวจ ราคา ลายมือชื่อ หรือการรับรองเพื่อให้ชุดเอกสารดูครบ
package.approved อย่างตรวจสอบได้ทีมต้นทางเตรียม HTTPS endpoint พอร์ต443 บน public host ขององค์กรและให้ผู้ดูแลกำหนดใน connector WCS ไม่ส่งไป private/reserved host และไม่ตาม redirect รับ signing key ผ่าน secret store แยกจาก service token
X-WCS-Event-ID, X-WCS-Timestamp, X-WCS-Signatureverify_callback() ตรวจ HMAC-SHA256 ของ timestamp + จุด + raw body ก่อน parse/บันทึก ไม่ stringify JSON ใหม่ก่อนตรวจตัวอย่างใน SDK มี callback_receiver_example.py และ SQL อ้างอิงสำหรับฐานข้อมูลต้นทาง ใช้ connection เฉพาะที่ autocommit=False ไม่มีการติดตั้งตารางในฐานข้อมูล WCS ให้อัตโนมัติ
ใช้ project_id, version_id และ artifact_fingerprint จาก event ที่ตรวจแล้ว SDK ดาวน์โหลดแยกไฟล์ CAD ราคากลาง และหลักฐานที่ผูกฉบับ ตรวจ SHA ทุกไฟล์ก่อนสร้าง RELEASE_COMPLETE.json
python sdk/wcs_exchange_client.py download PROJECT_UUID VERSION_UUID --directory received --expected-fingerprint HASH_FROM_CALLBACKดาวน์โหลดซ้ำใช้ไฟล์ hash เดิมได้ ไม่เขียนทับไฟล์ต่าง hash จำกัดช่องทางนี้ 64MBต่อไฟล์ การรับ callback/ดาวน์โหลดสำเร็จไม่ใช่การลงนามรับรองเพิ่มหรืออนุมัติในระบบราชการอื่น การส่งอีเมลสำเร็จเป็นสถานะขนส่ง ไม่ใช่ผลตรวจแบบ
| Method | Path | การใช้งาน |
|---|---|---|
| GET | /api/exchange/v1/templates | อ่านทะเบียนและสถานะสร้างได้ |
| GET | /api/exchange/v1/requirements/{template} | อ่านข้อกำหนดและ SHA |
| POST | /api/exchange/v1/submissions | รับข้อมูลด้วย Idempotency-Key |
| POST | /api/exchange/v1/submissions/{id}/evidence | รับไฟล์หลักฐานจริง |
| GET | /api/exchange/v1/submissions/{id} | สถานะคำขอเดิม |
| POST | /api/exchange/v1/submissions/{id}/generate | ขอสร้างร่าง |
| POST | /api/exchange/v1/submissions/{id}/prepare-review | เตรียมฉบับส่งตรวจ |
| GET | /api/exchange/v1/projects/{project}/versions/{version}/manifest | manifest ฉบับอนุมัติ |
| GET | …/artifacts/{filename} | ไฟล์ CAD ตาม manifest |
| GET | …/pricing-artifacts/{filename} | Excel/PDF/ไฟล์ชุดราคา |
| GET | …/evidence/{evidence_id} | เฉพาะหลักฐานที่ผูกฉบับ |
เครื่องหมาย … หมายถึง prefix /api/exchange/v1/projects/{project}/versions/{version} ชื่อ parameter ใน route inventory อาจใช้ชื่อสั้นกว่า แต่ลำดับ path เดียวกัน
↓ Route inventory จากชุดส่งมอบ| HTTP | สิ่งที่ต้องทำ |
|---|---|
| 401 / 403 | ตรวจ token, scope, connector enabled และความเป็นเจ้าของ ห้ามสลับใช้ worker token หรือบัญชี admin แทน |
| 409 | ตรวจ revision, idempotency, requirements hash, สถานะเดิมและ HOLD ก่อนดำเนินการต่อ |
| 413 | ใช้ช่องทางไฟล์ใหญ่ที่องค์กรจัดสิทธิ์และตรวจ hash อย่าตัดรายงานแล้วอ้างว่าหลักฐานครบ |
| 422 / rejected | แก้ข้อมูลและที่มาตามข้อกำหนด ไม่เติมผลสำรวจหรือราคาให้ดูครบ |
| 503 / การเชื่อมต่อขาด | ติดตาม request เดิมก่อน ไม่ถือว่า job สิ้นสุดจาก observation timeout และไม่ส่ง POST สร้างซ้ำโดยเดา |
SDK ไม่ retry คำสั่งเขียนเอง เมื่อได้500พร้อม incident_id ให้ส่งรหัสนั้นให้ผู้ดูแล โดยไม่ส่ง credential หรือเนื้อหารายงานผ่าน log
Python SDK/CLI · คู่มือ · callback/SQL
ตัวอย่างข้อมูล INCOMPLETE · JSON schema · ใบอนุญาตฟอนต์
SHA-256 ของ ZIP
e32f9c9aa97a7ae855bd58d36f8506cee9f053ecd2785d2f58cf9aab25edae76ชุดดาวน์โหลดตรวจ SDK7กรณีและ callback กับ PostgreSQL8กรณี โดยใช้ข้อมูล TEST การติดตั้ง endpoint ขององค์กรและการรับส่งจริงต้องทดสอบร่วมกันเมื่อทีมพร้อม
กำหนดผู้รับผิดชอบและ connector/scopes, secret store, HTTPS callback, การเทียบ record/revision กับ submission/project/version, durable inbox/worker/retry, สิทธิ์และสำรองไฟล์ รวมถึงผู้รับและผู้ตรวจที่มีอำนาจจริง ผู้ดูแล WCS ต้องตรวจคิวก่อนเปิด dispatcher