Bỏ qua để đến nội dung

Social - Groups (Logic)

DomainsDOL AcademyUX273 words1 min read
active
  • 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ẹ.
  • 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.
  • 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 }.
  • 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.
  • 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.
  • 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.