Fix/update card.decay in card_state_updater (#4127)

This commit is contained in:
Jarrett Ye 2025-06-27 17:50:29 +08:00 committed by GitHub
parent 5f73725a64
commit fe5dfe9ec2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 2 deletions

View file

@ -33,6 +33,7 @@ use crate::deckconfig::LeechAction;
use crate::decks::Deck;
use crate::prelude::*;
use crate::scheduler::fsrs::memory_state::fsrs_item_for_memory_state;
use crate::scheduler::fsrs::memory_state::get_decay_from_params;
use crate::scheduler::states::PreviewState;
use crate::search::SearchNode;
@ -433,7 +434,9 @@ impl Collection {
let config = self.home_deck_config(deck.config_id(), card.original_deck_id)?;
let fsrs_enabled = self.get_config_bool(BoolKey::Fsrs);
let fsrs_next_states = if fsrs_enabled {
let fsrs = FSRS::new(Some(config.fsrs_params()))?;
let params = config.fsrs_params();
let fsrs = FSRS::new(Some(params))?;
card.decay = Some(get_decay_from_params(params));
if card.memory_state.is_none() && card.ctype != CardType::New {
// Card has been moved or imported into an FSRS deck after params were set,
// and will need its initial memory state to be calculated based on review

View file

@ -32,7 +32,7 @@ pub struct ComputeMemoryProgress {
/// Helper function to determine the appropriate decay value based on FSRS
/// parameters
fn get_decay_from_params(params: &[f32]) -> f32 {
pub(crate) fn get_decay_from_params(params: &[f32]) -> f32 {
if params.is_empty() {
FSRS6_DEFAULT_DECAY // default decay for FSRS-6
} else if params.len() < 21 {