From a8cd774123e068f0547e64a33a9e98580943be1b Mon Sep 17 00:00:00 2001 From: pluvium27 Date: Sun, 19 Apr 2026 12:08:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8F=98=E6=9B=B4=E5=93=88=E5=B8=8C?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=A1=A8=E4=BB=A5=E4=BF=AE=E5=A4=8D=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E9=94=AE=E9=80=A0=E6=88=90=E7=9A=84=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/config/config.toml | 4 ++-- data/repo/cngk-t/schedule.toml | 2 +- src/heurams/interface/screens/dashboard.py | 7 ++++--- src/heurams/interface/widgets/cloze_puzzle.py | 5 +++-- src/heurams/kernel/algorithms/base.py | 2 +- src/heurams/kernel/algorithms/fast0.py | 2 +- src/heurams/kernel/algorithms/sm2.py | 2 +- src/heurams/kernel/reactor/fission.py | 13 ++++++++----- src/heurams/services/hasher.py | 8 ++++---- 9 files changed, 25 insertions(+), 20 deletions(-) diff --git a/data/config/config.toml b/data/config/config.toml index 2e54fee..10f3d05 100644 --- a/data/config/config.toml +++ b/data/config/config.toml @@ -9,10 +9,10 @@ timestamp_override = -1 quick_pass = true # [调试] 自动化测试模式(仅用于测试完整性) -auto_pass = false +auto_pass = true # 对于每个项目的默认新记忆原子数量 -scheduled_num = 20 +scheduled_num = 100 # UTC 时间戳修正 仅用于 UNIX 日时间戳的生成修正, 单位为秒 timezone_offset = +28800 # 中国标准时间 (UTC+8) diff --git a/data/repo/cngk-t/schedule.toml b/data/repo/cngk-t/schedule.toml index 2a34886..e3a808b 100644 --- a/data/repo/cngk-t/schedule.toml +++ b/data/repo/cngk-t/schedule.toml @@ -2,7 +2,7 @@ schedule = ["quick_review", "recognition", "final_review"] [phases] quick_review = [["FillBlank", "1.0"], ["Recognition", "1.0"]] -recognition = [["Recognition", "1.0"]] +recognition = [["FillBlank", "1.0"]] final_review = [["FillBlank", "1.0"], ["Recognition", "1.0"]] [annotation] diff --git a/src/heurams/interface/screens/dashboard.py b/src/heurams/interface/screens/dashboard.py index 3827214..6b6ea10 100644 --- a/src/heurams/interface/screens/dashboard.py +++ b/src/heurams/interface/screens/dashboard.py @@ -17,6 +17,7 @@ import heurams.services.version as version from heurams.context import * from heurams.kernel.particles import * from heurams.kernel.repolib import * +from heurams.kernel.algorithms import algorithms from heurams.services.logger import get_logger from .about import AboutScreen @@ -58,14 +59,14 @@ class DashboardScreen(Screen): f"当前 UNIX 日时间戳: {timer.get_daystamp()}" ), Label(f"应用时区修正: UTC+{config_var.get()['timezone_offset'] / 3600}"), - Label(f"全局算法设置: {config_var.get()['algorithm']['default']}"), + Label(f"全局算法设置: {config_var.get()['algorithm']['default']}: {algorithms[config_var.get()['algorithm']['default']].desc}"), classes="column infview", ), Vertical( Label(f"已加载 {len(self.repostat)} 个单元集", classes='dataview'), Label(f"共计 {reduce(lambda x, y: x + y, map(lambda x: x.get('unit_sum'), self.repostat.values()))} 个单元", classes='dataview'), Label(f"已激活 {reduce(lambda x, y: x + y, map(lambda x: x.get('activated_sum'), self.repostat.values()))} 个单元", classes='dataview'), - Label(f"终端尺寸: {os.get_terminal_size()[0]}x{os.get_terminal_size()[1]}"), + Label(f""), classes="column dataview", ), id="dashboardtop" @@ -191,4 +192,4 @@ class DashboardScreen(Screen): if str(event.button.id).startswith("launch_"): # type: ignore from .preparation import launch launch(repo=self.dirname2repo[event.button.id[7:]], app=self.app, scheduled_num=-1) # type: ignore - # TODO: 这样启动的记忆实例的状态机无法绑定到 PreparationScreen 中 \ No newline at end of file + # TODO: 这样启动的记忆实例的状态机无法绑定到 PreparationScreen 中 diff --git a/src/heurams/interface/widgets/cloze_puzzle.py b/src/heurams/interface/widgets/cloze_puzzle.py index b0e3bd8..3a9a980 100644 --- a/src/heurams/interface/widgets/cloze_puzzle.py +++ b/src/heurams/interface/widgets/cloze_puzzle.py @@ -70,8 +70,9 @@ class ClozePuzzle(BasePuzzleWidget): # 渲染当前问题的选项 with Container(id="btn-container"): for i in self.ans: - self.hashmap[str(hash(i))] = i - btnid = f"sel000-{hash(i)}" + h = str(hash(i)) + self.hashmap[h] = i + btnid = f"sel000-{h}" logger.debug(f"建立按钮 {btnid}") yield Button(i, id=f"{btnid}") diff --git a/src/heurams/kernel/algorithms/base.py b/src/heurams/kernel/algorithms/base.py index 18c30ae..c89839d 100644 --- a/src/heurams/kernel/algorithms/base.py +++ b/src/heurams/kernel/algorithms/base.py @@ -8,7 +8,7 @@ logger = get_logger(__name__) class BaseAlgorithm: algo_name = "BaseAlgorithm" - + desc = '算法基类' class AlgodataDict(TypedDict): real_rept: int rept: int diff --git a/src/heurams/kernel/algorithms/fast0.py b/src/heurams/kernel/algorithms/fast0.py index 3c017b9..4548b17 100644 --- a/src/heurams/kernel/algorithms/fast0.py +++ b/src/heurams/kernel/algorithms/fast0.py @@ -10,7 +10,7 @@ logger = get_logger(__name__) class FAST0Algorithm(BaseAlgorithm): algo_name = "FAST-0" - + desc = '快速筛选用特殊调度器' class AlgodataDict(TypedDict): real_rept: int rept: int diff --git a/src/heurams/kernel/algorithms/sm2.py b/src/heurams/kernel/algorithms/sm2.py index 0d848aa..aa49538 100644 --- a/src/heurams/kernel/algorithms/sm2.py +++ b/src/heurams/kernel/algorithms/sm2.py @@ -10,7 +10,7 @@ logger = get_logger(__name__) class SM2Algorithm(BaseAlgorithm): algo_name = "SM-2" - + desc = '经典间隔重复算法' class AlgodataDict(TypedDict): efactor: float real_rept: int diff --git a/src/heurams/kernel/reactor/fission.py b/src/heurams/kernel/reactor/fission.py index 98ef82d..cf6cd8b 100644 --- a/src/heurams/kernel/reactor/fission.py +++ b/src/heurams/kernel/reactor/fission.py @@ -71,7 +71,8 @@ class Fission(Machine): "alia": item, } ) - self.current_puzzle_inf = self.puzzles_inf[0] + if self.puzzles_inf: + self.current_puzzle_inf = self.puzzles_inf[0] for i in range(len(self.puzzles_inf)): self.min_ratings.append(float('inf')) @@ -94,12 +95,14 @@ class Fission(Machine): return self.current_puzzle_inf def report(self, rating): - self.min_ratings[self.cursor] = min(rating, self.min_ratings[self.cursor]) + if self.puzzles_inf: + self.min_ratings[self.cursor] = min(rating, self.min_ratings[self.cursor]) def get_quality(self): - if self.is_state("retronly", self): - return reduce(lambda x, y: min(x, y), self.min_ratings) - raise IndexError + if self.puzzles_inf: + if self.is_state("retronly", self): + return reduce(lambda x, y: min(x, y), self.min_ratings) + raise IndexError def forward(self, step=1): """将谜题指针向前移动并依情况更新或完成""" diff --git a/src/heurams/services/hasher.py b/src/heurams/services/hasher.py index 60e1d6e..8a419f9 100644 --- a/src/heurams/services/hasher.py +++ b/src/heurams/services/hasher.py @@ -1,20 +1,20 @@ # 哈希服务 import hashlib - +import random from heurams.services.logger import get_logger logger = get_logger(__name__) def get_md5(text): - logger.debug(f"计算哈希, 输入`{text}`") + logger.debug(f"计算MD5哈希, 输入`{text}`") result = hashlib.md5(text.encode("utf-8")).hexdigest() logger.debug("哈希结果: %s...", result[:8]) return result def hash(text): - logger.debug(f"计算哈希, 输入`{text}`") - result = hashlib.md5(text.encode("utf-8")).hexdigest() + logger.debug(f"计算MD5-时间复合哈希, 输入`{text}`") + result = hashlib.md5(f"{text}{random.randint(0,1000)}".encode("utf-8")).hexdigest() logger.debug("哈希结果: %s...", result[:8]) return result