You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

59 lines
3.1 KiB
Markdown

---
name: list-entities
description: Liệt kê các hồ sơ (TBMT/KHLCNT/KQLCNT) có trong kho dữ liệu. Dùng khi user muốn tổng quan "có những tài liệu nào" hoặc đếm số lượng theo trạng thái.
---
# List Entities
## Khi nào dùng
- "Có những hồ sơ nào trong hệ thống?"
- "Liệt kê các TBMT đã upload"
- "Bao nhiêu hồ sơ đang ở trạng thái indexed?"
- "Cho tôi xem 10 record mới nhất"
- "Gói nào đang mở / sắp đóng thầu?"
## Workflow
1. Gọi `list_entities()` — không tham số nếu user hỏi chung.
2. Lọc theo `entity_type` nếu user nêu loại cụ thể. **Giá trị phải LOWERCASE**:
`"tbmt"` / `"khlcnt"` / `"kqlcnt"`. Filter là exact-match — gọi `"TBMT"` (hoa) trả về **0 kết quả**.
- Corpus hiện tại chủ yếu là `tbmt`; ngoài ra còn `tbmst_pre` (thông báo mời sơ tuyển / pre-notice).
`khlcnt`/`kqlcnt` được hỗ trợ nhưng có thể chưa có dữ liệu.
3. Lọc theo `status` nếu user nêu trạng thái. Giá trị `index_status` thực tế:
`"indexed"`, `"changed"`, `"indexing"`, `"converting"`, `"converted"`, `"uploaded"`, `"deleted"`.
(Không có `"failed"` ở mức entity — `failed` chỉ tồn tại ở mức chunk.)
4. Mặc định `limit=50` — đủ cho hầu hết câu hỏi.
5. Mỗi row trả về `SELECT *` nên giàu metadata. Surface các cột có ý nghĩa:
`entity_code` | `entity_type` | `title` (tên gói) | `investor_name` (chủ đầu tư) |
`status_code` | `bid_close_date` (đóng thầu) | `index_status` | `updated_at`.
## Ví dụ
**User:** "Cho tôi xem danh sách TBMT đã indexed"
**Agent:**
```
→ list_entities(entity_type="tbmt", status="indexed")
← [{entity_code: "IB2600250575-00", title: "...", investor_name: "...",
bid_close_date: "2026-06-12T09:00:00", index_status: "indexed", ...}, ...]
```
**Reply:** bảng markdown — cột `Mã` | `Tên gói` | `Chủ đầu tư` | `Đóng thầu` | `Trạng thái` + tổng số.
## Đóng/mở thầu (bid status)
`bid_close_date` / `bid_open_date`**ISO giờ Việt Nam (UTC+7, không có hậu tố tz)**. Khi user hỏi
"gói nào đang mở / đã đóng", tính trạng thái theo **giờ VN** (Asia/Ho_Chi_Minh), không dùng giờ máy chủ:
`đang mở` (deadline tương lai) · `sắp đóng` (~trong 48h) · `đã đóng` (đã qua) · `không xác định` (null/invalid).
## Anti-patterns
- ❌ Đừng gọi `entity_type` viết HOA — DB lưu lowercase, sẽ trả rỗng.
- ❌ Đừng bịa mã kiểu `TBMT-2026-001` — mã thật là eGP `IB<digits>-<version>` (vd. `IB2600250575-00`).
- ❌ Đừng dùng `list_entities` rồi tự duyệt trả lời nội dung — đó là việc của `search_procurement_docs`.
- ❌ Đừng dump toàn bộ raw row cho user — chỉ surface các cột có ý nghĩa ở trên.
- ❌ Đừng kết luận đóng/mở thầu bằng giờ máy chủ — luôn tính theo giờ VN.
- ❌ Đừng tăng `limit` lên rất lớn (>200) — gây nhiễu cho user. Nếu cần xem nhiều hơn, page bằng cách lọc theo `entity_type`.