可用性改动

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 +1,85 @@
class Reactor(tasked_num):
import typing
import particles as pt
class Reactor():
def __init__(self, nucleon_file: pt.AtomicFile, electron_file: pt.AtomicFile, tasked_num):
# 导入原子对象
self.reported = set()
self.nucleon_file = nucleon_file
self.electron_file = electron_file
self.tasked_num = tasked_num
self.atoms_new: typing.List[typing.Tuple[pt.Electron, pt.Nucleon]] = list()
self.atoms_review: typing.List[typing.Tuple[pt.Electron, pt.Nucleon]] = list()
for atom in zip(electron_file.datalist, nucleon_file.datalist):
if atom[0].is_activated == 0:
atom[0].is_activated = 1
self.atoms_new.append(atom)
else:
if atom[0].next_date <= pt.Aux.get_daystamp():
atom[0].last_date = pt.Aux.get_daystamp()
self.atoms_review.append(atom)
# 设置运行时
self.index: int
self.procession: list
self.failed: list
self.round_title: str
self.reported: set
self.current_atom: typing.Tuple[pt.Electron, pt.Nucleon]
self.round_set = 0
self.current_atom = pt.Atom.placeholder()
def set_round(self, title, procession):
self.round_set = 1
self.round_title = title
self.procession = procession
self.failed = list()
self.index = -1
def set_round_templated(self, stage):
titles = {
1: "复习模式",
2: "新记忆模式",
3: "总复习模式"
}
processions = {
1: self.atoms_review,
2: self.atoms_new,
3: list(set(self.atoms_new + self.atoms_review))
}
ret = 1
if stage == 1 and len(processions[1]) == 0:
stage = 2
ret = 2
self.set_round(title=titles[stage], procession=processions[stage])
return ret
def forward(self, step = 1):
if self.index + step >= len(self.procession):
if len(self.failed) > 0:
self.procession = self.failed
self.index = -1
self.forward(step)
if "- 额外复习" not in self.round_title:
self.round_title += " - 额外复习"
self.failed = list()
return 1 # 自动重定向到 failed
else:
self.round_set = 0
return -1 # 此轮已完成
self.index += step
self.current_atom = self.procession[self.index]
return 0
def save(self):
self.nucleon_file.save()
self.electron_file.save()
def report(self, atom, quality):
if atom[0] not in self.reported:
atom[0].revisor(quality)
self.reported.add(atom[0])
if quality <= 3:
self.failed.append(atom)
return 1
else:
return 0