可用性改动

This commit is contained in:
2025-07-23 13:55:24 +08:00
parent ac1d8cbf8b
commit d8feb829b1
25 changed files with 1723 additions and 65 deletions

View File

@@ -1,23 +1,16 @@
import pathlib
import toml
import time
import copy
import datetime
import json
class Aux():
@staticmethod
def get_daystamp():
return (time.time() // (24*3600))
class Atom():
"""原子: 由电子(分析数据)和核子(材料元数据)组成的反应(运行时)中间对象"""
class Electron():
"""电子: 记忆分析数据及算法"""
algorithm = "SM-2"
"""电子: 记忆分析数据及算法"""
algorithm = "SM-2" # 暂时使用 SM-2 算法进行记忆拟合, 考虑 SM-15 替代
"""
origin = "陈情表" # 来源
content = "" # 内容
efactor = 2.5 # 易度系数, 越大越简单, 最大为5
real_rept = 0 # (实际)重复次数
@@ -26,7 +19,7 @@ class Electron():
last_date = 0 # 上一次复习的时间戳
next_date = 0 # 将要复习的时间戳
is_activated = 0 # 激活状态
# *NOTE: 这里的"时间戳" 是以天为单位的整数, 即 UNIX 时间戳除以一天的秒数取整
# *NOTE: 此处"时间戳"是以天为单位的整数, 即 UNIX 时间戳除以一天的秒数取整
last_modify = 0 # 最后修改时间戳(此处是UNIX时间戳)
"""
def __init__(self, content: str, data: dict):
@@ -47,25 +40,29 @@ class Electron():
setattr(self, var, value)
self.last_modify = time.time()
def update(self, quality):
"""
根据 quality(0 ~ 5) 进行参数迭代
def revisor(self, quality):
"""SM-2 算法迭代决策机制实现
根据 quality(0 ~ 5) 进行参数迭代最佳间隔
quality 由主程序评估
Args:
quality (int): 记忆保留率量化参数
"""
if quality == -1:
return -1
self.efactor = self.efactor + (0.1 - (5 - quality) * (0.08 + (5 - quality) * 0.02))
self.efactor = max(1.3, self.efactor)
if quality < 3:
# 如果回忆质量低于 3重置重复次数
# 若保留率低于 3重置重复次数
self.rept = 0
self.interval = 0 # 设为0以便下面重新计算I(1)
self.interval = 0 # 设为0以便下面重新计算 I(1)
else:
self.rept += 1
self.real_rept += 1
if self.rept == 0: # 刚被重置或首次遇到
if self.rept == 0: # 刚被重置或初次激活后复习
self.interval = 1 # I(1)
elif self.rept == 1:
self.interval = 6 # I(2) 经验公式
@@ -90,7 +87,10 @@ class Electron():
def __hash__(self):
return hash(self.content)
@staticmethod
def placeholder():
return Electron("电子对象样例内容", {})
@staticmethod
def import_from_file(path: pathlib.Path):
@@ -127,6 +127,10 @@ class Nucleon():
with open(path, 'w') as f:
toml.dump(nucleon_list, f)
@staticmethod
def placeholder():
return Nucleon("核子对象样例内容", {})
class AtomicFile():
def __init__(self, path, type_="unknown"):
self.path = path
@@ -148,4 +152,10 @@ class AtomicFile():
return text
return ""
def get_len(self):
return len(self.datalist)
return len(self.datalist)
class Atom():
@staticmethod
def placeholder():
return (Electron.placeholder(), Nucleon.placeholder())