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

52 lines
3.9 KiB
Markdown

# 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` | `OcrTyphoonOptions``OcrNpDmsOptions`, `typhoonOptions``ocrOptions`, log messages |
| `np-dms-ocr-processor.ts` | Import `OcrNpDmsOptions`, field `typhoonOptions``ocrOptions` |
| `ai.controller.ts` | `typhoonOptions``ocrOptions` ใน `submitSandboxOcr` |
| `ai-batch.processor.ts` | Import + all `typhoonOptions``ocrOptions` (5 locations) |
| `ai-queue.service.ts` | Field `typhoonOptions``ocrOptions` ใน payload type + job data |
| `ocr.service.ts` | `OcrDetectionInput.typhoonOptions``ocrOptions`, override logic |
| `ai.module.ts` | Change log comment: `TyphoonOcrProcessor``NpDmsOcrProcessor` |
| `ai-batch.processor.spec.ts` | Test assertion: `typhoonOptions``ocrOptions` |
| `ocr.service.spec.ts` | Test input: `typhoonOptions``ocrOptions` |
| `sandbox-ocr-engine.service.spec.ts` | Test description: `typhoonOptions``ocrOptions` |
### Frontend (7 files)
| ไฟล์ | การเปลี่ยนแปลง |
| --- | --- |
| `admin-ai.service.ts` | Param `typhoonOptions``ocrOptions` ใน `submitSandboxOcr` |
| `OcrSandboxPromptManager.tsx` | State vars `typhoon*``ocr*`, UI label "Typhoon OCR Options" → "OCR Options", engineType mapping `tesseract``fast_path``auto`, ลบ dead `typhoon_ocr` check, fallback label "Tesseract" → "Fast Path (OCR)" |
| `OcrEngineSelector.tsx` | `isTyphoon``isAiPowered`, ลบ 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 — ยังไม่ได้รัน
- [x] `grep_search` สำหรับ `typhoon|Typhoon|TYPHOON` ใน frontend — เหลือเฉพาะ change log comments
- [x] `grep_search` สำหรับ `tesseract|Tesseract` ใน frontend — เหลือเฉพาะ change log comments
- [x] `grep_search` สำหรับ `typhoonOptions|OcrTyphoonOptions|QUEUE_TYPHOON_OCR|TyphoonOcrProcessor` ใน backend — ไม่พบ