---
name: Local Database Proxy API Tester
description: Vòng lặp test toàn bộ các API endpoint có kết nối Database (Postgres/StarRocks) qua SQLite Mock Proxy để phát hiện lỗi Dialect và sửa Regex.
---

# Local DB Proxy API Test Workflow

Workflow này dùng để tự động dò quét, curl test và vá lỗi cho toàn bộ các API có giao tiếp với Database thông qua lớp mạo danh `sqlite_mock.py`.

## Bước 1: Liệt kê các API giao tiếp với Database
- Quét nhanh thư mục `backend/api` để tìm các route gọi `execute_query` (StarRocks) hoặc `db_pool.get_conn()` (Postgres).
- Lập danh sách các API quan trọng cần test, điển hình:
  - `/api/product-desc/list`
  - `/api/product-desc/overview`
  - `/api/products/filters`
  - `/api/products/list`
  - Báo cáo/Fashion rules routes.

## Bước 2: Test từng Endpoint (với Uvicorn đang chạy)
Dùng `run_command` để gọi PowerShell `Invoke-RestMethod` (hoặc curl) vào từng endpoint (http://127.0.0.1:5000).

```markdown
// turbo
Invoke-RestMethod -Uri "http://127.0.0.1:5000/api/product-desc/list?limit=10" -Method Get
```

## Bước 3: Đọc Log và Sửa Lỗi (Diagnose & Patch)
Nếu endpoint trả về lỗi `500 Internal Server Error`, Agent bắt buộc phải:
1. Đọc nội dung log lỗi trên Terminal Uvicorn đang rớt.
2. Kiểm tra xem lỗi xuất phát từ SQLite không hiểu cú pháp (ví dụ: thiếu Regex `?` hoặc sai tên bảng).
3. Quay lại file `backend/common/sqlite_mock.py` để bổ sung thuật toán `re.sub()` hoặc logic thay thế trong `translate_query()`.
4. Sau khi sửa mô-đun, chờ Uvicorn nháy reload và vòng lại Bước 2 test lại chính Endpoint đó.

## Bước 4: Validation (Xanh lè toàn bộ)
Khi toàn bộ API endpoint liệt kê ở Bước 1 đều trả về HTTP 200 (có chèn Data) với SQLite cục bộ, đánh dấu quá trình test kết thúc thành công.
