เช็ค card "POS Assortment" ที่ยังเปิดอยู่ใน Jira เทียบ barcode + store code ทุกร้านในตั๋วกับ MongoDB แล้วปิด card อัตโนมัติถ้าทุกร้าน sync ครบ หรือติด flag ถ้ายังมีร้านค้างอยู่
หน้านี้เป็น static page ล้วน ไม่มี backend — จึงต่อ MongoDB และเรียก Jira API ตรงจากเบราว์เซอร์ไม่ได้
(MongoDB ไม่รองรับการต่อจาก browser โดยตรง ต่อให้ทำได้ก็ไม่ควรฝัง connection string ไว้ในโค้ดที่ทุกคนเปิด view source เห็นได้
และเรียก Jira ตรงจาก browser ก็ไม่ได้เพราะ CORS/credential) วิธีใช้จึงเป็น 3 ขั้นตอน: ดาวน์โหลด script → run บนเครื่องคุณเอง
(ใช้ Jira token + Mongo connection string ที่มีอยู่แล้ว) → วางผลลัพธ์กลับมาดูเป็นตารางที่นี่
ตอน run จริง (ไม่ใส่ --dry-run) script จะหา card "POS Assortment" ที่ยังเปิดอยู่ทั้งหมด ดึง Barcode + Store Codes
(ตั๋วเดียวมีได้หลายร้าน) จาก card แล้วรัน check เดิมที่ทีมใช้เช็คมือทีละร้านบน MongoDB (store.stores หา storeNo จาก
storeCode → store.pos_assortments หา record ที่ storeNo+barcode ตรงกัน) พร้อมเช็ค order.hold_orders
ว่าร้านนั้นมี hold order ที่ครอบคลุมวันนี้อยู่มั้ย (ถ้ามีจะเอา reason เช่น LATE_PAYMENT มาโชว์ใน comment ด้วย ถ้าไม่มีจะใส่ -
หมายความว่าร้านไม่ได้ถูก hold แต่เครื่อง POS ยังไม่ sync ข้อมูลมาจริงๆ) ถ้าทุกร้านใน ticket sync ครบแล้ว
จะ assign card ให้ตัวเอง (เฉพาะถ้ายังไม่มี assignee เดิม) comment สรุปเป็นตาราง แล้วปิด (Close) พร้อมตั้ง
Resolution/Fix Version ให้ตามที่ทีมปิดกันด้วยมืออยู่แล้ว (ถ้า card ยังเปิดอยู่ที่ Open จะย้ายผ่าน In Progress ก่อนแล้วปิดต่อในรอบเดียวกัน)
ถ้ามีร้านใดร้านหนึ่งยังไม่ sync จะย้าย card ไป In Progress (ถ้ายังไม่ถูกย้าย) แล้วติด flag
Impediment ไว้ให้รัน POS Repair ซ้ำ (เช็คซ้ำทุกรอบ ไม่ผูกกับจังหวะย้ายครั้งแรกเท่านั้น) และ script จะเช็คเวอร์ชันตัวเองกับ
GitHub ให้ทุกครั้งที่ run — ถ้าเก่าไปจะเตือนให้โหลดใหม่ก่อน
ยังไม่เคยเตรียมเครื่อง หรือรันแล้วเจอ error? ไปที่แท็บ "เตรียมเครื่อง & แก้ปัญหา" ด้านบนก่อนได้เลย
script จะหา card "POS Assortment" ที่ยังไม่ปิดทั้งหมด เช็คทุกร้านในแต่ละ card บน MongoDB แล้ว comment + ย้าย/ปิด card อัตโนมัติตามผล
ดาวน์โหลด mongo_jira_check_assortment.py v...ไฟล์ที่โหลดจะมีเลขเวอร์ชันต่อท้ายชื่อไฟล์ (เช่น mongo_jira_check_assortment_v1.0.0.py) เพื่อให้เห็นชัดว่าไฟล์ไหนใหม่สุด — เปลี่ยนชื่อไฟล์ยังไงก็รันได้เหมือนกัน ไม่กระทบการทำงาน แค่ต้องพิมพ์คำสั่งให้ตรงกับชื่อไฟล์จริงที่ดาวน์โหลดมา (ก็อปคำสั่งด้านล่างนี้ได้เลย จะตรงกับชื่อไฟล์ให้อัตโนมัติ)
เช็คดูก่อน ไม่แก้ card จริง (dry-run):
python3 mongo_jira_check_assortment.py --dry-run
run จริง (โพสต์ comment + ย้าย/ปิด card ขึ้น Jira ตามผล):
python3 mongo_jira_check_assortment.py
ทุกครั้งที่ run script จะเช็คเวอร์ชันตัวเองกับเวอร์ชันล่าสุดบน GitHub ให้เอง — ถ้าเจอว่าเก่าจะเตือนและถามก่อนว่าจะรันต่อไหม ไม่ต้องมาเช็คเองว่าไฟล์เก่าหรือยัง
คัดลอก output ทั้งหมดจาก terminal มาวางที่นี่ เพื่อดูสรุปแบบอ่านง่าย — ข้อมูลนี้ประมวลผลในเบราว์เซอร์ของคุณเท่านั้น ไม่ส่งไปที่ไหน
ต้องมี 3 อย่างนี้ก่อน script จะรันได้ครับ:
pymongo — เปิด Terminal พิมพ์ pip3 install pymongo ครั้งเดียวจบเจอบ่อยบน Mac ที่ลง Python ผ่าน Homebrew — Homebrew ล็อกไม่ให้ pip ติดตั้ง package ทับ Python ของระบบตรงๆ (ตาม PEP 668) แก้โดยรันคำสั่งนี้แทน (ติดตั้งแบบ user-level เฉพาะบัญชีตัวเอง ไม่กระทบ Python ของระบบ):
pip3 install --user --break-system-packages pymongo
แล้ว run python3 mongo_jira_check_assortment.py --dry-run ใหม่อีกครั้ง (ชื่อไฟล์ให้ดูจากที่ดาวน์โหลดจริงในแท็บ "วิธีใช้งาน")
ขึ้นครั้งแรกที่ run เพราะยังไม่เคยตั้ง Jira token ของตัวเองไว้บนเครื่องนี้ (ปกติสำหรับคนที่ไม่ได้ใช้ Claude Code) — ทำตามนี้ครั้งเดียวจบ:
PASTE_TOKEN_HERE ด้วย token ที่ copy มา):cat > ~/.mongo_jira_check.json << 'EOF'
{"jira_url": "https://jira.tdshop.io/", "jira_token": "PASTE_TOKEN_HERE"}
EOF
แล้ว run python3 mongo_jira_check_assortment.py --dry-run ใหม่อีกครั้ง (ชื่อไฟล์ให้ดูจากที่ดาวน์โหลดจริงในแท็บ "วิธีใช้งาน")
ต้องเอา connection string แบบ read-only ของ PROD มาตั้งไว้บนเครื่องเองครั้งเดียว — ห้าม commit หรือแชร์ค่านี้ที่ไหนเด็ดขาด เพราะมี username/password ฝังอยู่ในเส้นเดียวกัน:
{UserName} ใน appName=... ด้วยชื่อตัวเองYOUR_CONNECTION_STRING ด้วยเส้นที่ copy มา):cat > ~/.mongo_jira_check.json << 'EOF'
{"mongo_uri": "YOUR_CONNECTION_STRING"}
EOF
ถ้าเคยตั้ง jira_token ไว้ในไฟล์นี้แล้วจากขั้นตอนก่อนหน้า ให้ใส่ทั้ง jira_url/jira_token/mongo_uri ลงใน JSON เดียวกัน (ไฟล์นี้แก้ทับได้ ไม่ต้องมีสองไฟล์แยกกัน) แล้ว run python3 mongo_jira_check_assortment.py --dry-run ใหม่อีกครั้ง
เจอบ่อยบน Mac ที่ลง Python จาก python.org ตรง — ตัว Python ไม่มี CA certificate ติดมาให้ครบ ต้องรันตัวติดตั้งของ Python เองอีกครั้ง (ปลอดภัย ไม่กระทบอะไรอื่น):
open "/Applications/Python 3.13/Install Certificates.command"
ถ้าเวอร์ชัน Python ไม่ใช่ 3.13 ให้แก้เลขในคำสั่งให้ตรงกับโฟลเดอร์จริงใน /Applications/ — เช็คเวอร์ชันตัวเองด้วย python3 --version