You've already forked HeurAMS-legacy
refactor: 完成所有基础现代化重构
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# Nucleon 是 HeurAMS 软件项目使用的基于 TOML 的专有源文件格式, 版本 4
|
# Nucleon 是 HeurAMS 软件项目使用的基于 TOML 的专有源文件格式, 版本 5
|
||||||
# 建议使用的 MIME 类型: application/vnd.xyz.imwangzhiyu.heurams-nucleon.v4+toml
|
# 建议使用的 MIME 类型: application/vnd.xyz.imwangzhiyu.heurams-nucleon.v5+toml
|
||||||
|
|
||||||
["__metadata__"]
|
["__metadata__"]
|
||||||
["__metadata__.attribution"] # 版权元信息
|
["__metadata__.attribution"] # 版权元信息
|
||||||
@@ -21,13 +21,13 @@ 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__ = "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']"}
|
||||||
|
|
||||||
["__metadata__.orbital.schedule"] # 内置的推荐学习方案
|
["__metadata__.orbital.schedule"] # 内置的推荐学习方案
|
||||||
quick_review = [["FillBlank", "1.0"], ["SelectMeaning", "0.5"], ["recognition", "1.0"]]
|
quick_review = [["FillBlank", "1.0"], ["SelectMeaning", "0.5"], ["Recognition", "1.0"]]
|
||||||
recognition = [["Recognition", "1.0"]]
|
recognition = [["Recognition", "1.0"]]
|
||||||
final_review = [["FillBlank", "0.7"], ["SelectMeaning", "0.7"], ["recognition", "1.0"]]
|
final_review = [["FillBlank", "0.7"], ["SelectMeaning", "0.7"], ["Recognition", "1.0"]]
|
||||||
|
|
||||||
["秦孝公据崤函之固, 拥雍州之地,"]
|
["秦孝公据崤函之固, 拥雍州之地,"]
|
||||||
note = []
|
note = []
|
||||||
|
|||||||
7
src/heurams/__main__.py
Normal file
7
src/heurams/__main__.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
prompt = """HeurAMS 已经被成功地安装在系统中.
|
||||||
|
但 HeurAMS 被设计为一个带有辅助记忆调度器功能的软件包, 无法直接被执行, 但可被其他 Python 程序调用.
|
||||||
|
若您想启动内置的基本用户界面,
|
||||||
|
请运行 python -m heurams.interface,
|
||||||
|
或者 python -m heurams.interface.__main__
|
||||||
|
注意: 一个常见的误区是, 执行 interface 下的 __main__.py 运行基本用户界面, 这会导致 Python 上下文环境异常, 请不要这样做."""
|
||||||
|
print(prompt)
|
||||||
@@ -124,6 +124,7 @@ class MemScreen(Screen):
|
|||||||
logger.debug(f"记忆进程结束")
|
logger.debug(f"记忆进程结束")
|
||||||
for i in self.atoms:
|
for i in self.atoms:
|
||||||
i: pt.Atom
|
i: pt.Atom
|
||||||
|
i.revise()
|
||||||
i.persist("electron")
|
i.persist("electron")
|
||||||
self.load_finished_widget()
|
self.load_finished_widget()
|
||||||
return
|
return
|
||||||
@@ -136,6 +137,9 @@ class MemScreen(Screen):
|
|||||||
|
|
||||||
def action_quick_pass(self):
|
def action_quick_pass(self):
|
||||||
self.rating = 5
|
self.rating = 5
|
||||||
|
self.atom.minimize(5)
|
||||||
|
self.atom.registry["electron"].activate()
|
||||||
|
self.atom.lock(1)
|
||||||
|
|
||||||
def action_play_voice(self):
|
def action_play_voice(self):
|
||||||
"""朗读当前内容"""
|
"""朗读当前内容"""
|
||||||
|
|||||||
@@ -66,12 +66,12 @@ class MCQPuzzle(BasePuzzleWidget):
|
|||||||
self.alia
|
self.alia
|
||||||
]
|
]
|
||||||
logger.debug(f"Puzzle Setting: {setting}")
|
logger.debug(f"Puzzle Setting: {setting}")
|
||||||
|
current_options = self.puzzle.options[len(self.inputlist)]
|
||||||
yield Label(setting["primary"], id="sentence")
|
yield Label(setting["primary"], id="sentence")
|
||||||
yield Label(self.puzzle.wording[len(self.inputlist)], id="puzzle")
|
yield Label(self.puzzle.wording[len(self.inputlist)], id="puzzle")
|
||||||
yield Label(f"当前输入: {self.inputlist}", id="inputpreview")
|
yield Label(f"当前输入: {self.inputlist}", id="inputpreview")
|
||||||
|
|
||||||
# 渲染当前问题的选项
|
# 渲染当前问题的选项
|
||||||
current_options = self.puzzle.options[len(self.inputlist)]
|
|
||||||
with Container(id="btn-container"):
|
with Container(id="btn-container"):
|
||||||
for i in current_options:
|
for i in current_options:
|
||||||
self.hashmap[str(hash(i))] = i
|
self.hashmap[str(hash(i))] = i
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ logger = get_logger(__name__)
|
|||||||
class AtomRegister_runtime(TypedDict):
|
class AtomRegister_runtime(TypedDict):
|
||||||
locked: bool # 只读锁定标识符
|
locked: bool # 只读锁定标识符
|
||||||
min_rate: int # 最低评分
|
min_rate: int # 最低评分
|
||||||
|
newact: bool # 新激活
|
||||||
|
|
||||||
|
|
||||||
class AtomRegister(TypedDict):
|
class AtomRegister(TypedDict):
|
||||||
@@ -56,7 +57,7 @@ class Atom:
|
|||||||
"orbital": None,
|
"orbital": None,
|
||||||
"orbital_path": None, # 允许设置为 None, 此时使用 nucleon 文件内的推荐配置
|
"orbital_path": None, # 允许设置为 None, 此时使用 nucleon 文件内的推荐配置
|
||||||
"orbital_fmt": "toml",
|
"orbital_fmt": "toml",
|
||||||
"runtime": {"locked": False, "min_rate": 0x3F3F3F3F},
|
"runtime": {"locked": False, "min_rate": 0x3F3F3F3F, "newact": False},
|
||||||
}
|
}
|
||||||
self.do_eval()
|
self.do_eval()
|
||||||
logger.debug("Atom 初始化完成")
|
logger.debug("Atom 初始化完成")
|
||||||
@@ -67,6 +68,9 @@ class Atom:
|
|||||||
self.registry[key] = value
|
self.registry[key] = value
|
||||||
logger.debug("键 '%s' 已链接, 触发 do_eval", key)
|
logger.debug("键 '%s' 已链接, 触发 do_eval", key)
|
||||||
self.do_eval()
|
self.do_eval()
|
||||||
|
if key == 'electron':
|
||||||
|
if self.registry['electron'].is_activated() == 0:
|
||||||
|
self.registry['runtime']['newact'] = True
|
||||||
else:
|
else:
|
||||||
logger.error("尝试链接不受支持的键: '%s'", key)
|
logger.error("尝试链接不受支持的键: '%s'", key)
|
||||||
raise ValueError("不受支持的原子元数据链接操作")
|
raise ValueError("不受支持的原子元数据链接操作")
|
||||||
@@ -82,6 +86,7 @@ class Atom:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def lock(self, locked=-1):
|
def lock(self, locked=-1):
|
||||||
|
logger.debug(f"锁定参数 {locked}")
|
||||||
"""锁定, 效果等同于 self.registry['runtime']['locked'] = locked 或者返回是否锁定"""
|
"""锁定, 效果等同于 self.registry['runtime']['locked'] = locked 或者返回是否锁定"""
|
||||||
if locked == 1:
|
if locked == 1:
|
||||||
self.registry["runtime"]["locked"] = True
|
self.registry["runtime"]["locked"] = True
|
||||||
@@ -99,7 +104,7 @@ class Atom:
|
|||||||
"""
|
"""
|
||||||
if self.registry["runtime"]["locked"]:
|
if self.registry["runtime"]["locked"]:
|
||||||
logger.debug(f"允许总评分: {self.registry['runtime']['min_rate']}")
|
logger.debug(f"允许总评分: {self.registry['runtime']['min_rate']}")
|
||||||
self.registry["electron"].revisor(self.registry["runtime"]["min_rate"])
|
self.registry["electron"].revisor(self.registry["runtime"]["min_rate"], is_new_activation=self.registry["runtime"]["newact"])
|
||||||
else:
|
else:
|
||||||
logger.debug("禁止总评分")
|
logger.debug("禁止总评分")
|
||||||
|
|
||||||
|
|||||||
@@ -76,10 +76,13 @@ class Electron:
|
|||||||
|
|
||||||
def get_rate(self):
|
def get_rate(self):
|
||||||
"评价"
|
"评价"
|
||||||
|
try:
|
||||||
logger.debug("Electron.rate: ident='%s'", self.ident)
|
logger.debug("Electron.rate: ident='%s'", self.ident)
|
||||||
result = self.algo.rate(self.algodata)
|
result = self.algo.rate(self.algodata)
|
||||||
logger.debug("rate 结果: %s", result)
|
logger.debug("rate 结果: %s", result)
|
||||||
return result
|
return result
|
||||||
|
except:
|
||||||
|
return 0
|
||||||
|
|
||||||
def nextdate(self) -> int:
|
def nextdate(self) -> int:
|
||||||
logger.debug("Electron.nextdate: ident='%s'", self.ident)
|
logger.debug("Electron.nextdate: ident='%s'", self.ident)
|
||||||
|
|||||||
Reference in New Issue
Block a user