เช็ค card "Point Sum" ที่ยังเปิดอยู่ใน Jira เทียบ point summary กับ MongoDB แล้วปิด card อัตโนมัติถ้าข้อมูลตรงกัน
หน้านี้เป็น 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 "Point Sum" ที่ยังเปิดอยู่ทั้งหมด ดึง memberId จาก card แล้วรัน
aggregate เดิมที่ทีมใช้เช็คมืออยู่แล้วบน MongoDB (membership.points) ถ้า point ของ 10 record ล่าสุด (ไม่รวม EXPIRED)
เท่ากับ totalPoint ของ ACTIVE ทั้งหมด (isEqual = true) จะ assign card ให้ตัวเอง (เฉพาะถ้ายังไม่มี assignee เดิม)
comment สรุป แล้วปิด (Close) พร้อมตั้ง Resolution/Fix Version ให้ตามที่ทีมปิดกันด้วยมืออยู่แล้ว ถ้ายังไม่ตรงกัน
จะปล่อย card ไว้เฉยๆ ไม่ทำอะไร (ตาม runbook ที่บอกว่า diff ระหว่างวันมักหายเองพอ BigQuery sync ตอนกลางคืน) และ script จะเช็คเวอร์ชัน
ตัวเองกับ GitHub ให้ทุกครั้งที่ run — ถ้าเก่าไปจะเตือนให้โหลดใหม่ก่อน
ยังไม่เคยเตรียมเครื่อง หรือรันแล้วเจอ error? ไปที่แท็บ "เตรียมเครื่อง & แก้ปัญหา" ด้านบนก่อนได้เลย
script จะหา card "Point Sum" ที่ยังไม่ปิดทั้งหมด รัน point-sum aggregate บน MongoDB ให้ทุกใบ แล้ว comment + ปิด card อัตโนมัติเฉพาะใบที่ point ตรงกันแล้ว
ดาวน์โหลด mongo_jira_check_pointsum.py v...ไฟล์ที่โหลดจะมีเลขเวอร์ชันต่อท้ายชื่อไฟล์ (เช่น mongo_jira_check_pointsum_v1.0.0.py) เพื่อให้เห็นชัดว่าไฟล์ไหนใหม่สุด — เปลี่ยนชื่อไฟล์ยังไงก็รันได้เหมือนกัน ไม่กระทบการทำงาน แค่ต้องพิมพ์คำสั่งให้ตรงกับชื่อไฟล์จริงที่ดาวน์โหลดมา (ก็อปคำสั่งด้านล่างนี้ได้เลย จะตรงกับชื่อไฟล์ให้อัตโนมัติ)
เช็คดูก่อน ไม่แก้ card จริง (dry-run):
python3 mongo_jira_check_pointsum.py --dry-run
run จริง (โพสต์ comment + ปิด card ขึ้น Jira เฉพาะใบที่ point ตรงกัน):
python3 mongo_jira_check_pointsum.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_pointsum.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_pointsum.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_pointsum.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