Circle · Module Overview

Circle — Community, HP/EXP và quyền thành viên

Trang này giải thích circle là gì, ai cần đọc nó, và những file nào quyết định hành vi chính.

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/circleUI 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ếpSLA chính thức nếu không có trong config/code

Công nghệ & thư viện sử dụng

Thành phầnCông nghệPhiên bảnLý do chọnGhi chú
HTTPExpress5.1.0Router/middleware rõ ràngpackage.json
ValidationZod3.25.76Validate request trước controllerRoute nào có validate() mới enforce
DBPrisma + MySQL/MariaDBPrisma 7Repository truy cập databaseschema.prisma
AsyncBullMQ + RedisBullMQ 5Tách tác vụ nềnKhô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.

routesentrypointcontrollerrequest/responseservicebusiness rulesrepositoryPrisma/MySQLdtoZod validationcallscallsqueriesvalidate
Đây là cấu trúc lặp lại trong hầu hết module, không dùng thư viện vẽ ngoài.
1
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/circle.routes.ts"
2
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/controller/circle.controller.ts"
3
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.service.ts"
4
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/service/circle-enery.service.ts"
5
src/modules/circle/repository/circle-post-quality-log.repository.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.

circlemoduleDepends onauth, post, jobsUsed byjobs/evaluate.worker, quest, adminStorage/ExternalDB Redis APIsOutputsresponse/eventsusescalledreads/writesemits
Mũi tên đi vào là dependency module dùng; mũi tên đi ra là nơi kết quả được tiêu thụ.

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.