You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Người thuê đăng ký tài khoản → POST /api/auth/register (role=2)
2. Chủ trọ thêm khách thuê → POST /api/tenants (tạo HĐ tự động status=1)
HOẶC
Chủ trọ tạo HĐ mời ký → POST /api/contracts (status=0)
3. Người thuê nhận thông báo HĐ → GET /api/me → contracts[].status=0
4. Người thuê ký HĐ → PUT /api/me/sign-contract/:id → HĐ status=1
5. Chủ trọ thấy HĐ hiệu lực → GET /api/contracts → status=1
Luồng thanh toán → Lịch sử doanh thu
1. Chủ trọ tạo hóa đơn → POST /api/invoices
2. Chủ trọ đánh dấu đã TT → PUT /api/invoices/:id/pay
→ Invoice.status = 1 (Đã thanh toán)
→ Transaction mới được tạo (ghi vào collection Transaction)
3. Lịch sử thanh toán reload → GET /api/payments
→ Đọc từ collection Transaction + populate Invoice/Room/Tenant
4. Biểu đồ doanh thu cập nhật dựa trên payments đã thanh toán
Luồng sửa chữa
1. Người thuê đăng nhập → GET /api/me (lấy portal data)
2. Người thuê gửi yêu cầu → POST /api/me/repairs
→ Tự động tìm contract hiệu lực của tenant
→ Tạo RepairRequest gắn contractId
3. Chủ trọ thấy yêu cầu → GET /api/repairs (populate room + sender)
4. Chủ trọ cập nhật → PUT /api/repairs/:id {status, priority, note}
5. Người thuê thấy cập nhật → GET /api/me → repairs[]
Thay đổi trong phiên bản này (cập nhật 07/06/2026)
Backend (API)
✅ Thêm /api/me endpoint — Portal người thuê: lấy phòng, HĐ, hóa đơn, thanh toán, sửa chữa, stats
✅ Thêm /api/me/sign-contract/:id — Người thuê ký HĐ qua token JWT
✅ Thêm /api/me/pay-invoice/:id — Người thuê thanh toán hóa đơn
✅ Thêm /api/me/repairs — Người thuê gửi yêu cầu sửa chữa (tự tìm contract từ token)
✅ Thêm /api/payments — Lịch sử giao dịch từ collection Transaction
✅ Thêm PUT /api/contracts/:id — Cập nhật hợp đồng (Admin)
✅ Sửa GET /api/repairs — Populate đúng tên phòng và tên người gửi từ contract
✅ Sửa PUT /api/repairs/:id — Nhận đúng status/priority dạng string → number