Checklist review PR cho CuCu Note (code FE + BE).

Khi chạy `/review-pr`:

1. **Hiểu phạm vi PR**
   - Đọc diff / files changed.
   - Xác định:
     - Phần nào là FE (React/Vite).
     - Phần nào là BE (FastAPI, agent, common).
     - Có thay đổi DB/schema/API contract không.

2. **Style & cấu trúc**
   - FE:
     - Component nhỏ, dễ test, không quá nhiều trách nhiệm.
     - Hook (`useMemo`, `useEffect`, `useQuery`…) dùng đúng dependency.
     - Không lặp lại logic filter/query – ưu tiên reuse hook/context có sẵn.
   - BE:
     - Route chia theo module rõ (memos, chatbot, common).
     - Service/helper theo pattern singleton (như `CANIFAGraph`, `FormatterAgent`) khi phù hợp.
     - Không trộn lẫn logic domain với code infra (db client, cache, v.v.).

3. **Performance**
   - FE:
     - Tránh re-render vô ích (props ổn định, key chuẩn, tránh inline function quá nhiều).
     - List lớn (memos) dùng pagination / infinite scroll đã có, không load all.
   - BE:
     - Query Mongo tối ưu (có filter, limit, sort rõ ràng, tránh scan toàn bộ).
     - Không gọi LLM/tool thừa trong agent (`memo_retrieval_tool` chỉ khi cần).

4. **Bảo mật & độ tin cậy**
   - Không hardcode secret (API keys, DB URI) trực tiếp trong code.
   - Check:
     - Auth/visibility memos: PRIVATE/PROTECTED/PUBLIC xử lý đúng.
     - Chatbot không lộ thông tin nhạy cảm trong log.
   - Validate input cơ bản (id, filter, query string) trước khi dùng.

5. **Test & DX**
   - Gợi ý test nên chạy:
     - FE: `pnpm lint`, `pnpm test:e2e` (hoặc `/run-e2e`).
     - BE: pytest, ruff/black (`/format-code` cũng là hint).
   - Ghi nhận:
     - Có test mới cho logic quan trọng không (memos, comment, chatbot history)?
     - Code mới có dễ hiểu cho dev khác (tên biến, tên hàm, comment ngắn gọn)?

6. **Output**
   - Tóm tắt review theo 3 phần:
     - ✅ **Điểm tốt** (style, kiến trúc, UX…).
     - ⚠️ **Cần cải thiện** (ưu tiên theo mức độ: blocking / nên sửa / nice-to-have).
     - 🧪 **Đề xuất test cần chạy** trước khi merge.


