เอกสารอธิบายโปรเจคทั้งหมด — สถาปัตยกรรม ฐานความรู้ (KB) วิธีการ derive ตัวชี้วัด การสอบเทียบกับผลประเมินจริง และข้อจำกัดที่ทราบ — เพื่อให้ผู้อ่านตรวจสอบหลักการและขั้นตอนของระบบได้ครบถ้วน
FTSE ESG Analyzer คือระบบที่รับ URL เว็บไซต์ของบริษัทจดทะเบียน แล้ววิเคราะห์อัตโนมัติว่า ข้อมูล ESG ที่บริษัทเปิดเผยต่อสาธารณะครอบคลุมตัวชี้วัด (indicators) ของ FTSE Russell ESG Scores มากน้อยเพียงใด พร้อมให้คะแนนรายธีมและราย pillar (E / S / G) ผลลัพธ์ใช้เป็นเครื่องมือ pre-assessment สำหรับทีมที่ปรึกษาและบริษัทที่ต้องการเตรียมตัวเข้ารับการประเมิน FTSE จริง
ระบบให้บริการที่ https://esg.ohmai.me ผู้ใช้กรอก URL เลือกอุตสาหกรรม (หรือให้ AI ตรวจจับอัตโนมัติ) แล้วระบบจะ crawl เว็บไซต์ อ่านเอกสาร แล้วประเมินทีละตัวชี้วัด
ปัจจุบันระบบผ่านการสอบเทียบกับผลจริง 2 ชุด: (1) เอกสาร Gap Analysis ของผู้เชี่ยวชาญสำหรับ TIDLOR และ (2) ไฟล์ CDD (Company Data Download) อย่างเป็นทางการของ FTSE สำหรับ PTG Energy — รายละเอียดในหัวข้อ 7
| ส่วนประกอบ | เทคโนโลยี | หน้าที่ |
|---|---|---|
| Frontend | Next.js + Tailwind + shadcn/ui | หน้ากรอก URL, แสดงผลคะแนน, ตาราง gap, Website Architecture, ประวัติการวิเคราะห์ |
| Backend | Python FastAPI | API, จัดการคิววิเคราะห์, derive ตัวชี้วัด, คำนวณคะแนน |
| Crawler | Playwright (headless browser) | เก็บเนื้อหาเว็บ + PDF (เช่น รายงานความยั่งยืน) รวม subdomain ด้าน IR/sustainability |
| AI | OpenAI gpt-4.1-mini | ตรวจจับอุตสาหกรรม + ประเมินตัวชี้วัดทีละข้อจากเนื้อหาที่ crawl ได้ |
| Database | Supabase (PostgreSQL) | เก็บผลวิเคราะห์, รายชื่อ 173 ICB subsectors, theme summaries |
| Deploy | Docker บน AWS EC2 | โดเมน esg.ohmai.me ผ่าน nginx, API key ฝั่ง server เท่านั้น (proxy), มี rate limiting |
| ไฟล์ในระบบ | เนื้อหา | เอกสารต้นทาง (สาธารณะ) |
|---|---|---|
ftse_indicators.json | ตัวชี้วัด 381 ตัว พร้อมชื่อ คำอธิบาย และธีม (14 ธีม) | FTSE ESG Data Model Indicators RC11 2024–2025 (ฉบับภาษาไทย) |
indicator_subsector_mapping.json | ประเภทของตัวชี้วัดแต่ละตัว (core / sector-specific / performance) และรายชื่อ subsector ที่เกี่ยวข้อง | คอลัมน์ Subsector ในเอกสาร RC11 (แปลงรหัส ICB เดิม → รหัส 8 หลัก) |
indicator_subparts.json | ตัวชี้วัดย่อย (sub-indicators) รวม 827 รายการ | ข้อ a./b./c. ในคำอธิบาย RC11 + โครงสร้างข้อย่อยจาก CDD (หัวข้อ 7) |
sector_themes.py | ตารางธีมต่ออุตสาหกรรม (66 subsectors แบบระบุชัด + ค่า default) | Guidelines FTSE Russell 2026 (ฉบับภาษาไทย) หน้า 41–51 |
icb_old_to_new.json + ตาราง DB | รายชื่อ ICB 173 subsectors + การแปลงรหัสเก่า/ใหม่ | ICB official structure + legacy mapping |
sector_themes.py ตามรหัส ICB subsector เช่น Consumer Lending ได้ 7 ธีม, Integrated Oil & Gas ได้ 10 ธีม (โดย Climate Change และ Biodiversity คงไว้ระดับธีมแต่ไม่มีตัวชี้วัด สำหรับบริษัทไทยที่ไม่ใช่ multinational)| อุตสาหกรรม | รหัส ICB | ธีม | Indicators | Sub-indicators |
|---|---|---|---|---|
| Oil, Gas & Energy (Integrated) | 60101000 | 10 | 142 | 413 |
| Electricity & Utilities | 65101015 | 10 | 199 | 499 |
| Renewable Energy | 65101010 | 9 | 166 | 448 |
| Mining & Metals | 55102000 | 10 | 180 | 483 |
| Chemicals | 55201000 | 11 | 186 | 490 |
| Construction & Materials | 50101010 | 9 | 158 | 380 |
| Food & Beverages | 45102020 | 13 | 214 | 544 |
| Personal & Household Goods | 45201020 | 8 | 143 | 351 |
| Healthcare & Pharmaceuticals | 20103015 | 10 | 173 | 409 |
| Banks & Financial Services | 30101010 | 7 | 149 | 301 |
| Consumer Finance | 30201020 | 7 | 120 | 251 |
| Real Estate | 35101010 | 12 | 215 | 549 |
| Technology | 10101015 | 8 | 136 | 315 |
| Telecommunications | 15102015 | 10 | 167 | 398 |
| Media & Entertainment | 40301020 | 5 | 104 | 215 |
| Retail & Consumer Services | 40401010 | 8 | 138 | 283 |
| Travel & Leisure | 40501025 | 9 | 146 | 358 |
| Transportation & Logistics * | 50206060 | 10 | 165 | 394 |
| Automobiles & Parts | 40101020 | 8 | 152 | 367 |
| Industrial & Manufacturing * | 50203000 | 10 | 165 | 394 |
* สองกลุ่มนี้ยังใช้ชุดธีม default (ตาราง Guidelines ไม่มีคอลัมน์ของ subsector นี้โดยตรง) — อีก 18 กลุ่มใช้โปรไฟล์ธีมเฉพาะอุตสาหกรรมตามเอกสาร FTSE
เมื่อได้รายการตัวชี้วัดย่อยแล้ว ระบบส่งเนื้อหาที่ crawl ได้ (แยกหน้าเว็บ/PDF พร้อม URL ต้นทาง) ให้ AI ตรวจทีละธีมว่า แต่ละข้อย่อยมีข้อมูลเปิดเผยหรือไม่ ผลแต่ละข้อคือสถานะ (พบ / พบบางส่วน / ไม่พบ) พร้อมข้อความอ้างอิงและแหล่งที่มา จากนั้นคำนวณเป็นคะแนนธีม 0–5 ตามสัดส่วนข้อที่ตอบได้ และถ่วงน้ำหนักรวมเป็น pillar E/S/G ด้วยระดับ exposure ของธีม (High = 3, Medium = 2, Low = 1 ตามวิธีของ FTSE)
| รายการ | ระบบ SI | ผู้เชี่ยวชาญ (REF) | ผล |
|---|---|---|---|
| ธีมที่ applicable | 7 | 7 | ตรงกัน |
| Indicators | 120 | 120 | ตรงกัน |
| Gap ที่ผู้เชี่ยวชาญพบ — ระบบครอบคลุม | 60/60 | 60 | 100% |
| Sub-indicators | 251 | 219 | ต่างจากรูปแบบการนับ (REF นับตัวชี้วัดที่แตกข้อย่อยเป็น 1 แถว) |
CDD (Company Data Download) คือไฟล์ผลประเมินจริงที่ FTSE ส่งให้บริษัท ระบุรายตัวว่าตัวชี้วัดใด applicable (YES/NAP) และแต่ละตัวมีข้อย่อยรหัสอะไรบ้าง — เป็น ground truth ที่ละเอียดที่สุดที่มี
| รายการ | ระบบ SI | FTSE CDD | ผล |
|---|---|---|---|
| ธีมที่มีตัวชี้วัด | 8 | 8 | ตรงกัน |
| Indicators | 142 | 142 | ตรงกัน 142/142 (ไม่มีเกิน ไม่มีขาด) |
| Sub-indicators | 413 | 413 | ตรงกัน 413/413 |
ระบบผ่านการ audit ฐานความรู้ครั้งใหญ่ โดยเทียบกับเอกสารสาธารณะและ CDD พบและแก้ไขปัญหาดังนี้
| ปัญหาที่พบ | รายละเอียด | การแก้ไข |
|---|---|---|
| รหัสอุตสาหกรรมบนหน้าเว็บผิด 9/20 ตัว | 2 ตัวไม่มีอยู่ในรายชื่อ ICB (เลือกแล้ว error ทันที), หลายตัวชี้ผิด subsector เช่น "Mining" ชี้ไปรหัสของ Forestry, "Real Estate" ชี้ไปรหัสของ Health Care REITs | แก้ทั้ง 20 ตัวให้ตรงรายชื่อ ICB 173 และตรวจกับฐานข้อมูลจริงแล้ว |
| ธีม Biodiversity เกินสำหรับ Integrated O&G | ตาราง Guidelines ระบุว่าธีมนี้ขึ้นกับ geography/multinational ซึ่งบริษัทไทยล้วนไม่เข้าเงื่อนไข | ปิดตัวชี้วัดธีมนี้สำหรับ subsector ดังกล่าว (แนวเดียวกับ Climate Change) |
| ตัวชี้วัด EWT36–40 เกิน | RC11 มี footnote "เฉพาะบริษัทที่มีกระบวนการ E&P/กลั่น" ซึ่ง KB ตกหล่นตอนสกัด | ปรับ mapping + บันทึกเงื่อนไขจาก footnote ไว้ในข้อมูล |
| ข้อย่อยขาด 42 รายการ | ช่องข้อมูลเชิงโครงสร้าง (Coverage, Currency, Base Year ฯลฯ) ไม่ปรากฏในเอกสารสาธารณะ — เห็นได้จากระบบจริงของ FTSE เท่านั้น | เติมจากโครงสร้าง CDD (ไม่ใช่คำตอบของบริษัท) |
| ชื่อตัวชี้วัดผูกผิดรหัส 49/381 ตัว | กระจุกในธีม Supply Chain: Social (36 ตัว — สลับกับตัวชี้วัดกลุ่มธนาคาร/ประกัน/asset managers), บล็อก Anti-Corruption เลื่อน 1 ตำแหน่ง, กลุ่ม Water 7 ตัว — จำนวนนับไม่เคยผิด (mapping ถูก) แต่ AI อ่านโจทย์ผิดความหมาย | สร้างชื่อ+คำอธิบายใหม่จากแถวนิยามใน RC11 ทั้ง 49 ตัว ตรวจซ้ำด้วย CDD แล้วทุกตัวที่เทียบได้ |
| ข้อย่อย b. ขาด 27 ตัว | ผลพวงจากชื่อที่ผูกผิด — โครงสร้างจริงมี a./b. แต่ KB มีแค่ข้อเดียว | เติมครบจากแถว RC11 |
หลังการแก้ไขทั้งหมด: ชื่อตัวชี้วัด 381/381 ตรงกับแถวนิยามใน RC11 (ยกเว้น ECC22 ซึ่ง RC11 ฉบับภาษาไทยไม่มีแถวนิยาม มีเพียงการอ้างถึง) และผลสอบเทียบ TIDLOR/PTG ในหัวข้อ 7 ยังคงครบถ้วน
| สคริปต์ | หน้าที่ |
|---|---|
scripts/verify_against_refs.py | เทียบผล derive ของระบบกับ ground truth ทั้ง 2 ชุด (TIDLOR + PTG) — รันซ้ำได้ทุกเมื่อ |
scripts/validate_kb_against_rc11.py | ตรวจชื่อ/คำอธิบายทั้ง 381 ตัว เทียบกับแถวนิยามใน RC11 แบบ row-level (exit code 1 ถ้าพบไม่ตรง) |
scripts/fix_kb_names_from_rc11.py | เครื่องมือซ่อมชื่อจาก RC11 (dry-run เป็นค่าเริ่มต้น) |
scripts/add_cdd_subparts.py | เติมโครงสร้างข้อย่อยจาก CDD (idempotent) |
scripts/generate_tidlor_compare.py | สร้างรายงานเปรียบเทียบ TIDLOR (HTML) |
| ข้อจำกัด | ผลกระทบ / แนวทาง |
|---|---|
| FTSE ไม่เผยแพร่รายชื่อประเทศต่อธีม (Geography rule) | ธีมที่ขึ้นกับ geography ต้องอนุมานจากผลจริง — แม่นยำเต็มที่เฉพาะอุตสาหกรรม/ประเทศที่เคยสอบเทียบ |
| โครงสร้างข้อย่อยเชิงระบบไม่อยู่ในเอกสารสาธารณะ | เติมได้จาก CDD ของลูกค้าแต่ละราย — ทุกการสอบเทียบใหม่ทำให้ KB แม่นขึ้นถาวร |
| ตาราง Guidelines มี 55 subsectors — ระบบ map ตรงตัวได้ 34 | คอลัมน์ที่เหลือ (เช่น Airlines, Marine Transportation, Tires) ใช้ค่า default ไปก่อน เพราะเอกสารไม่ระบุระดับ exposure ให้เพิ่มเองได้โดยไม่เดา |
| ตัวชี้วัดแบบมีเงื่อนไขการดำเนินงาน (เช่น fracking) | ระบบคัดที่ระดับ subsector — บริษัทใน subsector เดียวกันที่มี operations ต่างกัน (เช่น Integrated O&G ที่มีโรงกลั่น) อาจต้องปรับรายบริษัท |
| คะแนนยังแกว่งจาก AI (±0.5–1.0 ต่อ pillar) และยังต่ำกว่า band ผลจริง | เฟสถัดไป: score band calibration (ตัวอย่าง PTG ระบบให้ 2.48 ขณะที่ผลจริงได้ 3.3) |
| ECC22 ไม่มีแถวนิยามใน RC11 ฉบับภาษาไทย | คงชื่อใน KB ไว้ (สอดคล้องกับบริบทการอ้างถึงในเอกสาร) — รอเทียบกับ CDD ของบริษัทที่ธีม Climate Change applicable |
FTSE ESG Analyzer เป็นระบบ pre-assessment ที่ derive ตัวชี้วัดจากเอกสารสาธารณะของ FTSE Russell ทั้งหมด ผ่านการสอบเทียบโครงสร้างกับผลประเมินจริง 2 บริษัท — TIDLOR ตรง 120/120 indicators และครอบคลุม gap ของผู้เชี่ยวชาญ 60/60 และ PTG ตรงกับ CDD อย่างเป็นทางการ 142/142 indicators และ 413/413 sub-indicators — ฐานความรู้ผ่านการ audit ชื่อครบทั้ง 381 ตัวเทียบกับ RC11 พร้อมเครื่องมือตรวจสอบซ้ำอัตโนมัติ งานเฟสถัดไปคือการปรับความนิ่งและ band ของคะแนนให้ตรงกับผลประเมินจริง