Files
lcbp3/specs/88-logs/session-2026-06-20-ocr-naming-refactor.md
T
admin a80ebef285
CI / CD Pipeline / build (push) Successful in 7m37s
CI / CD Pipeline / deploy (push) Failing after 20m15s
refactor(ai): OCR sidecar canonical naming cleanup — typhoon→np-dms, remove hardcoded keys, asyncio.to_thread, ADR-040/041
2026-06-20 16:37:04 +07:00

3.9 KiB

Session — 2026-06-20 (OCR Naming Refactor: typhoon → np-dms-ocr)

Summary

ทำการ refactor naming conventions ที่เกี่ยวข้องกับ OCR engine จาก "typhoon" เป็น "np-dms-ocr" ทั้ง backend และ frontend อย่างครบถ้วน รวมถึงการ cleanup Tesseract references ที่เหลืออยู่ใน test files และ source code

การเปลี่ยนแปลง (Changes)

Backend (7 files + 3 test files)

ไฟล์ การเปลี่ยนแปลง
sandbox-ocr-engine.service.ts OcrTyphoonOptionsOcrNpDmsOptions, typhoonOptionsocrOptions, log messages
np-dms-ocr-processor.ts Import OcrNpDmsOptions, field typhoonOptionsocrOptions
ai.controller.ts typhoonOptionsocrOptions ใน submitSandboxOcr
ai-batch.processor.ts Import + all typhoonOptionsocrOptions (5 locations)
ai-queue.service.ts Field typhoonOptionsocrOptions ใน payload type + job data
ocr.service.ts OcrDetectionInput.typhoonOptionsocrOptions, override logic
ai.module.ts Change log comment: TyphoonOcrProcessorNpDmsOcrProcessor
ai-batch.processor.spec.ts Test assertion: typhoonOptionsocrOptions
ocr.service.spec.ts Test input: typhoonOptionsocrOptions
sandbox-ocr-engine.service.spec.ts Test description: typhoonOptionsocrOptions

Frontend (7 files)

ไฟล์ การเปลี่ยนแปลง
admin-ai.service.ts Param typhoonOptionsocrOptions ใน submitSandboxOcr
OcrSandboxPromptManager.tsx State vars typhoon*ocr*, UI label "Typhoon OCR Options" → "OCR Options", engineType mapping tesseractfast_pathauto, ลบ dead typhoon_ocr check, fallback label "Tesseract" → "Fast Path (OCR)"
OcrEngineSelector.tsx isTyphoonisAiPowered, ลบ dead typhoon_ocr check
SandboxTestArea.tsx UI labels "Typhoon OCR" → "np-dms-ocr"
page.tsx ลบ name.includes('typhoon') 4 จุด, เปลี่ยน name.includes('ocr')name.includes(OCR_MODEL_NAME) 4 จุด
ocr-engine-selector.test.tsx Mock Tesseract → Fast Path (PyMuPDF), assertions อัปเดต
OcrEngineSelector.test.tsx Mock Tesseract → Fast Path (PyMuPDF), assertions อัปเดต
ocr-sandbox-prompt-manager.test.tsx Mock engineType: 'typhoon_ocr''np_dms_ocr'

กฎที่ Lock แล้ว

  • D28 (เดิม): Canonical naming: np-dms-ai (LLM), np-dms-ocr (OCR), fast-path (PyMuPDF) — ครบทุก layer แล้ว
  • เพิ่มเติม: Frontend model name normalization ใช้ constants OCR_MODEL_NAME และ MAIN_MODEL_NAME เท่านั้น — ห้าม hardcoded strings
  • เพิ่มเติม: Backend OcrEngineType enum มีแค่ FAST_PATH และ NP_DMS_OCR — ไม่มี TESSERACT หรือ TYPHOON_OCR แล้ว

Verification

  • pnpm --filter backend exec tsc --noEmit — ยังไม่ได้รัน
  • pnpm --filter lcbp3-frontend exec tsc --noEmit — ยังไม่ได้รัน
  • Backend unit tests — ยังไม่ได้รัน
  • Frontend unit tests — ยังไม่ได้รัน
  • grep_search สำหรับ typhoon|Typhoon|TYPHOON ใน frontend — เหลือเฉพาะ change log comments
  • grep_search สำหรับ tesseract|Tesseract ใน frontend — เหลือเฉพาะ change log comments
  • grep_search สำหรับ typhoonOptions|OcrTyphoonOptions|QUEUE_TYPHOON_OCR|TyphoonOcrProcessor ใน backend — ไม่พบ