mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 16:56:22 +02:00
2.4 KiB
2.4 KiB
Story 5.4: Hệ thống Khóa Tác vụ dựa trên Hạn Mức (Usage Tracking & Rate Limit Enforcement)
Status: ready-for-dev
Story
As a Kỹ sư Hệ thống, I want những người dùng hết quota (vượt quá file upload hoặc số lượng tin nhắn) bị từ chối dịch vụ cho đến khi nâng cấp, so that mô hình kinh doanh không bị lỗ do chi phí LLM và Storage, áp dụng theo FR13.
Acceptance Criteria
- Endpoint Upload (Document Parser) và Endpoint Chat (RAG AI) sẽ query Database để check
Subscription_Statusvàdocument_count,token_balance. - Nếu Document count >= Limit hệ thống từ chối Upload và trả lỗi
402 Payment Requiredhoặc403. - UI hiển thị Toast Error hoặc một Modal up-sell Upgrade to Pro.
Tasks / Subtasks
- Task 1: Check Limits ở Route
/api/v1/documents- Subtask 1.1: Tạo function Utils
check_upload_quota()query lấy Package Plan của JWT User. Đếm số object hiện có trong DB (Count records trong tabledocumentsnơiuser_id = X). - Subtask 1.2: Nếu đạt MAX_LIMIT (ví dụ 10 đối với FREE), Raise HTTPException 402/403.
- Subtask 1.1: Tạo function Utils
- Task 2: Refine Frontend Validation
- Subtask 2.1: Ở component
DocumentUploader, handle catch Error response402. Bật Toast thông báo "Bạn đã hết File Limit miễn phí".
- Subtask 2.1: Ở component
Dev Notes
Relevant Architecture Patterns & Constraints
- Yêu cầu NFR Architecture: KHÔNG HARDCODE số file LIMIT vào trong code API mà phải load Enum hoặc Database row. Nên dùng một
config moduletĩnh hoặc Map Object dựa trênplan_idenum để check. - Nếu User Plan là
PRO,MAX_LIMITlà 100. - Khúc check Chat Token Balance đã được cover một phần ở Story 3.5, nên Story 5.4 tập trung vào
File Upload Rate LimitvàChat Frequency Rate Limit(tránh crawler/spam theo giờ).
Project Structure Notes
- Module thay đổi:
surfsense_backend/app/routes/documents_routes.py(hoặc endpoints xử lý Upload mới nhất).surfsense_web/src/components/UploadDocument.tsx
References
- [Epic 5.4 - Quota Check]
Dev Agent Record
Agent Model Used
Antigravity Claude 3.5 Sonnet Engine
File List
surfsense_backend/app/routes/documents_routes.py