start_memorized -> reviewless_end_memorized

This commit is contained in:
Luc Mcgrady 2025-11-29 21:30:05 +00:00
parent 1e53505339
commit af6d63cde9
No known key found for this signature in database
GPG key ID: 4F3D7A0B17CC3D9C
4 changed files with 11 additions and 11 deletions

View file

@ -420,7 +420,7 @@ message SimulateFsrsReviewResponse {
message SimulateFsrsWorkloadResponse {
map<uint32, float> cost = 1;
float start_memorized = 2;
float reviewless_end_memorized = 2;
map<uint32, float> memorized = 3;
map<uint32, uint32> review_count = 4;
}

View file

@ -300,11 +300,11 @@ impl Collection {
))
})
.collect::<Result<HashMap<_, _>>>()?;
let start_memorized = cards
.iter()
.fold(0., |p, c| p + c.retention_on(&req.params, req.days_to_simulate as f32));
let reviewless_end_memorized = cards.iter().fold(0., |p, c| {
p + c.retention_on(&req.params, req.days_to_simulate as f32)
});
Ok(SimulateFsrsWorkloadResponse {
start_memorized,
reviewless_end_memorized,
memorized: dr_workload.iter().map(|(k, v)| (*k, v.0)).collect(),
cost: dr_workload.iter().map(|(k, v)| (*k, v.1)).collect(),
review_count: dr_workload.iter().map(|(k, v)| (*k, v.2)).collect(),

View file

@ -212,7 +212,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
x: parseInt(dr),
timeCost: resp!.cost[dr],
memorized: v,
start_memorized: resp!.startMemorized,
reviewless_end_memorized: resp!.reviewlessEndMemorized,
count: resp!.reviewCount[dr],
label: simulationNumber,
learnSpan: simulateFsrsRequest.daysToSimulate,

View file

@ -37,7 +37,7 @@ export interface Point {
export type WorkloadPoint = Point & {
learnSpan: number;
start_memorized: number;
reviewless_end_memorized: number;
};
export enum SimulateSubgraph {
@ -69,7 +69,7 @@ export function renderWorkloadChart(
const subgraph_data = ({
[SimulateWorkloadSubgraph.ratio]: data.map(d => ({
...d,
y: (60 * 60 * (d.memorized - d.start_memorized)) / d.timeCost,
y: (60 * 60 * (d.memorized - d.reviewless_end_memorized)) / d.timeCost,
})),
[SimulateWorkloadSubgraph.time]: data.map(d => ({ ...d, y: d.timeCost / d.learnSpan })),
[SimulateWorkloadSubgraph.count]: data.map(d => ({ ...d, y: d.count / d.learnSpan })),
@ -114,7 +114,7 @@ export function renderWorkloadChart(
.attr("stroke", "black")
.attr("stroke-width", 1);
const startMemorized = subgraph_data[0].start_memorized;
const startMemorized = subgraph_data[0].reviewless_end_memorized;
return _renderSimulationChart(
svgElem,
@ -133,8 +133,8 @@ export function renderWorkloadChart(
.enter()
.attr("x1", x(xMin))
.attr("x2", x(xMax))
.attr("y1",d => y(d))
.attr("y2",d => y(d))
.attr("y1", d => y(d))
.attr("y2", d => y(d))
.attr("stroke", "black")
.attr("stroke-dasharray", "5,5")
.attr("stroke-width", 1);