fluffychat/lib/pangea/analytics_misc/analytics_constants.dart
wcjord 8a3979c61b
feat: unified use-type-aware practice scoring (#5703)
* feat: unified use-type-aware practice scoring on ConstructUses

- Add practiceScore() and practiceTier to ConstructUses for shared
  scoring across message practice and standalone practice
- Add isChatUse, isAssistedChatUse, isIncorrectPractice getters to
  ConstructUseTypeEnum with exhaustive switches
- Add PracticeTier enum (suppressed/active/maintenance)
- Wire into PracticeSelectionRepo and AnalyticsPracticeSessionRepo
- 28 unit tests covering tier classification, scoring, and ordering

Closes #5700

* formatting, fix linting issue

* move some stuff around

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-16 12:13:46 -05:00

29 lines
1.2 KiB
Dart

class AnalyticsConstants {
static const int xpPerLevel = 500;
static const int vocabUseMaxXP = 30;
static const int morphUseMaxXP = 500;
static const int xpForGreens = 50;
static const int xpForFlower = 100;
static const String seedSvgFileName = "Seed.svg";
static const String leafSvgFileName = "Leaf.svg";
static const String flowerSvgFileName = "Flower.svg";
static const String emojiForSeed = "🫛";
static const String emojiForGreen = "🌱";
static const String emojiForFlower = "🌸";
static const levelUpAudioFileName = "LevelUp_chime.mp3";
static const levelUpImageFileName = "LvL_Up_Full_Banner.png";
static const vocabIconFileName = "Vocabulary_icon.png";
static const morphIconFileName = "grammar_icon.png";
/// Default days-since-last-used when a construct has never been practiced.
static const int defaultDaysSinceLastUsed = 20;
/// Multiplier for content words (nouns, verbs, adjectives).
static const int contentWordMultiplier = 10;
/// Multiplier for function words (articles, prepositions).
static const int functionWordMultiplier = 7;
/// Bonus multiplier applied to active-tier constructs.
static const int activeTierMultiplier = 2;
}