Mục đích
Module này cho phép người dùng tạo cộng đồng nhỏ gọi là circle, mời thành viên, xử lý yêu cầu tham gia, đăng bài trong nhóm và dùng cơ chế HP/EXP để phản ánh chất lượng đóng góp.
Về mặt kỹ thuật, module này bám pattern route -> controller -> service -> repository. Những việc chậm hoặc phụ thuộc service ngoài được đẩy sang Redis/BullMQ khi code có producer tương ứng.
Phạm vi
| Trong phạm vi ✓ | Ngoài phạm vi ✗ |
|---|---|
| Các endpoint dưới /api/v1/circle | UI frontend và copy hiển thị trong app |
| Validation, business rules, side effects từ code | Ý định product không thể thấy trong source |
| DB/cache/queue/service ngoài module gọi trực tiếp | SLA chính thức nếu không có trong config/code |
Công nghệ & thư viện sử dụng
| Thành phần | Công nghệ | Phiên bản | Lý do chọn | Ghi chú |
|---|---|---|---|---|
| HTTP | Express | 5.1.0 | Router/middleware rõ ràng | package.json |
| Validation | Zod | 3.25.76 | Validate request trước controller | Route nào có validate() mới enforce |
| DB | Prisma + MySQL/MariaDB | Prisma 7 | Repository truy cập database | schema.prisma |
| Async | BullMQ + Redis | BullMQ 5 | Tách tác vụ nền | Không phải module nào cũng enqueue |
Cấu trúc file
Sơ đồ này cho thấy module được chia theo vai trò: route nhận URL, controller đọc request, service quyết định nghiệp vụ, repository chạm database.
File này là một phần của luồng circle. Đọc nó để trace request từ entrypoint tới nghiệp vụ.
snippet định vị
// đọc file này để trace module circle import ... from "src/modules/circle/circle.routes.ts"
File này là một phần của luồng circle. Đọc nó để trace request từ entrypoint tới nghiệp vụ.
snippet định vị
// đọc file này để trace module circle import ... from "src/modules/circle/controller/circle.controller.ts"
File này là một phần của luồng circle. Đọc nó để trace request từ entrypoint tới nghiệp vụ.
snippet định vị
// đọc file này để trace module circle import ... from "src/modules/circle/service/circle.service.ts"
File này là một phần của luồng circle. Đọc nó để trace request từ entrypoint tới nghiệp vụ.
snippet định vị
// đọc file này để trace module circle import ... from "src/modules/circle/service/circle-enery.service.ts"
File này là một phần của luồng circle. Đọc nó để trace request từ entrypoint tới nghiệp vụ.
snippet định vị
// đọc file này để trace module circle import ... from "src/modules/circle/repository/circle-post-quality-log.repository.ts"
Dependency map
Module này dùng các dependency ở bên trái và có thể được module bên phải gọi hoặc phụ thuộc gián tiếp.
Tóm tắt luồng chính
Người dùng đã đăng nhập tạo hoặc tham gia circle, đăng một bài trong circle, server ghi post và quality log ở trạng thái chờ, sau đó worker đánh giá nội dung bằng AI, cập nhật điểm chất lượng, cộng hoặc trừ HP/EXP cho circle.