Files
lcbp3/specs/88-logs/session-2026-05-24-migration-uuid-fix.md
T
admin 52b96d01de
CI / CD Pipeline / build (push) Successful in 5m5s
CI / CD Pipeline / deploy (push) Successful in 3m48s
690608:0012 ADR-035-135 #08
2026-06-08 00:12:31 +07:00

2.2 KiB

Session 3 — 2026-05-24 (Migration Queue Attachment UUID Bug Fix)

ปัญหาที่พบ (Root Cause)

ไฟล์ n8n.workflow.v2.json (โหนด Insert Review Queue) ส่งค่า tempAttachmentId โดยใช้ {{parseInt($json.attachmentId)}} ซึ่งพยายามแปลง UUID string เป็นตัวเลข ผลลัพธ์คือค่า NaN หรือตัวเลขที่ผิดพลาด (เช่น "0195..."19) ทำให้คอลัมน์ temp_attachment_id ใน migration_review_queue เป็น NULL เสมอ — ละเมิด ADR-019 Tier 1 Blocker

การแก้ไข (Fix)

ไฟล์ การเปลี่ยนแปลง
backend/src/modules/ai/dto/migration-checkpoint.dto.ts ปรับ tempAttachmentId เป็น @IsOptional() รองรับทั้ง UUID string และ Integer PK
backend/src/modules/ai/ai-migration-checkpoint.service.ts เพิ่ม UUID→INT resolution: SELECT id FROM attachments WHERE uuid = ? LIMIT 1
specs/03-Data-and-Storage/n8n.workflow.v2.json เปลี่ยนส่ง temp_attachment_public_id (UUID string) แทน parseInt(...) ที่ผิด

Pattern ที่ตกลง (Locked)

n8n ส่ง: { tempAttachmentId: "019505a1-7c3e-7000-..." }  ← UUID string
Backend รับ: ตรวจสอบประเภท → ถ้าเป็น string → query DB → ได้ INT id จริง
DB บันทึก: migration_review_queue.temp_attachment_id = <INT>  ← ถูกต้อง

Verification

  • npx tsc --noEmit ผ่าน ไม่มี type error
  • ตรวจสอบ logic ใน Service แล้ว ไม่มีการเขียนทับ tempAttachmentId ด้วย undefined (guard check แล้ว)