Files
lcbp3/specs/03-Data-and-Storage/0.md
T
admin 3abef2c745
Build and Deploy / deploy (push) Successful in 5m48s
260317:1200 Refactor to uploads
2026-03-17 12:00:26 +07:00

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