12 KiB
12 KiB
ตารางสรุปหน้าที่และผลลัพธ์ (Output) ของแต่ละ Node ใน LCBP3 Migration Workflow v1.8.1 คแบ่งกลุ่มตามขั้นตอนการทำงานเพื่อให้เข้าใจได้ง่ายขึ้นครับ:
🚀 กลุ่มที่ 1: จุดเริ่มต้นและเตรียมการ (Initialization & Preflight)
| ชือ Node | หน้าที่ (Function) | ผลลัพธ์ (Output) |
|---|---|---|
| Form Trigger | จุดเริ่มต้นของ Workflow แสดงฟอร์มให้ผู้ใช้เลือกโมเดล AI, ขนาด Batch และระบุตำแหน่งไฟล์ Excel | ข้อมูลจากผู้ใช้ (Model, Batch Size, Excel Path) |
| Set Configuration | ตั้งค่าตัวแปรระบบ (Config) เช่น URL, Token, โฟลเดอร์ทำงาน และเกณฑ์การตัดสินใจของ AI | ชุดตัวแปร config ไว้ใช้ตลอด Workflow |
| Check Backend Health | เรียก API ทดสอบว่าระบบ Backend พร้อมทำงานหรือไม่ | สถานะ HTTP 200 (OK) |
| Fetch Categories | ดึงข้อมูล Master Data หมวดหมู่เอกสารจาก Backend | รายการหมวดหมู่เอกสารทั้งหมดในระบบ |
| Fetch Tags | ดึงข้อมูล Master Data แท็กที่มีอยู่จาก Backend | รายชื่อแท็กทั้งหมดในระบบ |
| File Mount Check | ตรวจสอบว่าไฟล์ Excel และโฟลเดอร์ PDF มีอยู่จริง และเช็คสิทธิ์การเขียนไฟล์ Log | สถานะ preflight_ok: true พร้อมรายชื่อหมวดหมู่/แท็กที่ดึงมาได้ |
📂 กลุ่มที่ 2: เตรียมข้อมูลและการแบ่งชุด (Data Ingestion & Batching)
| ชือ Node | หน้าที่ (Function) | ผลลัพธ์ (Output) |
|---|---|---|
| Read Checkpoint | อ่านฐานข้อมูลว่าครั้งที่แล้วประมวลผล Excel ถึงบรรทัดที่เท่าไหร่ (Resume capability) | ตัวเลข last_processed_index ล่าสุด |
| Read Excel Binary | อ่านไฟล์ Excel ต้นฉบับขึ้นมาเป็นข้อมูลไบนารี | ข้อมูล Binary ของ Excel |
| Read Excel | แปลงข้อมูล Binary ให้เป็นตารางข้อมูล JSON | JSON Array ของข้อมูลเอกสารทุกแถว |
| Process Batch + Encoding | ตัดแบ่งแถวตามจำนวน BATCH_SIZE เริ่มจากจุด Checkpoint และแปลง Encoding ให้รองรับภาษาไทย (UTF-8) | ข้อมูลเอกสาร 1 ชุด (เช่น 2 รายการ) ที่พร้อมทำงาน |
| File Validator | ตรวจสอบว่าไฟล์ PDF ที่ระบุใน Excel มีอยู่จริงในโฟลเดอร์ ป้องกัน Path Traversal | เฉพาะรายการที่มีไฟล์ PDF อยู่จริง (รายการ Error จะถูกตัดและส่งไป Log) |
🧠 กลุ่มที่ 3: สกัดข้อความและวิเคราะห์ด้วย AI (Text Extraction & AI Analysis)
| ชือ Node | หน้าที่ (Function) | ผลลัพธ์ (Output) |
|---|---|---|
| Read PDF File | อ่านไฟล์ PDF ของรายการที่ผ่านเข้ามาเป็นข้อมูลไบนารี | ข้อมูล Binary ของไฟล์ PDF |
| Extract PDF Text | ส่งไฟล์ PDF ให้ Apache Tika ทำ OCR / สกัดตัวอักษร | ข้อความดิบ (Text) ที่อ่านได้จากหน้า PDF |
| Check Fallback State | ตรวจสอบใน DB ว่าระบบกำลังอยู่ในโหมดใช้โมเดล AI สำรองหรือไม่ | สถานะ is_fallback_active |
| Fetch DB Context | ดึงข้อมูลโปรเจกต์ แผนก และองค์กร เพื่อใช้เป็นบริบทให้ AI อ้างอิง | ข้อมูลอ้างอิงรหัสและชื่อต่างๆ จากระบบเก่า |
| Build AI Prompt | ประกอบร่างข้อความ (Prompt) โดยรวมข้อมูลจาก Excel, ข้อความใน PDF และบริบท เพื่อสั่งงาน AI | คำสั่งในฟิลด์ ollama_payload |
| Ollama AI Analysis | ส่ง Prompt ยิงเข้า Server Ollama เพื่อให้ AI วิเคราะห์ จัดหมวดหมู่ และสรุปข้อมูล | ข้อความอธิบายหรือ JSON ที่ AI ตอบกลับมา |
| Parse & Validate AI Response | แปลงคำตอบ AI เป็น JSON Object ตรวจสอบว่าโครงสร้างถูกต้อง และจัดรูปแบบให้ตรงกับ Backend | ข้อมูลเดิม + ผลลัพธ์ ai_result (หรือ parse_error ถ้า AI ตอบผิดรูปแบบ) |
| Update Fallback State | นับจำนวน Error ลง DB หาก AI ทำงานพลาดหลายครั้ง ระบบจะสลับไปใช้ Fallback Model โดยอัตโนมัติ | อัปเดตตาราง migration_fallback_state สำเร็จ |
🔀 กลุ่มที่ 4: การตัดสินใจและการนำเข้าระบบ (Routing & Ingestion)
| ชือ Node | หน้าที่ (Function) | ผลลัพธ์ (Output) |
|---|---|---|
| Confidence Router | ตรวจประเมินคะแนนความมั่นใจ (Confidence) จาก AI และกำหนดเส้นทาง route_index ให้เอกสาร | สถานะชั่วคราวและค่า route_index (0, 1, 2, 3) |
| Route by Confidence Switch Node | แบ่งเส้นทางข้อมูลออกเป็น 4 ขา ตามค่าจาก Router | กระจายข้อมูลไปทาง Staging(High), Staging(Review), Reject หรือ Error |
| Restore Binary | (หลังแยกสาย) ดึงข้อมูล Binary ของ PDF กลับมาแนบกับข้อมูลอีกครั้งเตรียมอัปโหลด | JSON + Binary PDF ของไฟล์นั้นๆ |
| Upload to Backend | ยิง API นำไฟล์ PDF ฝากไว้ที่ Temp Storage ของ Backend DMS | รหัสไฟล์ temp_attachment_id ของ Backend |
| Build Enqueue Payload | ประกอบร่างข้อมูลผลวิเคราะห์ AI เข้ากับรหัสไฟล์ เพื่อเตรียมโยนเข้าคิว Migration | โครงสร้าง JSON ที่พร้อมส่งเข้า API Queue (enqueue_payload) |
| Enqueue to Review Queue | ยิงข้อมูลเข้า API Backend เพื่อบันทึกเข้าสู่ Review Queue ระบบ DMS | สถานะสำเร็จจากการรับข้อมูลของ Backend |
| Save Checkpoint | บันทึกประวัติลง Database ว่าประมวลผลผ่านเอกสารชุดนี้เรียบร้อยแล้ว | อัปเดต last_processed_index สำเร็จ |
| Delay | หน่วงเวลา (เช่น 2 วินาที) ก่อนวนรอบขึ้นไปทำข้อมูล Batch ถัดไป | วนลูปกลับไปที่จุด Read Checkpoint |
🚨 กลุ่มที่ 5: การจัดการข้อผิดพลาด (Error Logging)
| ชือ Node | หน้าที่ (Function) | ผลลัพธ์ (Output) |
|---|---|---|
| Log Reject to CSV | หาก AI ให้คะแนนต่ำกว่าเกณฑ์ จะบันทึกเหตุผลทิ้งไว้ในไฟล์ CSV | บรรทัดข้อมูลใน reject_log.csv |
| Log Error to CSV | หากเกิดข้อผิดพลาดในการประมวลผล (เช่น หาไฟล์ไม่เจอ, AI หลอน) จะบันทึกลง CSV | บรรทัดข้อมูลใน error_log.csv |
| Log Error to DB | ยิง API ของ Backend เพื่อบันทึก Error เข้าสู่ Database ส่วนกลาง | ข้อมูล Error ในตาราง migration_errors |