Engagement Platform - Practice and Vocabulary Point Conversion System
SharedShared Capabilities1.192 words6 min read
Purpose
Phần tiêu đề “Purpose”- Thiết kế cơ chế quy đổi điểm thống nhất từ:
- quá trình làm bài tập (
Practice), - quá trình học từ vựng (
Vocabulary).
- quá trình làm bài tập (
- Dùng một mô hình chung để:
- xếp hạng global công bằng,
- cấp reward minh bạch,
- vẫn giữ semantics riêng của từng module.
Current-state Findings (from existing docs)
Phần tiêu đề “Current-state Findings (from existing docs)”Practiceđã có thang điểm chuẩnPracticePoints(0..100), gồm quality + volume + duration:- xem
ENG_11.
- xem
Vocabularycó SRS/garden rất mạnh (F/D, tier, mastery, recovery) nhưng chưa có chuẩn quy đổi global thống nhất:- xem
VOCV2_Data_Model,VOCV2_Gamification_Strategy,VOCV2_Leaderboard_Mechanics.
- xem
Social/Rewardđã có dual-ledger (lifetime+spendable) và policy tách điểm xếp hạng với điểm đổi quà:- xem
ENG_05,SOC_Points_Rewards_Logic.
- xem
Design Principles
Phần tiêu đề “Design Principles”Simple for user:- user chỉ thấy một điểm tổng hợp để theo dõi/rank.
Local model preserved:- giữ công thức gốc của Practice và SRS Vocab, chỉ thêm lớp quy đổi.
Quality first:- không cộng điểm nếu activity không đạt điều kiện hợp lệ.
Anti-farm by design:- dùng cap, saturation, idempotency, và anti-cheat gates.
Points-only current rollout:- current rollout chỉ mở hệ
points/xpđể theo dõi, rank, và reward conversion. - không mở
account levelhoặc ladder progression riêng cho user ở giai đoạn này.
- current rollout chỉ mở hệ
Canonical Terms
Phần tiêu đề “Canonical Terms”PracticePointsWeek:- điểm tuần của Practice (0..100), lấy từ
ENG_11.
- điểm tuần của Practice (0..100), lấy từ
VocabCarePointsWeek:- điểm tuần của Vocabulary (0..100), định nghĩa trong tài liệu này.
LearningPointsWeek:- điểm tuần global (0..100), dùng để xếp hạng toàn nền tảng.
RankingPointsLedger:- ledger không spendable, chỉ dùng rank/season.
RewardPointsLedger:- ledger spendable + lifetime theo
ENG_05.
- ledger spendable + lifetime theo
Explicit non-goal
Phần tiêu đề “Explicit non-goal”- Không dùng
account levellàm trục xếp hạng hoặc bề mặt tiến trình chính trong current rollout. - Nếu cần progression dài hạn, ưu tiên:
- badge/history,
- season rank,
- reward ledger đã có.
- Mọi leaderboard current-state đều neo vào
points, không neo vàolevel.
Naming Compatibility (Deprecation)
Phần tiêu đề “Naming Compatibility (Deprecation)”- Canonical term cho trục Vocabulary là
vocab_care_points. - Alias cũ:
vocab_points,vocab_xp.
- Rule áp dụng:
- không tạo event/báo cáo mới dùng alias cũ,
- pipeline cũ chỉ giữ read-compatibility trong giai đoạn migrate, không mở thêm dependency mới.
Module 1 - Practice Contribution
Phần tiêu đề “Module 1 - Practice Contribution”- Nguồn chuẩn:
PracticePointsWeektheoENG_11với công thức:PracticePoints = 0.50 * ScoreIndex + 0.30 * VolumeIndex + 0.20 * DurationIndex.
- Qualification gate:
- chỉ tính attempt hợp lệ (
qualified activity) và không có anti-cheat flag.
- chỉ tính attempt hợp lệ (
Module 2 - Vocabulary Contribution
Phần tiêu đề “Module 2 - Vocabulary Contribution”Vocab qualification gate
Phần tiêu đề “Vocab qualification gate”valid_vocab_touches_week >= 20.- Touch chỉ hợp lệ khi:
- là item từ queue hợp lệ (tier/review/new theo SoT hardening),
- không vi phạm gate chống cày (
2 + 3) ở card practice, - không bị integrity flag.
Vocab component indices (0..100)
Phần tiêu đề “Vocab component indices (0..100)”RetentionIndex:- tỷ lệ item due giữ trạng thái
Healthy. RetentionIndex = clamp(100 * healthy_due_items / max(1, due_items), 0, 100).
- tỷ lệ item due giữ trạng thái
RecoveryIndex:- hiệu quả cứu item
Urgent/WitheredvềHealthy. RecoveryIndex = clamp(100 * rescued_items / recovery_target_week, 0, 100).recovery_target_weekmặc định:20.
- hiệu quả cứu item
MasteryIndex:- tăng trưởng item lên
Mature/Flowering. MasteryIndex = clamp(100 * mastered_delta_items / mastery_target_week, 0, 100).mastery_target_weekmặc định:15.
- tăng trưởng item lên
ConsistencyIndex:- độ đều đặn học vocab theo ngày.
ConsistencyIndex = clamp(100 * active_vocab_days / 7, 0, 100).
VocabCarePointsWeek formula
Phần tiêu đề “VocabCarePointsWeek formula”VocabCarePointsWeek = 0.45 * RetentionIndex + 0.20 * RecoveryIndex + 0.20 * MasteryIndex + 0.15 * ConsistencyIndex.- Lý do trọng số:
- ưu tiên giữ nhớ bền (
Retention) thay vì chỉ tăng số lượng.
- ưu tiên giữ nhớ bền (
Global Point Conversion (Practice + Vocabulary)
Phần tiêu đề “Global Point Conversion (Practice + Vocabulary)”Eligibility-aware weighting
Phần tiêu đề “Eligibility-aware weighting”- Default weights:
PracticeWeight = 0.65,VocabWeight = 0.35.
- Nếu một module không đủ eligibility:
- module còn lại được chuẩn hóa weight về
1.0.
- module còn lại được chuẩn hóa weight về
- Nếu cả hai module không đủ eligibility:
LearningPointsWeek = 0.
LearningPointsWeek formula
Phần tiêu đề “LearningPointsWeek formula”LearningPointsWeek = round(PracticeWeight * PracticePointsWeek + VocabWeight * VocabCarePointsWeek).LearningPointsWeeknằm trong0..100.LearningPointsSeason = sum(LearningPointsWeek)theo chu kỳ season.
Ranking and Reward Conversion
Phần tiêu đề “Ranking and Reward Conversion”Ranking layer (non-spendable)
Phần tiêu đề “Ranking layer (non-spendable)”- Ghi vào
RankingPointsLedger:ranking_points_week = LearningPointsWeek.
- Leaderboard global dùng:
LearningPointsWeek,PracticePointsWeek,VocabCarePointsWeek,earlier_qualified_at.
Reward layer (spendable + lifetime)
Phần tiêu đề “Reward layer (spendable + lifetime)”- Reward quy đổi từ điểm học tuần:
RewardEarnedWeek = min(20, floor(LearningPointsWeek / 5)).
- Ghi ledger:
Spendable += RewardEarnedWeek,Lifetime += RewardEarnedWeek.
- Achievement bonus:
- cộng thêm theo mapping ở
ENG_12, - vẫn phải idempotent theo
grant_key.
- cộng thêm theo mapping ở
Safety and Anti-farm Rules
Phần tiêu đề “Safety and Anti-farm Rules”- Không cấp điểm cho action bị flag anti-cheat.
- Không tính trùng sự kiện theo
idempotency_key. - Vocab recovery anti-gaming:
- tối đa
1 rescue credit/item/week.
- tối đa
- Reward cap:
- tối đa
20điểm quy đổi/tuần từLearningPointsWeek(không tính bonus achievement).
- tối đa
Event Contracts (required additions)
Phần tiêu đề “Event Contracts (required additions)”vocab_care_points_computed_eventlearning_points_week_computed_eventlearning_points_rank_published_eventlearning_points_reward_granted_event- Payload tối thiểu:
practice_points_weekvocab_care_points_weeklearning_points_weekmodule_eligibility(practice | vocab | both | none)rule_version
Minimal UX Surfaces
Phần tiêu đề “Minimal UX Surfaces”- Home:
- chỉ hiển thị
Learning Points+ rank delta.
- chỉ hiển thị
- Practice surface:
- giữ
PracticePointsbreakdown riêng.
- giữ
- Vocabulary surface:
- giữ Garden metrics riêng (
Retention/Recovery/Mastery), không ép user học thêm thuật ngữ mới.
- giữ Garden metrics riêng (
- Profile:
- hiển thị snapshot gồm
Learning Points(global),Practice contribution,Vocabulary contribution.
- hiển thị snapshot gồm
Worked Examples
Phần tiêu đề “Worked Examples”- Case A (cân bằng):
PracticePointsWeek=78,VocabCarePointsWeek=70.LearningPointsWeek=round(0.65*78 + 0.35*70)=75.RewardEarnedWeek=floor(75/5)=15.
- Case B (chỉ học vocab tuần này):
- Practice không đủ eligibility.
VocabCarePointsWeek=82->LearningPointsWeek=82.RewardEarnedWeek=16.
- Case C (bị flag integrity):
LearningPointsWeekvẫn có thể tính cho audit,RewardEarnedWeek=0cho đến khi clearance.
Rollout Plan (Low-risk)
Phần tiêu đề “Rollout Plan (Low-risk)”- Shadow mode:
- tính
VocabCarePointsWeekvàLearningPointsWeeknhưng chưa hiển thị.
- Internal validation:
- so sánh fairness theo cohort và check anti-farm leakage.
- Public rollout:
- mở Home teaser + Profile snapshot.
- Reward activation:
- bật
RewardEarnedWeeksau khi quality gates ổn định.
Change log
Phần tiêu đề “Change log”- 2026-03-04: Thiết kế cơ chế quy đổi điểm thống nhất Practice + Vocabulary thành
Learning Pointsdùng cho rank và reward conversion. - 2026-03-05: Chuẩn hóa deprecation note cho alias
vocab_points/vocab_xp, khóa canonical termvocab_care_points. - 2026-03-09: Chốt current rollout theo hướng
points-only; chưa mởaccount level.