fix: 改进
This commit is contained in:
@@ -21,8 +21,8 @@ tts_text = "eval:nucleon['content'].replace('/', '')"
|
|||||||
["__metadata__.orbital.puzzles"] # 谜题定义
|
["__metadata__.orbital.puzzles"] # 谜题定义
|
||||||
# 我们称 "Recognition" 为 recognition 谜题的 alia
|
# 我们称 "Recognition" 为 recognition 谜题的 alia
|
||||||
"Recognition" = { __origin__ = "recognition", __hint__ = "", primary = "eval:nucleon['content']", secondary = ["eval:nucleon['keyword_note']", "eval:nucleon['note']"], top_dim = ["eval:nucleon['translation']"] }
|
"Recognition" = { __origin__ = "recognition", __hint__ = "", primary = "eval:nucleon['content']", secondary = ["eval:nucleon['keyword_note']", "eval:nucleon['note']"], top_dim = ["eval:nucleon['translation']"] }
|
||||||
"SelectMeaning" = { __origin__ = "mcq", __hint__ = "eval:nucleon['content']", primary = "eval:nucleon['content']", mapping = "eval:nucleon['keyword_note']", jammer = "eval:nucleon['keyword_note']", max_riddles_num = "eval:default['mcq']['max_riddles_num']", prefix = "选择正确项: " }
|
"SelectMeaning" = { __origin__ = "mcq", __hint__ = "eval:nucleon['content']", primary = "eval:nucleon['content']", mapping = "eval:nucleon['keyword_note']", jammer = "eval:list(nucleon['keyword_note'].values())", max_riddles_num = "eval:default['mcq']['max_riddles_num']", prefix = "选择正确项: " }
|
||||||
"FillBlank" = { __origin__ = "mcq", __hint__ = "eval:nucleon['content']", primary = "eval:nucleon['content']", mapping = "eval:nucleon['keyword_note']", jammer = "eval:nucleon['keyword_note']", max_riddles_num = "eval:default['mcq']['max_riddles_num']", prefix = "选择正确项: " }
|
"FillBlank" = { __origin__ = "mcq", __hint__ = "eval:nucleon['content']", primary = "eval:nucleon['content']", mapping = "eval:nucleon['keyword_note']", jammer = "eval:list(nucleon['keyword_note'].values())", max_riddles_num = "eval:default['mcq']['max_riddles_num']", prefix = "选择正确项: " }
|
||||||
#"FillBlank" = { __origin__ = "cloze", __hint__ = "", text = "eval:nucleon['content']", delimiter = "eval:metadata['formation']['delimiter']", min_denominator = "eval:default['cloze']['min_denominator']"}
|
#"FillBlank" = { __origin__ = "cloze", __hint__ = "", text = "eval:nucleon['content']", delimiter = "eval:metadata['formation']['delimiter']", min_denominator = "eval:default['cloze']['min_denominator']"}
|
||||||
#debug
|
#debug
|
||||||
["__metadata__.orbital.schedule"] # 内置的推荐学习方案
|
["__metadata__.orbital.schedule"] # 内置的推荐学习方案
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from textual.screen import Screen
|
|||||||
from textual.reactive import reactive
|
from textual.reactive import reactive
|
||||||
from enum import Enum, auto
|
from enum import Enum, auto
|
||||||
|
|
||||||
|
from heurams.services.logger import get_logger
|
||||||
from heurams.context import config_var
|
from heurams.context import config_var
|
||||||
from heurams.kernel.reactor import *
|
from heurams.kernel.reactor import *
|
||||||
import heurams.kernel.particles as pt
|
import heurams.kernel.particles as pt
|
||||||
@@ -17,6 +18,7 @@ class AtomState(Enum):
|
|||||||
FAILED = auto()
|
FAILED = auto()
|
||||||
NORMAL = auto()
|
NORMAL = auto()
|
||||||
|
|
||||||
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
class MemScreen(Screen):
|
class MemScreen(Screen):
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
@@ -40,9 +42,9 @@ class MemScreen(Screen):
|
|||||||
super().__init__(name, id, classes)
|
super().__init__(name, id, classes)
|
||||||
self.atoms = atoms
|
self.atoms = atoms
|
||||||
self.phaser = Phaser(atoms)
|
self.phaser = Phaser(atoms)
|
||||||
# print(self.phaser.state)
|
# logger.debug(self.phaser.state)
|
||||||
self.procession: Procession = self.phaser.current_procession() # type: ignore
|
self.procession: Procession = self.phaser.current_procession() # type: ignore
|
||||||
# print(self.phaser.state)
|
# logger.debug(self.phaser.state)
|
||||||
# self.procession.forward(1)
|
# self.procession.forward(1)
|
||||||
|
|
||||||
def on_mount(self):
|
def on_mount(self):
|
||||||
@@ -51,22 +53,20 @@ class MemScreen(Screen):
|
|||||||
|
|
||||||
def puzzle_widget(self):
|
def puzzle_widget(self):
|
||||||
try:
|
try:
|
||||||
# print(self.phaser.state)
|
# logger.debug(self.phaser.state)
|
||||||
print("---debug---")
|
#logger.debug(self.procession.cursor)
|
||||||
print(self.procession.cursor)
|
#logger.debug(self.procession.current_atom)
|
||||||
print(self.procession.current_atom)
|
|
||||||
self.fission = Fission(self.procession.current_atom, self.phaser.state)
|
self.fission = Fission(self.procession.current_atom, self.phaser.state)
|
||||||
# print(1)
|
# logger.debug(1)
|
||||||
print("---debug---")
|
puzzle_debug = next(self.fission.generate())
|
||||||
puzzle_info = next(self.fission.generate())
|
#logger.debug(puzzle_debug)
|
||||||
print(puzzle_info)
|
return shim.puzzle2widget[puzzle_debug["puzzle"]](
|
||||||
return shim.puzzle2widget[puzzle_info["puzzle"]](
|
atom=self.procession.current_atom, alia=puzzle_debug["alia"]
|
||||||
atom=self.procession.current_atom, alia=puzzle_info["alia"]
|
|
||||||
)
|
)
|
||||||
except (KeyError, StopIteration, AttributeError) as e:
|
except (KeyError, StopIteration, AttributeError) as e:
|
||||||
print(f"调度展开出错: {e}")
|
logger.debug(f"调度展开出错: {e}")
|
||||||
return Static("无法生成谜题")
|
return Static("无法生成谜题")
|
||||||
# print(shim.puzzle2widget[puzzle_info["puzzle"]])
|
# logger.debug(shim.puzzle2widget[puzzle_debug["puzzle"]])
|
||||||
|
|
||||||
def compose(self) -> ComposeResult:
|
def compose(self) -> ComposeResult:
|
||||||
yield Header(show_clock=True)
|
yield Header(show_clock=True)
|
||||||
@@ -98,7 +98,7 @@ class MemScreen(Screen):
|
|||||||
ret = self.procession.forward(1)
|
ret = self.procession.forward(1)
|
||||||
if ret == 0:
|
if ret == 0:
|
||||||
self.procession = self.phaser.current_procession() # type: ignore
|
self.procession = self.phaser.current_procession() # type: ignore
|
||||||
print(f"NEWPROC {self.procession.cursor}")
|
logger.debug(f"建立新队列 {self.procession.phase}")
|
||||||
self.load_puzzle()
|
self.load_puzzle()
|
||||||
|
|
||||||
def action_play_voice(self):
|
def action_play_voice(self):
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class MCQPuzzle(BasePuzzleWidget):
|
|||||||
self.puzzle.refresh()
|
self.puzzle.refresh()
|
||||||
|
|
||||||
def compose(self):
|
def compose(self):
|
||||||
setting: Setting = self.atom.registry["nucleon"].metadata["orbital"]["puzzle"][
|
setting: Setting = self.atom.registry["nucleon"].metadata["orbital"]["puzzles"][
|
||||||
self.alia
|
self.alia
|
||||||
]
|
]
|
||||||
yield Label(setting["primary"], id="sentence")
|
yield Label(setting["primary"], id="sentence")
|
||||||
|
|||||||
@@ -80,9 +80,13 @@ class Atom:
|
|||||||
metadata = nucleon.metadata
|
metadata = nucleon.metadata
|
||||||
except:
|
except:
|
||||||
ret = "尚未链接对象"
|
ret = "尚未链接对象"
|
||||||
try:
|
try:
|
||||||
ret = str(eval(s))
|
eval_value = eval(s)
|
||||||
logger.debug("eval 执行成功: '%s' -> '%s'", s, ret[:50] + '...' if len(ret) > 50 else ret)
|
if isinstance(eval_value, (list, dict)):
|
||||||
|
ret = eval_value
|
||||||
|
else:
|
||||||
|
ret = str(eval_value)
|
||||||
|
logger.debug("eval 执行成功: '%s' -> '%s'", s, str(ret)[:50] + '...' if len(ret) > 50 else ret)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ret = f"此 eval 实例发生错误: {e}"
|
ret = f"此 eval 实例发生错误: {e}"
|
||||||
logger.warning("eval 执行错误: '%s' -> %s", s, e)
|
logger.warning("eval 执行错误: '%s' -> %s", s, e)
|
||||||
|
|||||||
@@ -54,8 +54,12 @@ class Nucleon:
|
|||||||
def eval_with_env(s: str):
|
def eval_with_env(s: str):
|
||||||
try:
|
try:
|
||||||
nucleon = self
|
nucleon = self
|
||||||
ret = str(eval(s))
|
eval_value = eval(s)
|
||||||
logger.debug("eval 执行成功: '%s' -> '%s'", s, ret[:50] + '...' if len(ret) > 50 else ret)
|
if isinstance(eval_value, (int, float)):
|
||||||
|
ret = str(eval_value)
|
||||||
|
else:
|
||||||
|
ret = eval_value
|
||||||
|
logger.debug("eval 执行成功: '%s' -> '%s'", s, str(ret)[:50] + '...' if len(ret) > 50 else ret)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ret = f"此 eval 实例发生错误: {e}"
|
ret = f"此 eval 实例发生错误: {e}"
|
||||||
logger.warning("eval 执行错误: '%s' -> %s", s, e)
|
logger.warning("eval 执行错误: '%s' -> %s", s, e)
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ from heurams.services.logger import get_logger
|
|||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class MCQPuzzle(BasePuzzle):
|
class MCQPuzzle(BasePuzzle):
|
||||||
"""选择题谜题生成器
|
"""选择题谜题生成器
|
||||||
|
|
||||||
@@ -58,6 +57,8 @@ class MCQPuzzle(BasePuzzle):
|
|||||||
jammer: 传入的干扰项列表
|
jammer: 传入的干扰项列表
|
||||||
"""
|
"""
|
||||||
# 合并正确答案和传入的干扰项, 并去重
|
# 合并正确答案和传入的干扰项, 并去重
|
||||||
|
logger.debug(f"答案映射: {self.mapping}, {type(self.mapping)}")
|
||||||
|
logger.debug(f"干扰项: {jammer}, {type(jammer)}")
|
||||||
unique_jammers = set(jammer + list(self.mapping.values()))
|
unique_jammers = set(jammer + list(self.mapping.values()))
|
||||||
self.jammer = list(unique_jammers)
|
self.jammer = list(unique_jammers)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user