💡 หน้านี้คืออะไร
แอปเกือบทุกตัวของร้าน (สต๊อก ยอดขาย รับเข้า ลูกหนี้ แดชบอร์ด ฯลฯ) ไม่ได้ต่อสายตรงกับระบบ POS แต่มี"งานเบื้องหลัง"คอยดึงข้อมูลจาก POS GebTang / OneDrive / อีเมล / API ต่าง ๆ มาสร้างเป็นไฟล์และฐานข้อมูล แล้ว deploy ขึ้นเว็บให้ทุกคืน — งานพวกนี้รันอยู่ 3 ที่: (1) Windows Task Scheduler บนคอมพี่ไอซ์ที่ร้าน (ส่วนใหญ่ เพราะต้อง login POS จากในร้าน) (2) GitHub Actions บนคลาวด์ (งานที่ไม่ต้องพึ่งคอมที่ร้าน) (3) Cloudflare Worker cron / เด้งสดจากในแอปเอง
ทุกงานรายงานผลเข้า Telegram 5 หมวด และมี "ตาข่ายรอง" คอยเช็คซ้ำ — Watchdog ทุก 3 ชม. บนเครื่อง + ยามคลาวด์ จากนอกบ้าน + หน้าสถานะข้อมูลไฟเขียว/เหลือง/แดง — หน้านี้รวมทุกอย่างไว้เป็นตารางเดียว ให้เปิดดูได้เวลาสงสัยว่า "ทำไมข้อมูลไม่อัปเดต" หรือ "งานนี้พังต้องไปดูตรงไหน"
🔑 งานรันที่ไหน / ใครดูแล
- Windows Task Scheduler (คอมพี่ไอซ์) — งานชื่อขึ้นต้น "PTTV …" ราว 70 งาน เปิดดูได้จากโปรแกรม Task Scheduler ในเครื่อง (คอลัมน์ Last Run Result 0x0 = จบปกติ) · คอมต้องเปิดอยู่ งานสำคัญตั้ง WakeToRun ปลุกเครื่อง + StartWhenAvailable รันชดเชยถ้าพลาด
- GitHub Actions — repo private ของบัญชี pantiptvice-sketch (pttv-collect-pipeline · pttv-fleet · pttv-inbox · pttv-social-monitor · pttv-swfruits · pttv-cloud-jobs) ดู log ได้ที่แท็บ Actions ของแต่ละ repo กด "Run workflow" รันมือได้
- Cloudflare — Worker cron ของบรีฟ (9 โมงเตือน / 10 โมงสรุป) + แอปที่เด้ง Telegram สดเมื่อมีเหตุการณ์ (feedback · vehicle · field · collect · leave)
- สคริปต์กลางอยู่ราก
D:\VDO—tg_send.py(ส่ง Telegram) ·backup_d1.py(สำรอง D1) ·telegram-config.json(ค่าตั้งบอท — ไฟล์ลับ ไม่ขึ้น git) · โฟลเดอร์pos-scraper·eol·social-monitor·cloud-jobs·d1-backups·logs
📝 ตารางงานอัตโนมัติ (เวลาไทย)
① สายพานดึง POS GebTang รายคืน (คอมพี่ไอซ์ · โฟลเดอร์ D:\VDO\pos-scraper)
| งาน (ชื่อ Task) | เวลา | ทำอะไร | แจ้งไปไหน | ถ้าพังดูที่ไหน |
|---|---|---|---|---|
| PTTV POS Daily Scraper | 08:00 | ดึงยอดขาย "เมื่อวาน" แบบย่อ 6 สาขา (pos_scraper.py) | — | pos-scraper\pos-data\scraper.log |
| PTTV-SalesCatchup | ระหว่างวัน ทุก ~2 ชม. | ดึงยอดขายวันนี้เข้า D1 กันแดชบอร์ดค้างวันเก่า (sales_catchup.py) | — | Analytics/Promo ไม่ขยับ → ดู log ใน pos-scraper |
| PTTV POS Stock Pull | 21:00 (~30-35 นาที) | ดึงสต๊อกราย SN ทุกหมวด 6 สาขา → ไฟล์ "สต๊อกหลัก…ล่าสุด.xlsx" ใน OneDrive 02_สต๊อก + Downloads · ต้องครบ 6 สาขาถึงเซฟ | 🚨 system ถ้าไม่ครบ/พัง | Task Scheduler ผลรัน · pos-data\scraper.log · Watchdog จะดึงซ้ำให้ตอน 23:00/02:00 |
| PTTV POS Extra Daily | 21:20 | บิล/เงินรับ/เงินเชื่อ/โอนย้าย → บิล POS (pos-board) | — | pos-board (log ในโฟลเดอร์) |
| PTTV Sales Master | 21:40 | รวมยอดขายเข้าไฟล์ยอดขายหลัก OneDrive 01_ยอดขาย (sales_master_build --golive) + เติมหมวด/บริษัทจาก MASTER | — | ถ้า OneDrive ล็อกไฟล์ Watchdog จะ promote ไฟล์ .tmp ให้เอง |
| PTTV Analytics Push | 21:50 | ดันยอดขาย/สต๊อกขึ้น D1 pttv-analytics (push_analytics.py) | — | pttv-analytics วันล่าสุดไม่ขยับ → status แดง |
| PTTV EOL Daily | 22:00 | ธง EOL: ดึงเมลแบรนด์ (Haier/Sharp/LG/TCL) → แกะรุ่นเลิกผลิต → จับคู่สต๊อก → deploy ป้าย "⛔ EOL" ใน stock/sku/master/analytics (D:\VDO\eol\run_eol.py) | — | D:\VDO\eol (eol.json วันที่) · ป้าย EOL ไม่ขึ้นใน pttv-stock |
| PTTV Receiving Pull · Fast Movers Build | 22:10 | ดึงใบรับเข้าราย SN (receiving_pull.py เขียน marker .recv_pull_ok) · build แอปขายเร็ว | — | marker เก่ากว่า 13 ชม. → Watchdog ดึงซ้ำ |
| PTTV Receive Docs | 22:30 | อัปเดตใบรับเข้า + สถานะราย SN + ตัดสินค้าออก | — | receive-app log |
| PTTV Customer Pull | 22:40 | ดึงลูกค้าจาก POS → D1 ฐานลูกค้ากลาง | — | customers.json เก่ากว่า 26 ชม. → Watchdog ทำซ้ำ |
| PTTV Master Re-sync | 23:00 | เติมข้อมูลไฟล์ยอดขายใหม่ตาม MASTER ล่าสุด (reenrich) | — | — |
| PTTV-Promo-Daily | 23:50 | วิเคราะห์โปรฯ ราคาพิเศษ vs ขายจริง + build หน้า pttv-promo + เตือนโปรผิดปกติ | 📊 brief | promo-analysis log |
| PTTV-Dashboard-Deploy · PTTV Brands Dashboards | 00:15 · 05:00 | deploy แดชบอร์ดรวม / สร้างแดชบอร์ดรายแบรนด์ทั้งหมด | — | D:\VDO\logs\brands_daily.log |
② เฝ้าระบบ · สำรองข้อมูล
| งาน | เวลา | ทำอะไร | แจ้งไปไหน | ถ้าพังดูที่ไหน |
|---|---|---|---|---|
| PTTV Data Watchdog | 20:00 · 23:00 · 02:00 · 05:00 | ตรวจ 5 อย่างว่าเป็นปัจจุบัน (ยอดขาย D1 · รับเข้า · ไฟล์สต๊อก · ลูกค้าผ่อน · ลูกค้ากลาง) ถ้าค้างดึงซ้ำเอง (pos-scraper\watchdog.py) เป้าหมาย = ข้อมูลถึง "เมื่อวาน" | 🚨 system เฉพาะตอนเจอค้าง/ดึงซ้ำ (ไม่สแปม) | pos-scraper\watchdog.log |
| ยามคลาวด์ (heartbeat.py) | 10:30 · 20:30 | GitHub Actions เช็คจากนอกบ้านว่า D1 ยอดขาย/สต๊อกยังสด — เตือนได้แม้คอมที่ร้านดับ (repo pttv-cloud-jobs) | 🚨 system | Actions log ของ pttv-cloud-jobs |
| PTTV Status Page · Status Runner | ทุก 3 ชม. (06-24) · วนทั้งวัน | สร้างหน้า สถานะข้อมูล ไฟเขียว/เหลือง/แดงทุกแหล่ง + เช็ค API | — | D:\VDO\status-app\runner.log |
| PTTV D1 Backup | 02:30 | สำรองฐาน Cloudflare D1 ทุกฐานเป็นไฟล์ .sql ไว้ในเครื่อง (D:\VDO\d1-backups\<ฐาน>\) เก็บ 14 วัน · กู้ด้วย wrangler d1 execute | 🚨 system สรุป 1 ข้อความ | d1-backups\backup.log |
| PTTV Hub Pulse | 07:30 | รีเฟรชแดชบอร์ดรวมบนฮับ (pulse.json) | — | hub\refresh-pulse.ps1 |
| PTTV Agent Monitor | ทุก 1 ชม. | เก็บ log เซสชัน AI 7 วัน → Monitor AI Agent | — | บรรทัด "แหล่งข้อมูล" ในแอปบอกเวลาอัปเดต |
| เตือนบิล (billing_reminder.py) | 08:00 | GitHub Actions เตือนบริการใกล้ครบกำหนดต่ออายุ (Cloudflare · โดเมน · GebTang · Cartrack · Adobe · เครดิต AI) | Telegram | Actions log pttv-cloud-jobs |
③ สรุป/แจ้งเตือนรายวัน (คอมพี่ไอซ์)
| งาน | เวลา | ทำอะไร | แจ้งไปไหน |
|---|---|---|---|
| PTTV Calls Daily | 00:30 | ดึงสายโทรศัพท์บริษัท (dTAC OrkTrack) → ถอดเสียง+สรุป → สรุปสาย | Telegram รายวัน |
| PTTV-Money-Daily · PTTV-Loan-Daily | 06:30 · 06:45 | รายรับ-จ่าย 6 สาขา · ลูกค้าผ่อน (Google Drive → แดชบอร์ด) | 💰 money |
| PTTV Insights Digest | 07:00 (รายสัปดาห์ อา. 07:05 · รายเดือน วันที่ 1) | สรุปใครเข้าใช้แอปอะไร | 📊 brief |
| PTTV Flow Daily · Gov Procurement Daily | 07:30 | งบเหลือเงิน 4 แหล่ง · งานราชการใหม่ (e-GP) | 💰 money · 📡 market |
| PTTV Jarvis Data / Brief / Watch | 08:00 / 08:05 / 09:00 | เตรียมข้อมูล → มอนิ่งบรีฟธุรกิจ AI → เฝ้าความผิดปกติ | 📊 brief |
| PTTV Shift Daily · Repair-Daily · Eye Daily · Balance-Notify · Cartrack Daily · Fast Movers Alert · Field Stock Sync | 08:00–08:45 | ตารางเวร · ศูนย์ซ่อม · ดวงประจำวัน · ยอดเงินบัญชี · รถ · ของขายเร็ว/ของหมดลืมสั่ง · สต๊อกให้เซลส์ | 🏪 ops / 💰 money ตามงาน |
| PTTV Brief Remind · Insights Alerts | 09:00 | เตือนคนยังไม่ส่งบรีฟ · แจ้งความผิดปกติการใช้งาน | Push / 📊 brief |
| PTTV HR Board · PO Mail Ingest · HR Calendar 09:35 · Attendance Morning | 09:30–10:30 | บอร์ดเงินเดือน · อ่านเมล PO · ลา/สาย → ปฏิทิน Google · เช็คการมาเช้า | 🏪 ops |
| PTTV Writeoff Sync | 11:00 | ดึงรายงานตัดสินค้าออก 3 รายงาน → receive /removal | — |
| PTTV Field Daily Summary · PTTV-LeaveMail | 18:00 · 18:30 | สรุปเซลส์เช็คอิน · สรุปวันลาถึงผู้บริหาร (Telegram+เมล) | 🏪 ops · 📊 brief |
| PTTV Count Telegram | 19:00 | สรุปผลตรวจนับสต๊อกวันนี้ | 🏪 ops |
| PTTV Attendance Checkout · HR Push Remind | 20:00 | เช็คการออกงาน · เด้งเตือนพนักงานลงเวลา | Push / 🏪 ops |
| PTTV Expense Daily | 21:30 | รายจ่ายจากสลิป (AI อ่านสลิป) | 💰 money |
| รายสัปดาห์/เดือน: Payable Due (จ. 08:30) · Money-Notify · Rewards Digest (อา. 09:00) · Field Monthly Awards (วันที่ 1) · Late Monthly (วันที่ 2 01:00) | — | เตือนบิลคู่ค้า · สรุปเงิน · สรุปแต้ม · รางวัลเซลส์ · อัปเดตมาสาย | 💰 money · 🏪 ops |
④ GitHub Actions (คลาวด์ ไม่ต้องเปิดคอม)
| repo / งาน | เวลา | ทำอะไร | แจ้งไปไหน |
|---|---|---|---|
| pttv-swfruits | 03:00 | ยอด PO ผลไม้ 9 สาขา Tops จากเมล + P&L → swfruits.pages.dev | Telegram |
| pttv-fleet | รายวันเช้า (ตั้งไว้ราว 02:30 · ทะเบียนบางที่จด 10:30) | รายงานรถ 11 คันจากเมล Cartrack → pttv-fleet | 🏪 ops |
| pttv-inbox | ทุก 6 ชม. | อ่าน 10 บัญชี Gmail → AI ย่อยเป็นหนังสือพิมพ์เมล pttv-inbox | 📊 brief |
| pttv-social-monitor | 06:30 (+ เพจเรา 07:00) | เฝ้าโพสต์คู่แข่ง (สิริสิน/เสียงโตเกียว/นครดีซี) + ร้านในพื้นที่ (Apify ~$29/เดือน) → การ์ดใน /brain · เพจ FB 6 สาขาของเรา | 📡 market |
| pttv-collect-pipeline | 07:00 รายวัน · จ. 08:00 รายสัปดาห์ | สายพานติดตามหนี้ build loan → collect → แจ้งสาขา (Task บนเครื่อง PTTV-Collect-* ปิดแล้ว ย้ายขึ้นคลาวด์) | 💰 money (สรุปพี่ไอซ์) · บอทเดิมในกลุ่มสาขา |
| pttv-cloud-jobs | 10:30/20:30 · 08:00 | ยามคลาวด์ + เตือนบิล (ตาราง ②) | 🚨 system |
| Cloudflare Worker: pttv-brief-cron | 09:00 · 10:00 · ทุก 2 นาที 07-14 | เตือนคนยังไม่ส่งบรีฟ · สรุปรวมทุกสาขา · ทยอยถอดบรีฟค้าง | 🏪 ops |
⑤ Telegram 5 หมวด (บอทแยกกัน 5 ตัว · ตั้งค่าใน telegram-config.json · ส่งด้วย tg_send.py)
| หมวด | ป้าย | เนื้อหา | ใครดู | ตัวอย่างงานที่ส่ง |
|---|---|---|---|---|
| money | 💰 เงิน-ทอง | เงินสด/กำไร/หนี้/จ่ายคู่ค้า | เจ้าของเท่านั้น | flow · money · collect สรุปพี่ไอซ์ · payable · balance · expense |
| brief | 📊 บรีฟเช้า | สรุปธุรกิจ/สมองร้าน/โปร/เมล/insights | เจ้าของ | jarvis · brain · promo · insights · inbox · leave mail |
| ops | 🏪 หน้างาน | นับสต๊อก/ซ่อม/ตรวจรถ/เซลส์/บรีฟ/ลา/feedback | เจ้าของ + ผจก. | count · repair · vehicle · field · brief · fleet · feedback · leave |
| market | 📡 ตลาด-ภายนอก | คู่แข่ง/เพจเรา/งานราชการ | เจ้าของ + การตลาด | social · our-page · gov |
| system | 🚨 เฝ้าระบบ | ข้อมูลค้าง/ระบบล่ม/สำรองข้อมูล — เด้งเฉพาะมีปัญหา | เจ้าของ/ทีมเทค | watchdog · ยามคลาวด์ · D1 backup · stock pull ไม่ครบ · late build พัง |
งาน 3 ชนิดอ่านค่าบอทคนละที่: งานบนคอม → telegram-config.json (แก้ที่เดียวมีผลทันที) · GitHub Actions → Secret TG_<หมวด>_TOKEN/CHAT ในแต่ละ repo · Cloudflare Pages → ตัวแปรใน Settings ของโปรเจกต์ (รายละเอียดใน D:\VDO\TELEGRAM.md) · ทดสอบส่ง: python D:\VDO\tg_send.py system "ทดสอบ"
⚙️ สรุปสั้น ๆ ว่าอะไรอยู่ที่ไหน
- ต้นทางข้อมูล: POS GebTang (ขาย/สต๊อก/รับเข้า/โอนย้าย/ลูกค้า) →
pos-scraper→pos-scraper\pos-data+ OneDrive01_ยอดขาย·02_สต๊อก· HumanSoft (มาสาย) · Gmail 10 บัญชี (EOL / PO / inbox / SW Fruits / fleet) · Cartrack API · dTAC OrkTrack · Google Drive (เงิน/ผ่อน) - ฐานข้อมูล: Cloudflare D1 หลายฐาน (pttv-hr · pttv-analytics · pttv-staff · pttv-customer · pttv-brief · pttv-health ฯลฯ) สำรองทุกคืนที่
D:\VDO\d1-backups - ตาข่ายกันพลาด: Watchdog (เครื่อง ทุก 3 ชม.) · ยามคลาวด์ (10:30/20:30) · pttv-status (ทุก 3 ชม.) · Telegram 🚨
- Log:
pos-scraper\pos-data\scraper.log·pos-scraper\watchdog.log·d1-backups\backup.log·status-app\runner.log·logs\brands_daily.log· แต่ละแอปมี log ในโฟลเดอร์ตัวเอง · GitHub → แท็บ Actions - ทะเบียน:
D:\VDO\CLAUDE.md(แผนที่กลาง) ·APPS.md(ทุกแอป) ·TELEGRAM.md· ความจำรายแอปของ AI
❓ ข้อควรรู้ / คำถามพบบ่อย
ถาม: ปิดคอมที่ร้านข้ามคืน จะเกิดอะไรขึ้น?
ตอบ: งานกลุ่ม ① ② ③ ทั้งหมดไม่รัน → เช้ามาข้อมูลสต๊อก/ยอดขาย/รับเข้าจะค้างของวันก่อน แอปพนักงานยังเปิดได้แต่ตัวเลขเก่า · ยามคลาวด์จะเตือนเข้า 🚨 เมื่อค้างเกิน 3 วัน · เปิดคอมแล้ว Task ที่ตั้ง StartWhenAvailable จะรันชดเชยเอง หรือ Watchdog รอบถัดไปดึงให้ · งานกลุ่ม ④ (คลาวด์) ไม่กระทบ
ถาม: ยอดขายวันล่าสุดในแอปทำไมยังเป็นเมื่อวาน?
ตอบ: ปกติ — GebTang โพสต์ยอดของวันช้า (มักหลังเที่ยงคืน) เป้าหมายของระบบคือ "ตามหลังจริงไม่เกิน 1 วัน" รอบ 02:00/05:00 จะเก็บครบ · ระหว่างวันมี SalesCatchup ดันยอดวันนี้เข้า D1 เป็นระยะ
ถาม: อยากรันงานไหนใหม่ทันที ทำยังไง?
ตอบ: เปิด Task Scheduler คลิกขวางานนั้น → Run · หรือรันสคริปต์ในโฟลเดอร์แอปตามที่ AI/คู่มือแอปนั้นบอก · GitHub Actions กด Run workflow ในหน้า Actions
ถาม: ค่าใช้จ่ายที่ผูกกับระบบเบื้องหลังมีอะไรบ้าง?
ตอบ: Cloudflare Workers Paid (~$5/เดือน จำเป็น) · Apify เฝ้าคู่แข่ง (~$29/เดือน) · เครดิต AI (Gemini/Anthropic จ่ายตามใช้) · GebTang · Cartrack · โดเมน — งาน "เตือนบิล" จะแจ้งก่อนครบกำหนด
build_center.py (มีคำสั่งล้างโฟลเดอร์) · ห้ามแก้ไฟล์ภาษาไทยด้วย PowerShell Get-Content/Set-Content (สระหาย) · telegram-config.json · access-links.md · .env/.secrets เป็นไฟล์ลับ ห้ามส่งออกนอกเครื่อง · เวลาแก้งานเบื้องหลังให้สั่งผ่าน AI ที่มีแผนที่ไฟล์อยู่แล้ว ไม่ต้องเดา