CODEMONDAY

NTL Intranet บน Microsoft 365

ย้ายพอร์ทัลพนักงานจากระบบเดิมที่ดูแลเองทั้งหมด ไปอยู่บน SharePoint Online พร้อมส่วนต่อขยาย CODEMONDAY Portal Extend สำหรับงานที่แพลตฟอร์มมาตรฐานทำไม่ได้

9,000ผู้ใช้ทั้งองค์กร
4,000ใช้งานพร้อมกันช่วงพีค
34requirement หลัก
50ฟีเจอร์หน้าจัดการ
~20,000แถวข้อมูลที่ต้องย้าย
91 TBพื้นที่ที่ได้ (ใช้จริง 1.5 TB)

01 · Scope ทั้งหมด

ตัวเลขทุกตัวมาจาก ScoreCard ของลูกค้าและภาพหน้าจอระบบเดิม ไม่ได้ประมาณเอง

สายงานปริมาณสาระสำคัญ
A · แพลตฟอร์มและโครงสร้าง8 REQtenant · site + hub · โมเดลสิทธิ์ · sync พนักงานเข้า-ออก
B · หน้าจัดการเนื้อหา50 ฟีเจอร์ก้อนใหญ่ที่สุด ต้องจัดชั้นก่อนตีราคา
C · โมดูลหน้าแรก + Knowledge16 REQข่าว · สวัสดิการ · SOP · คู่มือ · ผลิตภัณฑ์ · โปรแกรม
D · ข้อมูลและการเชื่อมต่อ3 ตารางAI Level 4,000 · Branch Career 6,000 · Phonebook 10,000 แถว
E · มือถือและความปลอดภัย15 ข้อส่วนใหญ่เป็นงาน Intune ไม่ใช่งานพัฒนา
F · ค้นหาและ analytics3 REQ + 4log keyword · zero-result · dashboard
G · ย้ายเนื้อหา48 หัวข้อSOP 18 ฝ่าย · ผลิตภัณฑ์ 13 · ชาวเงินติดล้อ 12 · คู่มือ 5 — ตีราคาแยกจาก feature
H · เอกสารส่งมอบ3 ชุดSRS · SOW · Training Manual

สถานะของ 50 ฟีเจอร์หน้าจัดการ

มีแล้ว18ใช้งานได้จริงวันนี้ สาธิตสดได้
มีบางส่วน15ฐานมีแล้ว เหลือเติมให้ครบสเปก
ยังไม่มี17ต้องพัฒนาเพิ่ม

สิ่งที่ยังไม่ถูกกรอกในเอกสารลูกค้า

คอลัมน์ Phase · Complexity · Status · Owner ว่างทั้งไฟล์ — คือส่วนที่ต้องกรอกกลับไป

ลูกค้ากรอกมาแล้วเฉพาะ Priority: P1 จำนวน 24 ข้อ จาก 34

02 · Native SharePoint ทำอะไรได้

ประมาณครึ่งหนึ่งของ requirement ได้มาจากแพลตฟอร์มโดยไม่ต้องเขียนโค้ด และ Microsoft ดูแลให้

กลุ่มได้อะไรทันทีตอบข้อไหน
หน้าเว็บสร้าง แก้ เผยแพร่ · เก็บทุกเวอร์ชันและย้อนกลับได้ · ตั้งเวลาเผยแพร่ · แก้พร้อมกันหลายคน · บันทึกเป็น template#5 #6 #13 #17
ไฟล์ไลบรารีเอกสาร · อัปโหลดทับโดย URL ไม่เปลี่ยน · ไฟล์ใหญ่เกิน 50MB ได้สบาย · ถังขยะ 93 วัน#7 #8 · REQ-014
ตารางข้อมูลSharePoint list คือ custom table · สร้างคอลัมน์เอง · นำเข้าจาก Excel ได้ในตัว · เก็บได้ถึงหลักล้านแถว#20 #21
ค้นหาfull-text ถึงเนื้อในไฟล์ · รองรับภาษาไทย · กรองตามชนิดและฝ่าย#29 · REQ-028
สิทธิ์กลุ่ม Owners / Members / Visitors · ใส่ Entra group เข้าไปได้ · สิทธิ์ระดับหน้าและไลบรารี#25 · REQ-002
ตรวจสอบaudit log ของ Microsoft 365 — ใครเปิด ดาวน์โหลด ค้นหาอะไร เมื่อไหร่#28 #39
เมนูhub site · เมนู hub ขึ้นทุก site ที่ผูกไว้ · audience targeting บนเมนูREQ-009
มือถือแอป SharePoint · บังคับ policy ด้วย Intune (ห้ามดาวน์โหลด ห้ามแคปหน้าจอ)M001 M006–M008
อื่น ๆฝัง Excel online · วิดีโอผ่าน Stream · รายงานการใช้งาน site · DLP และ sensitivity label · MFA / Conditional Access#33 #35
ที่เก็บข้อมูล1 TB + 10 GB ต่อ license → ที่ 9,000 คนได้ราว 91 TB (ระบบเดิมใช้จริง 1.5 TB)A011
ประโยคสรุปสำหรับสไลด์

งานที่ทีมเดิมต้องดูแลเอง — เซิร์ฟเวอร์ ฐานข้อมูล การสำรองข้อมูล และการอัปเดตความปลอดภัย — ย้ายไปเป็นความรับผิดชอบของ Microsoft ทั้งหมด

03 · CODEMONDAY Portal Extend ทำอะไรเพิ่ม

5 web part + 1 extension + หน้า admin หนึ่งชุด · ทุกบรรทัดมีเหตุผลว่าทำไมของมาตรฐานไม่พอ

ส่วนประกอบทำอะไรทำไม native ไม่พอ
ตัวจัดโซนเนื้อหา
ZoneBlock
ประกอบหน้าจาก block 8 ชนิด ลากวางได้ · เก็บเป็นข้อมูล ไม่ใช่หน้าเว็บ หน้ามาตรฐานแก้ได้ทีละหน้า · ของเราคัดลอกข้าม site ได้ และ web part ตัวเดียวใช้ซ้ำได้ทุกหน้า
ตัวสร้างฟอร์ม
FormBlock
สร้างฟอร์มเอง ตรวจค่า เก็บคำตอบ ส่งออก CSV ต่อ Power Automate ส่งเมล ฟอร์มมาตรฐานผูกกับ list หนึ่งใบ ปรับหน้าตายาก และไม่มีที่รวมคำตอบให้ admin
ถาม–ตอบ
QaBlock
ถามตอบต่อหน้า · ผู้ดูแลอนุมัติก่อนขึ้นจริง ความเห็นบนหน้ามาตรฐานขึ้นทันที ไม่มีคิวอนุมัติ
รายการโปรแกรม
AppLauncher
กริดโปรแกรมพร้อมไอคอน · กรองตามแผนกของผู้ใช้ ต้องดูแลลิงก์เป็นร้อยรายการ และของมาตรฐานไม่กรองตามแผนก
แถบหัว–ท้ายทุกหน้า
SiteChrome
header / footer เดียวกันทุกหน้า · เก็บสถิติการใช้งานลง Application Insights รายงานมาตรฐานบอกยอดวิวรวม ไม่ได้บอกพฤติกรรมรายคนรายหน้า (REQ-026)
หน้า admin จัดการหลาย site จากที่เดียว · เตรียม list และคอลัมน์ให้ site ใหม่อัตโนมัติ · แก้เมนูและเมนู hub · คอนโซล Power Automate · ตรวจสิทธิ์ผู้ใช้ งานเหล่านี้กระจายอยู่ 4–5 หน้าจอของ Microsoft และบางอย่าง เช่นคอลัมน์ชนิด URL API มาตรฐานสร้างไม่ได้เลย

พิสูจน์ได้ว่าไม่ใช่ต้นแบบ

  • unit test 95 ตัว · e2e 235 ตัว รันทุกครั้งที่แก้โค้ด
  • ติดตั้งจริงบน tenant พร้อม hub และ site ฝ่าย 3 site
  • ข้อจำกัดทุกข้อในเอกสารนี้มาจากการยิง API จริง ไม่ใช่การอ่านสเปก

ไม่ผูกขาดกับ SharePoint

โครงเนื้อหา ฟอร์ม การกันโค้ดอันตราย และการกรองตามแผนก เขียนเป็น TypeScript ล้วน มีกฎในโค้ดห้ามอ้างอิงไลบรารีของ SharePoint · ย้ายไป Teams หรือเว็บแยกได้โดยไม่ต้องรื้อเนื้อหา

04 · แผนสาธิต 15–18 นาที

เล่าเป็นเรื่องเดียว — ผู้ดูแลสร้างเนื้อหา → พนักงานเห็น → ข้อมูลกลับมาที่ผู้ดูแล

#ฉากภาพประโยคที่ต้องการให้จำนาที
1หน้าจริงบน SharePointเปิดสดทั้งหน้านี้ผู้ดูแลจัดเองได้ ไม่ต้องเรียกทีม IT1
2หน้ารวมเนื้อหาทุกอย่างของ site อยู่หน้าเดียว ค้นหาได้ คัดลอกข้าม site ได้2
3ตัวจัดโซน + ลาก blockลากวางแล้วเห็นผลทันที ตัวอย่างใช้ธีมจริงของ SharePoint4
4สร้างฟอร์ม + ตัวอย่างสดสร้างฟอร์มเองได้ ไม่ต้องรอ vendor3
5คำตอบ + ส่งออก CSVคำตอบเข้ามารวมที่เดียว ส่งออกได้ทันที2
6รายการโปรแกรม + กรองตามแผนกพนักงานสาขาเห็นคนละชุดกับสำนักงานใหญ่ โดยใช้หน้าเดียว2
7หน้าเว็บ เมนู และ hubแก้เมนู hub ครั้งเดียว มีผลทุก site ที่ผูกไว้2
8โฟลว์อัตโนมัติเห็นสถานะและประวัติการรันโดยไม่ต้องเข้า Power Automate1
9สิทธิ์ของผู้ใช้เวลามีคนบอกว่าเข้าไม่ได้ ตอบได้ใน 10 วินาทีว่าติดตรงไหน2
10ธีมมืดและจอแคบใช้บนมือถือและธีมมืดได้จริง1
ถ้ามีเวลาแค่ 5 นาที

ฉาก 2 → 3 → 6 เท่านั้น (จัดเนื้อหา → เห็นผลทันที → คนละแผนกเห็นคนละชุด)

05 · หน้าจอระบบเดิม · ทำอะไรได้ ติดอะไร

อ่านจากภาพ 9 หน้าที่ลูกค้าส่งมา · ทุกข้อจำกัดด้านล่างมาจากการตรวจกับระบบจริงแล้ว

AI Level
AI Level — การ์ดส่วนตัวและเส้นทางเรียนรู้ Level 0–4 · ต้องเห็นเฉพาะข้อมูลของตัวเอง
Phonebook
Phonebook — ค้นหาพนักงาน เลือกฝ่ายและสาขา · เบื้องหลังคือตาราง 10,000 แถว
ฟอร์มรับค่าจาก URL
ฟอร์มรับค่าจาก URL — ฟอร์มใบเดียวใช้ได้ทุกตำแหน่งงาน เพราะรับค่าจาก query string
หน้าประกาศงาน
หน้าประกาศงาน — การ์ดรายฝ่ายพร้อมตัวนับตำแหน่งว่าง
หน้าเดิมทำได้แค่ไหนบนของใหม่ข้อจำกัดที่ต้องบอกตรง ๆ
AI Level
ปรับวิธี
หน้าตาทำได้ครบด้วย block · ข้อมูล 4,000 แถวอยู่ใน list ได้สบาย “เห็นเฉพาะของตัวเอง” ต้องเลือกวิธี — กรองที่หน้าเว็บอย่างเดียวไม่ปลอดภัย และวิธีสำเร็จรูปของ SharePoint ใช้ไม่ได้ เพราะข้อมูลมาจากการนำเข้า เจ้าของทุกแถวจึงเป็นผู้ดูแล
AI Gang
ดีขึ้น
ทำด้วยกลุ่มใน Entra แล้วตรวจผ่าน Graph ได้เลย โดยไม่ต้องขอสิทธิ์เพิ่ม ปัจจุบันสิทธิ์ถูกฝังเป็นคอลัมน์ในข้อมูล การให้สิทธิ์จึงเท่ากับแก้ Excel แล้วนำเข้าใหม่ · ควรย้ายมาเป็นกลุ่มจริง
Branch Career
ใช้ซ้ำได้
รูปแบบเดียวกับ AI Level ใช้แบบแผนเดียวกันซ้ำได้ เป็นชุดข้อมูลที่ต้อง sync เพิ่มอีกหนึ่งชุด (6,000 แถว)
Phonebook
ต้องออกแบบ
ทำได้ · UX เดิมบังคับกรองก่อนอยู่แล้ว ซึ่งพอดีกับข้อจำกัด 10,000 แถว เกินเพดานการแสดงผล 5,000 ต่อมุมมอง ต้องทำ index และไม่มีปุ่ม “แสดงทั้งหมด” · ถ้าดึงจาก AD ตรงจะดีกว่า แต่ต้องเช็คว่ามีชื่อเล่นและเบอร์ภายในครบ
ฟอร์มรับค่าจาก URL
ทำได้ ต้องรัดกุมกว่าเดิม
อ่านค่าจาก query string มาเป็นค่าตั้งต้นได้ ไม่ยาก ของเดิมกำหนดผู้รับอีเมลผ่าน URL ด้วย ถ้ายกมาตรง ๆ จะกลายเป็นช่องทางส่งเมลในนามองค์กรไปที่ใดก็ได้ — ต้องจับคู่จากรายการที่กำหนดไว้เท่านั้น
ฟอร์มมีเงื่อนไข
เปลี่ยนวิธี
ทำเป็นกฎในโครงสร้างฟอร์ม หรือใช้ Power Apps ปรับฟอร์มของ list ก็ได้เงื่อนไขมาฟรี ใส่ JavaScript เองไม่ได้แล้ว SharePoint สมัยใหม่ปิดทางนั้น ซึ่งเป็นผลดีด้านความปลอดภัย แต่ต้องแปลงของเดิมเป็นเงื่อนไขที่ประกาศไว้
หน้าประกาศงาน
เกือบครบ
จัดหน้าแบบนี้ได้ด้วย block ตัวนับ “7 ตำแหน่ง” ต่อฝ่ายต้องมี block ที่นับจากข้อมูลจริง ซึ่งยังไม่มี · และอาจต้องเรียก API ของ HR ที่ยังไม่มี spec
เว็บเดิมเป็น HTTP
ได้ฟรี
ของใหม่เป็น HTTPS บังคับทั้งระบบ ลิงก์เก่าที่ฝังในอีเมลและเอกสารต้องวางแผน redirect · ต้องขอรายการ URL

สามข้อที่ควรพูดก่อนลูกค้าถาม

1 · Load test ทำไม่ได้ — ไม่ใช่ทำไม่ทัน

เอกสารของ Microsoft ระบุว่าห้ามยิงโหลดทดสอบกับ SharePoint Online และระบบจะ throttle การทดสอบโดยอัตโนมัติ

“load-testing isn’t permitted on SharePoint in Microsoft 365 … we automatically throttle any load tests.”

สิ่งที่เราเสนอแทน: ทยอยเปิดใช้งานเป็น wave ตามฝ่ายและสาขา · วัดผู้ใช้จริงด้วย Application Insights ที่ติดตั้งไว้แล้ว · ออกแบบให้ทนการ throttle ตั้งแต่ต้น

2 · watermark ทุกหน้าจอบนมือถือทำไม่ได้

ข้อ M010 ขอ watermark ชื่อและรหัสพนักงานทุกหน้าจอ — แอป SharePoint ไม่มีความสามารถนี้ ต้องคุมด้วย Intune (ซึ่งเอกสารลูกค้าเขียนไว้เองแล้วในข้อ M006) หรือแยกเป็นโครงการ secure viewer

3 · สิทธิ์รายแถวที่ระดับ 20,000 แถว ต้องออกแบบ ไม่ใช่กดตั้งค่า

ทางที่ง่ายที่สุดคือกรองที่หน้าเว็บ ซึ่งเปิดเครื่องมือนักพัฒนาก็เห็นข้อมูลคนอื่นได้ · ทางที่ปลอดภัยจริงมีสองทางและราคาต่างกัน ต้องเลือกร่วมกันตั้งแต่ต้น

06 · วิธีทำงาน

4 เฟส · เฟสแรกไม่ใช่การเขียนโค้ด แต่เป็นเฟสที่ทำให้ราคาไม่บวมทีหลัง

Phase 01–2 สัปดาห์

ตัดสินใจก่อนเริ่ม

ปิด 16 คำถามที่ยังค้างจาก ScoreCard และภาพระบบเดิม · สามข้อที่ต้องได้คำตอบก่อนอย่างอื่น:

  • ปลายทางเป็น SharePoint Online จริงหรือไม่ (กระทบ REQ-004 และ REQ-007 ทั้งข้อ)
  • สิทธิ์รายแถวใช้กับข้อมูลชุดไหนบ้าง
  • ข้อกำหนดความปลอดภัยบนมือถือย้ายไปเป็นงาน Intune ได้หรือไม่
Phase 1ฐาน

โครงสร้างและเนื้อหาที่ไม่ต้องพึ่งข้อมูล

โครง site และ hub · โมเดลสิทธิ์ที่ผูกกับ Entra group · หน้าจัดการเนื้อหาชั้นที่ใช้บ่อย · แถบหัวท้าย · รายการโปรแกรม · SOP คู่มือ ผลิตภัณฑ์ ชาวเงินติดล้อ · ถามตอบ

ส่งมอบได้เร็ว เพราะ 18 จาก 50 ฟีเจอร์มีของอยู่แล้ว และเนื้อหากลุ่มนี้เป็นการย้ายไฟล์กับจัดหน้า ไม่ต้องรอ API จากใคร

Phase 2ความเสี่ยง

ข้อมูลและการเชื่อมต่อ

3 ตาราง 20,000 แถว · ขั้นตอนนำเข้า Excel รายเดือน · สิทธิ์รายแถวตามที่ตัดสินใจใน Phase 0 · Phonebook จาก AD ถ้าทำได้ · ตำแหน่งงานว่างเมื่อได้ spec API จาก HR

เริ่มที่ AI Level ตัวเดียวก่อน เพราะ Branch Career ใช้แบบแผนเดียวกัน — พิสูจน์ที่ตัวเดียวแล้วค่อยขยาย ไม่ทำพร้อมกันสามตาราง

Phase 3ต่อยอด

วัดผลและเครื่องมือผู้ดูแล

log การค้นหา รายงาน keyword ที่ไม่มีผลลัพธ์ และ dashboard · รายงานการใช้งาน · ส่วนเสริมของถามตอบ (แจ้งเมล แจ้งเนื้อหาไม่เหมาะสม ส่งออกประวัติ) · เครื่องมือ Super Admin

Rolloutตลอดโครงการ

ทยอยเปิดเป็น wave ไม่เปิดพร้อมกันทั้งองค์กร

เป็นวิธีที่ Microsoft แนะนำเอง และเป็นคำตอบของข้อ REQ-005 ไปในตัว · เปิดทีละฝ่ายหรือภูมิภาค ดูตัวเลขผู้ใช้จริงหลังแต่ละ wave · เจอปัญหาตอนคนน้อย ไม่ใช่ตอน 9,000 คนพร้อมกัน

ใช้ของที่แพลตฟอร์มมีก่อนเสมอ

เขียนเพิ่มเฉพาะที่มาตรฐานทำไม่ได้จริง — ค่าดูแลระยะยาวถูกกว่ามาก และได้ความสามารถใหม่ของ Microsoft ฟรีทุกปี

เนื้อหาเก็บเป็นข้อมูล ไม่ใช่หน้าเว็บ

ย้าย คัดลอก และทำซ้ำข้าม site ได้ · ไม่ผูกกับ SharePoint ตลอดไป

วัดก่อนเชื่อ

ทุกข้อจำกัดในเอกสารนี้มาจากการยิง API จริงกับ tenant ไม่ใช่จากการอ่านสเปก

บอกข้อจำกัดตั้งแต่ต้น

ของที่ทำไม่ได้ พูดตอนเสนอ ถูกกว่าพูดตอนทดสอบรับมอบ

07 · ประมาณการ Man-days

ไล่ทีละบรรทัดจากเอกสารลูกค้า ไม่ได้ตีเป็นก้อน · รายการเต็มอยู่ในไฟล์ MANDAYS.md

สรุปตามสายงาน

สายงานสาระสำคัญmd
A · แพลตฟอร์มและโครงสร้างsite + hub · โมเดลสิทธิ์ · การ sync พนักงาน15.0
B · หน้าจัดการเนื้อหา50 ฟีเจอร์ — ก้อนใหญ่ที่สุด119.5
C · โมดูลหน้าแรกและ Knowledge16 REQ · ส่วนใหญ่ประกอบจาก block ที่มีแล้ว28.0
D · ข้อมูลและการเชื่อมต่อ3 ตาราง 20,000 แถว + ขั้นตอนนำเข้ารายเดือน34.0
E · มือถือและความปลอดภัยเฉพาะส่วนที่เป็นงานเรา (ที่เหลือเป็นงาน Intune ของลูกค้า)7.0
F · ค้นหาและรายงานtracking · รายงานการใช้งาน · คำแนะนำการค้นหา10.0
G · ย้ายเนื้อหา48 หัวข้อ ที่ ~0.5 md ต่อหัวข้อ28.0
H · เอกสารส่งมอบSRS · SOW · Training Manual · อบรมผู้ดูแล19.0
รวมงานพัฒนา260.5
PM / BA ตลอดโครงการ · 15%39.1
QA และสนับสนุน UAT · 10%26.1
Phase 0 · workshop ปิดคำถามที่ค้าง6.0
Rollout เป็น wave และเฝ้าดูตัวเลขจริง8.0
รวมทั้งหมด340 md

เสนอเป็น 3 ทางเลือก

ทางเลือกได้อะไรรวมทีม 4 คน
A · ใช้งานได้จริง โครงสร้าง สิทธิ์ หน้าจัดการชั้นที่ใช้บ่อย เนื้อหาทั้งหมด ถามตอบ รายการโปรแกรม ข่าวสาร 171~2 เดือน
B · A + โมดูลข้อมูล เพิ่ม AI Level · Branch Career · Phonebook · custom table · นำเข้ารายเดือน · สิทธิ์รายคน 255~3.2 เดือน
C · ครบตาม ScoreCard เพิ่ม search analytics · เครื่องมือ Super Admin · export PDF · page lock · ส่วนเสริมถามตอบ · เอกสารครบชุด 340~4.2 เดือน

สูตรเดียวกันทุกทางเลือก: (งานพัฒนา × 1.25) + 14 · เดือนคิดที่ 20 วันทำงานต่อคน และไม่รวมช่วงรออนุมัติจากลูกค้า

ทำไมบางบรรทัดถูกกว่าที่คาด

  • 18 จาก 50 ฟีเจอร์ใช้งานได้แล้ววันนี้ จึงคิดแค่ค่าตรวจและปรับ ไม่ใช่ค่าสร้าง
  • เตรียม site ใหม่พร้อม list และคอลัมน์ครบชุด กดปุ่มเดียว เหลือ 2 md จากปกติหลายวัน
  • Branch Career ถูกกว่า AI Level เกินครึ่ง เพราะใช้แบบแผนเดียวกันซ้ำ
  • ของที่ SharePoint มีให้อยู่แล้ว คิดแค่ค่าตั้งค่าและทดสอบ

ตัวเลขที่ยังไม่แน่น (และแน่นเมื่อไหร่)

สิทธิ์รายแถว4–20 mdตัดสินวิธีบังคับสิทธิ์ใน Phase 0
Org chart access0–12 mdรู้ว่าจำเป็นจริงหรือไม่
ย้ายเนื้อหา20–60 mdได้จำนวนไฟล์จริงต่อหมวด
ตำแหน่งงานว่าง3–15 mdได้ spec API ของ HR
Custom table10–18 mdรู้จำนวนตารางและหน้าที่ต้องแสดง
ยังไม่รวมในตัวเลข 340

HBD และระบบ Consent (ลูกค้าระบุเป็น Phase 2 · ประเมินไว้ราว 8 md) · การ redirect ลิงก์เก่าจากเว็บเดิม (ต้องขอรายการ URL ก่อน) · secure viewer สำหรับ watermark บนมือถือ (เป็นโครงการแยก) · งานฝั่งลูกค้าทั้งหมด ได้แก่ Intune policy · Workday→AD sync · API ของ HR · ค่า license