Front Automation Hub

i วิธีทำงาน

หน้านี้เป็น 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? ไปที่แท็บ "เตรียมเครื่อง & แก้ปัญหา" ด้านบนก่อนได้เลย

1 ดาวน์โหลด & run script

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 ให้เอง — ถ้าเจอว่าเก่าจะเตือนและถามก่อนว่าจะรันต่อไหม ไม่ต้องมาเช็คเองว่าไฟล์เก่าหรือยัง

2 วางผลลัพธ์เพื่อดูเป็นตาราง (ไม่บังคับ)

คัดลอก output ทั้งหมดจาก terminal มาวางที่นี่ เพื่อดูสรุปแบบอ่านง่าย — ข้อมูลนี้ประมวลผลในเบราว์เซอร์ของคุณเท่านั้น ไม่ส่งไปที่ไหน

Prerequisites

ต้องมี 3 อย่างนี้ก่อน script จะรันได้ครับ:

  • มี pymongo — เปิด Terminal พิมพ์ pip3 install pymongo ครั้งเดียวจบ
  • มี Jira token ของตัวเอง — ถ้าคุณใช้ Claude Code + mcp-atlassian อยู่แล้ว หรือเคยตั้งไว้แล้วสำหรับ RSP Sync Check / Point Sum Check / Sale Note Check ข้ามข้อนี้ไปได้เลย (script ดึงให้อัตโนมัติ) ถ้ายังไม่มี ให้ทำตามการ์ด "ถ้า run แล้ว error: Jira credentials not found" ด้านล่างนี้ก่อน 1 รอบ
  • มี MongoDB connection string — ถ้าเคยตั้งไว้แล้วสำหรับโมดูลอื่นข้ามข้อนี้ไปได้เลย (ใช้ config เดียวกัน) ถ้ายังไม่มี ไปเอาจาก Confluence "Tooling Onboarding Checklist" (space TOOK) ดูการ์ด "ถ้า run แล้ว error: MongoDB connection string not found" ด้านล่างนี้

ถ้า pip3 install pymongo แล้วเจอ error "externally-managed-environment"

เจอบ่อยบน 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 แล้ว error "Jira credentials not found"

ขึ้นครั้งแรกที่ run เพราะยังไม่เคยตั้ง Jira token ของตัวเองไว้บนเครื่องนี้ (ปกติสำหรับคนที่ไม่ได้ใช้ Claude Code) — ทำตามนี้ครั้งเดียวจบ:

  1. เข้า jira.tdshop.io → คลิก avatar มุมขวาบน → Profile → Personal Access Tokens → Create token → copy token ที่ได้ไว้ (โผล่ให้เห็นครั้งเดียว)
  2. เปิด Terminal แล้วรันคำสั่งนี้ (แทนที่ 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 ใหม่อีกครั้ง (ชื่อไฟล์ให้ดูจากที่ดาวน์โหลดจริงในแท็บ "วิธีใช้งาน")

ถ้า run แล้ว error "MongoDB connection string not found"

ต้องเอา connection string แบบ read-only ของ PROD มาตั้งไว้บนเครื่องเองครั้งเดียว — ห้าม commit หรือแชร์ค่านี้ที่ไหนเด็ดขาด เพราะมี username/password ฝังอยู่ในเส้นเดียวกัน:

  1. เปิด Confluence "Tooling Onboarding Checklist" (space TOOK) → หาหัวข้อ "Setup MongoDB Connection to PROD and NEST BETA" → copy connection string ช่อง PROD (Local) มาทั้งเส้น (มี host คั่นด้วย comma 3 ตัว)
  2. แทนที่ {UserName} ใน appName=... ด้วยชื่อตัวเอง
  3. เปิด Terminal แล้วรันคำสั่งนี้ (แทนที่ 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 ใหม่อีกครั้ง

ถ้า run แล้ว error "CERTIFICATE_VERIFY_FAILED"

เจอบ่อยบน Mac ที่ลง Python จาก python.org ตรง — ตัว Python ไม่มี CA certificate ติดมาให้ครบ ต้องรันตัวติดตั้งของ Python เองอีกครั้ง (ปลอดภัย ไม่กระทบอะไรอื่น):

open "/Applications/Python 3.13/Install Certificates.command"

ถ้าเวอร์ชัน Python ไม่ใช่ 3.13 ให้แก้เลขในคำสั่งให้ตรงกับโฟลเดอร์จริงใน /Applications/ — เช็คเวอร์ชันตัวเองด้วย python3 --version