Social - Groups (Logic)
DomainsDOL AcademyUX273 words1 min read
Purpose
Phần tiêu đề “Purpose”- Kết bạn, lập nhóm học chung; tạo động lực qua streak nhóm và thách thức nhẹ.
Scope
Phần tiêu đề “Scope”- Friends: yêu cầu kết bạn 2 chiều, block/unblock.
- Groups: chỉ private/invite; tạo/ghi danh bằng link/invite, vai trò owner/mod/member.
- Group streak: đếm ngày nhóm có hoạt động học tập hợp lệ theo policy.
Entities
Phần tiêu đề “Entities”- FriendRequest: { id, fromId, toId, status, createdAt }.
- Friendship: { userA, userB, createdAt }.
- Group: { id, name, ownerId, privacy, createdAt }.
- GroupMembership: { groupId, userId, role, joinedAt }.
- GroupStreak: { groupId, current, best, history }.
Logic
Phần tiêu đề “Logic”- Friend: request → accept/deny; unfriend; block cấm mọi tương tác/nhìn thấy; accept bạn bè → auto‑follow 2 chiều.
- Group streak policy (đề xuất): tính 1 ngày streak khi ≥K thành viên có hoạt động hợp lệ (K = max(2, ceil(30% số thành viên))). Cho phép 1 ngày freeze trong 30 ngày gần nhất.
- Group leaderboard: theo streak/điểm bình quân; tôn trọng privacy thành viên (nếu bật). Nhóm nhỏ có cảnh báo ngưỡng K.
Flows
Phần tiêu đề “Flows”- Create group → invite → members join → streak tăng khi đạt ngưỡng K.
- Remove/leave: cập nhật lại ngưỡng K theo số thành viên mới.
Edge cases
Phần tiêu đề “Edge cases”- Nhóm rất nhỏ (<3): K = 2 để tránh dễ dãi; hiển thị cảnh báo.
- Thay đổi múi giờ: streak neo theo locale nhóm/owner.
Technical Notes
Phần tiêu đề “Technical Notes”- Anti‑gaming: chặn spam submit; yêu cầu bài hợp lệ từ LM.
- Chat nhóm: có thể ánh xạ sang
Social/SOC_Chat_Logic.md(integration Telegram). - Cross‑links:
Social/SOC_Feed_Logic.md,Learning Management/LM_Streak.md.