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

Social - Profile (Logic)

DomainsDOL AcademyUX389 words2 min read
active
  • Hồ sơ xã hội thể hiện tiến trình, thành tích và đóng góp; mặc định private để giảm rủi ro lộ dữ liệu và giữ trải nghiệm an toàn.
  • Định hướng UX chi tiết cho feature này nằm tại: Social/SOC_Profile_Sharing_UX.md.
  • Nội dung: tổng quan tiến trình (aggregate), streak, huy hiệu/achievements, danh hiệu Hall of Fame; đóng góp kiến thức (knowledge set/note chia sẻ).
  • Thông tin hiển thị: tránh dữ liệu nhạy cảm (lớp/khóa chi tiết, PII, lịch cụ thể); điểm mock/official có thể hiển thị dạng tổng hợp.
  • Public fields (khi user bật chia sẻ): display name, avatar, achievements/badges, tổng số bài đã hoàn thành, best score/official verified, streak tổng quan.
  • Privacy controls:
    • mặc định private (không công khai),
    • user có thể bật/tắt public sharing,
    • user có thể bật/tắt theo nhóm dữ liệu: tiến trình, thành tích, kiến thức chia sẻ.
  • Follow: cho phép theo dõi; accept bạn bè → auto‑follow 2 chiều.
  • UserProfile: { id, displayName, avatar, privacySettings, badges }.
  • Follow: { followerId, followeeId, createdAt, status }.
  • Private default: profile không public cho người lạ cho đến khi user tự bật chia sẻ.
  • Public mode: khi bật public sharing, mọi người (kể cả chưa đăng nhập) đều có thể xem trang profile công khai.
  • Follow gate: khi profile private, follow cần approve.
  • Visibility toggles: user có thể bật/tắt theo nhóm dữ liệu (tiến trình/thành tích/kiến thức chia sẻ).
  • Stats: tổng hợp từ LM; tôn trọng cài đặt nếu bật privacy.
  • Bật/Tắt public sharing trực tiếp từ profile settings.
  • Follow/Unfollow; Follow request (private) → approve/deny.
  • Update privacy toggles → áp dụng ngay trên feed/leaderboards/profile.
  • Xoá tài khoản: ẩn danh hoá nội dung còn lại; giữ đếm tổng hợp hệ thống.
  • Tắt public sharing sau khi đã từng chia sẻ: profile công khai dừng hiển thị ngay.
  • User chưa có nhiều lịch sử học: vẫn cho bật public, hiển thị empty-state tích cực thay vì trang trống.
  • Học sinh vị thành niên: mặc định private; phụ huynh quyết định cài đặt hiển thị.