Social - Levels (Logic)
DomainsDOL AcademyUX279 words1 min read
Purpose
Phần tiêu đề “Purpose”- Cấp độ (level) phản ánh mức độ hoạt động tích luỹ; đơn giản cho người dùng bằng cách suy ra Level từ tổng điểm tích lũy trọn đời (Lifetime Points) - UI vẫn chỉ hiển thị một chỉ số “Points”.
Scope
Phần tiêu đề “Scope”- Nguồn tích luỹ: hoàn thành bài hợp lệ, mốc streak, đóng góp cộng đồng; tương tác social có trần/ngày.
- Lifetime vs Seasonal: Level dựa trên Lifetime Points; có thể hiển thị điểm mùa để tạo nhịp (không ảnh hưởng level).
- Spend không làm giảm Level: tiêu điểm chỉ giảm số dư, không ảnh hưởng Lifetime Points.
Entities
Phần tiêu đề “Entities”- PointsEvent: { userId, type, payload, amount, createdAt, source }.
- LevelPolicy: { curve: linear|exp, base, step }.
- ProfileLevel: { userId, lifetimePoints, seasonalPoints, level, updatedAt }.
Logic
Phần tiêu đề “Logic”- Tích luỹ: cập nhật Lifetime Points mỗi khi người dùng kiếm điểm; idempotent theo event/ref.
- Level:
level = f(lifetimePoints)theoLevelPolicy; không giảm cấp; seasonalPoints reset theo kỳ (để leaderboard mùa). - Anti‑gaming: giới hạn điểm từ reaction/comment; chỉ đếm khi tương tác có giá trị (comment hữu ích được đánh dấu).
Flows
Phần tiêu đề “Flows”- Ingest
PointsEvent→ apply caps → updatelifetimePoints/level→ milestone notify.
Naming Compatibility
Phần tiêu đề “Naming Compatibility”XPEventlà tên cũ.- Canonical naming hiện tại là
PointsEventđể đồng bộ với reward/ledger taxonomy.
Edge cases
Phần tiêu đề “Edge cases”- Timezone: cửa sổ ngày theo locale; đổi locale không backshift.
- Account deletion: ẩn danh hóa số liệu; không hiển thị công khai.
Technical Notes
Phần tiêu đề “Technical Notes”- Lưu
sourceđể truy vết khiếu nại; batch repair jobs nếu cần. - Cross‑links:
Learning Management/LM_Streak.md,Social/SOC_Achievements_Logic.md,Social/SOC_Points_Rewards_Logic.md.