คอนเซปต์ของระบบ

สรุปสิ่งที่เครื่องมือนี้เป็น และไม่เป็น — อิงมติประชุม 18–19 ส.ค. 2026

01

ปัญหาที่กำลังแก้

ว่าที่ลูกค้า (เครือมติชน) มีคลัง YouTube มหาศาล แต่ตอบไม่ได้ว่า คลังที่มีอยู่พอเปิดช่อง FAST 24 ชั่วโมงจริงไหม ต้องซ้ำถี่แค่ไหน ช่วงไหนจะโหวง และถ้าเปิดไปแล้วต้องผลิตเพิ่มเท่าไหร่ต่อสัปดาห์

การตอบด้วยสไลด์ไม่มีน้ำหนัก เพราะทุกตัวเลขเป็นการเดา — สิ่งที่มีน้ำหนักคือ เอาคลังจริงของเขามาเดินผังจริงให้ดู

02

สิ่งที่เครื่องมือนี้เป็น

ระบบ FAST Channel Simulation เสมือนจริง — สร้างช่อง วางรายชื่อช่อง YouTube ระบบดูด metadata จริง (ชื่อคลิป ความยาว วันอัปโหลด) ไกด์การวาง Block ให้ แล้วได้ผังที่ เดินไปข้างหน้าทุกวัน ตามคอนเทนต์ใหม่ที่ลูกค้าอัปจริง

ต่างจากช่องจริงแค่ ไม่มีไฟล์วิดีโอให้เล่น เท่านั้น — ทุกอย่างที่เหลือคือของจริง

ไม่ใช่ backtest
ไม่ได้ย้อนดูอดีต แต่ resolve ล่วงหน้า ~28 วัน แล้ว cron เดินผังต่อทุกวัน
อดีตถูกล็อก
วันที่ผ่านไปแล้ว freeze เป็นประวัติออกอากาศ · cooldown นับต่อจากประวัติจริง
Deterministic
seed + คลัง + rule เดิม → ผังเดิมเป๊ะ ไม่งั้นเทียบ scenario ไม่ได้
03

โครงสร้างผัง 3 ชั้น

Schedule Template   ผังแม่แบบ — Weekday / Weekend
  └── Block         กล่องเวลามีชื่อ เช่น 13.00–16.00 "Today Update"  ← ผู้ชมเห็นบน EPG
        ├── Play Slot   คลิปจริง ยาวเท่าคลิป ไม่มี Cut ไม่มี Pad
        └── Ad Slot     ช่องโฆษณา ยาวตามความยาวคลิปที่เพิ่งเล่น

เจ้าของช่องจัดแค่ชั้น Block ตามเวลา ส่วนเนื้อข้างในระบบเติมให้เองตาม Fill Rule — ไม่ต้องนั่งจัดผังใหม่ทุกวัน ใน Block เดียวมีทั้งคลิปที่คนปักเอง (Pinned Slot) และคลิปที่ระบบเติม ปนกันได้

04

Fill Rule 4 ชนิด

Latest-first
เอาคลิปใหม่สุดจากหมวด/ช่องที่ระบุ — เหมาะกับช่วงข่าว
Programme
เอาตอนของรายการประจำ เรียงตามลำดับตอน
Evergreen rotation
สุ่มจากกอง evergreen โดยเคารพ cooldown — กินชั่วโมงส่วนใหญ่ของช่อง
Mixed
ผสมหลายแหล่งตามสัดส่วนน้ำหนักที่ตั้งไว้

Resolve คือการรัน Fill Rule ให้ได้ Play Slot จริง เกิดตอนใกล้ออกอากาศ ไม่ใช่ตอนวางผัง เพราะคลิปที่ rule จะดึง มักยังไม่มีตอนวางผัง

05

เวลาถูกคุมที่ขอบ Block เท่านั้น

operator ไม่ปักเวลาจบของแต่ละ slot — slot ยาวเท่าคลิปจริงเสมอ ระบบเรียงต่อกันเอง ห้ามตัดคลิปกลางคันทุกกรณี (เป็นปัญหาแบรนด์ของเจ้าของคอนเทนต์ ไม่ใช่แค่ UX)

เศษเวลาท้าย Block แก้ตามลำดับ
  1. 1. Filler Pool — คลิปสั้น 1–5 นาที (โปรโมท ไฮไลต์ teaser) แยกจากกองหลัก
  2. 2. ยืด Ad Slot — กินเศษที่เหลือ ไม่เกินเพดานที่ตั้งไว้
  3. 3. ยอมล้นเข้า Block ถัดไป — ดีกว่าตัดคลิปทิ้ง

Absorbing Block = Block ที่ยอมหดเมื่อโดนล้นใส่ — เริ่มช้าแต่จบตรงเวลาเดิม ทำให้ drift ตายในบล็อกนั้น ไม่สะสมข้ามวัน

06

Ad Slot ตัดสินเองจากความยาวคลิป

engine เลือกความยาวโฆษณาให้อัตโนมัติตามตาราง tier (แก้ได้ใน config) — ค่าเริ่มต้นชั่วคราวคือ คลิป <5 นาที ไม่มี ad · 5–10 นาที 15 วินาที · >10 นาที 30 วินาที

Mid-roll ผ่ากลาง Play Slot ได้ โดยไม่ขัดกติกา "ไม่มี Cut" เพราะเป็นการแบ่งการเล่นเป็นสองท่อน คลิปยังออกครบ ไม่ตัดเนื้อทิ้ง · ตั้งออโต้ตาม rule และ override ราย Block ได้

07

ตัวเลขที่ระบบตอบให้ได้

Repeat factor
คลิปหนึ่งถูกเล่นซ้ำกี่ครั้ง และห่างกันน้อยสุดกี่วัน — วัดจาก horizon เต็ม 28 วัน
Fill completeness
แต่ละ Block เติมได้กี่ % ของเวลา และ Block ไหนขาดเป็นประจำ
สัดส่วนหมวดต่อชั่วโมงออกอากาศ
ช่องนี้กลายเป็นช่องข่าว หรือช่องสารคดี ดูจากผังจริง
ต้องผลิตเพิ่มเท่าไหร่
คลังที่มีเลี้ยงช่องได้กี่วันโดยไม่ซ้ำ
08

สถานะตอนนี้ และสิ่งที่ยังค้าง

เสร็จแล้ว — Resolve engine (แกนของระบบ) พร้อมชุดทดสอบ 14 เคส ครอบคลุมทั้ง 7 เคสบังคับใน PRD และเคส mid-roll / ad policy · หน้าเว็บที่กำลังดูอยู่นี้ใช้ engine ตัวจริงคำนวณ
ข้อมูลยังเป็น mock — คลัง 10 ช่องนี้จำลองขึ้นจากลักษณะจริงของแต่ละช่อง (ความถี่การอัป ความยาวคลิป สัดส่วน evergreen) เพื่อให้เห็นหน้าตาก่อน
รอจาก BB — (1) YouTube Data API key เพื่อดูดคลังจริง (2) ตาราง Ad Policy ค่าจริง (3) คำไทยของ "Block"