fix: 总体体验改进与版本号变更

This commit is contained in:
2026-05-07 17:50:30 +08:00
parent 1975474c94
commit d33aa7055b
39 changed files with 163 additions and 714 deletions

186
.gitignore vendored
View File

@@ -1,34 +1,19 @@
# Project specific additions
.devflag
.vscode/
.directory
__pycache__/
.idea/
cache/
data/repo/cngk
data/repo/eotgk
data/repo/evtgk
data/misc
data/cache
data/session
*.egg-info/
build/
dist/
old/
AGENT.md
AGENTS.md
# HeurAMS specific rules
*.log.*
*.log
*.pkl
/data
# Editor
.vscode/
.idea/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
@@ -47,16 +32,6 @@ share/python-wheels/
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
@@ -71,73 +46,10 @@ coverage.xml
.hypothesis/
.pytest_cache/
cover/
.claude/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly used for packaging.
#poetry.lock
#poetry.toml
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
#pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
@@ -147,72 +59,32 @@ ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Linux
*~
.fuse_hidden*
.directory
.Trash-*
.nfs*
## KDE Dolphin
.directory
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
.idea/
# Audio cache and temporary files
*.mp3
*.wav
*.ogg
*.tmp
# LLM cache files
*.cache
*.jsonl
# Log files
*.log
logs/
# OS generated files
# macOS
.DS_Store
.DS_Store?
.AppleDouble
.LSOverride
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
.AppleDB
.AppleDesktop
# Windows
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
Desktop.ini
ehthumbs_vista.db
[Dd]esktop.ini
$RECYCLE.BIN/
*.lnk
# Linux
*~
# VSCode
.vscode/
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Temporary files
*.tmp
*.temp
# Other trash
AGENT.md
# It's not AGENTS.md

50
AGENTS.md Normal file
View File

@@ -0,0 +1,50 @@
# AI 编程工具说明
本文档为 AI 工具以及在使用 AI 辅助向 HeurAMS 项目贡献代码时的开发者提供指导.
AI 工具必须完整阅读此 `/AGENTS.md` 文件.
## 查阅开发文档
在帮助进行 HeurAMS 开发时AI 工具应遵循标准的开发规范与流程, 应当自动查看或是在用户发出"初始化"指令后查看:
- [贡献指南](/CONTRIBUTING.md)
- [自述文件](/README.md)
- [项目架构](/ARCHITECTURE.md)
## 明确禁止行为
1. 禁止 AI 自动生成 PR 或 patch 文件
2. 禁止 AI 在未经人工确认的情况下修改现有代码
3. 禁止 AI 不使用格式化工具而生成格式化文件的行为
4. 禁止 AI 修复任何"bug", 而不经人工确认
5. 绝对禁止修改此 `/AGENTS.md` 文件
6. 禁止一切不遵循项目设计原则, 另造独立库的 "糊屎" 行为
7. 禁止 AI 直接操作 pip, uv, apt 等工具修改外部依赖或工具, 而应让人类开发者自己操作依赖
8. 禁止使用不同于任何现有文件的现有注释语言的其他语言写新注释
9. 禁止不读文件就直接覆写
## 许可证与法律要求
所有贡献必须符合许可要求, 所有代码必须与 AGPL-3.0-or-later 许可以及项目附加豁免条款(位于 LICENSE 文件尾部 237 至 245 行)兼容.
## Signed-off-by 与 DCO
AI 代理**严禁添加** Signed-off-by 标签.
只有人类能够合法地认证 DCO.
人类提交者负责:
- 审阅所有 AI 生成的代码
- 确保符合许可要求
- 添加自己的 Signed-off-by 标签以认证 DCO
- 对贡献负责任
AI 助手负责:
- 了解运行环境, 例如操作系统或具体发行版
- 遵循此文档所述规则
- 主动提醒使用 AI 工具的开发者
本文档参考自 [AI Coding Assistants — The Linux Kernel documentation](https://docs.kernel.org/process/coding-assistants.html)

View File

@@ -1,482 +0,0 @@
[
{
"repo_path": "cngk-t",
"ident": "庄宗受而藏之于庙. 其后用兵, 则遣从事以一少牢告庙, 请其矢, 盛以锦囊, 负而前驱, 及凯旋而纳之",
"added": 1777679860,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "方其系燕父子以组, 函梁君臣之首, 入于太庙, 还矢先王, 而告以成功, 其意气之盛, 可谓壮哉!",
"added": 1777684719,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "洎牧以谗诛, 邯郸为郡, 惜其用武而不终也.",
"added": 1777748505,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "苟以天下之大, 下而从六国破亡之故事, 是又在六国下矣.",
"added": 1777749120,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "故木受绳则直, 金就砺则利, 君子博学而日参省乎己, 则知明而行无过矣.",
"added": 1777749248,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "假舆马者, 非利足也, 而致千里; 假舟楫者, 非能水也, 而绝江河.",
"added": 1777749385,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "向使三国各爱其地, 齐人勿附于秦, 刺客不行, 良将犹在,",
"added": 1777749648,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "则胜负之数, 存亡之理, 当与秦相较, 或未易量.",
"added": 1777749737,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "呜呼! 以赂秦之地封天下之谋臣, 以事秦之心礼天下之奇才, 并力西向,",
"added": 1777749774,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "积土成山, 风雨兴焉; 积水成渊, 蛟龙生焉; 积善成德, 而神明自得, 圣心备焉.",
"added": 1777750294,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "锲而舍之, 朽木不折; 锲而不舍, 金石可镂.",
"added": 1777750446,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "寻寻觅觅, 冷冷清清, 凄凄惨惨戚戚. 乍暖还寒时候, 最难将息. 三杯两盏淡酒, 怎敌他、晚来风急! 雁过也, 正伤心, 却是旧时相识.",
"added": 1777750594,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "满地黄花堆积, 憔悴损, 如今有谁堪摘? 守着窗儿, 独自怎生得黑? 梧桐更兼细雨, 到黄昏、点点滴滴. 这次第, 怎一个愁字了得!",
"added": 1777750678,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "夫六国与秦皆诸侯, 其势弱于秦, 而犹有可以不赂而胜之之势.",
"added": 1777750884,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "登高而招, 臂非加长也, 而见者远; 顺风而呼, 声非加疾也, 而闻者彰.",
"added": 1777750964,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "故不积跬步, 无以至千里; 不积小流, 无以成江海.",
"added": 1777751066,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "且燕赵处秦革灭殆尽之际, 可谓智力孤危, 战败而亡, 诚不得已.",
"added": 1777751570,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "货恶其弃于地也, 不必藏于己; 力恶其不出于身也, 不必为己.",
"added": 1777846911,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "是故谋闭不兴, 盗窃乱贼而不作.",
"added": 1777846943,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "花径不曾缘客扫, 蓬门今始为君开.",
"added": 1777846974,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "盘飧市远无兼味, 樽酒家贫只旧醅.",
"added": 1777847000,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "五花马、千金裘, 呼儿将出换美酒, 与尔同销万古愁!",
"added": 1777847065,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "屈平疾王听之不聪也, 谗谄之蔽明也, 邪曲之害公也, 方正之不容也, 故忧愁幽思而作《离骚》.",
"added": 1777847121,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "夫天者, 人之始也; 父母者, 人之本也.",
"added": 1777847174,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "人穷则反本, 故劳苦倦极, 未尝不呼天也; 疾痛惨怛, 未尝不呼父母也.",
"added": 1777847195,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "信而见疑, 忠而被谤, 能无怨乎?",
"added": 1777847267,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "屈平正道直行, 竭忠尽智以事其君, 谗人间之, 可谓穷矣.",
"added": 1777847825,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "上称帝喾, 下道齐桓, 中述汤武, 以刺世事.",
"added": 1777874192,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "明道德之广崇, 治乱之条贯, 靡不毕见.",
"added": 1777876114,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "其文约, 其辞微, 其志洁, 其行廉.",
"added": 1777884008,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "其志洁, 故其称物芳; 其行廉, 故死而不容.",
"added": 1777884045,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "生乎吾前, 其闻道也固先乎吾, 吾从而师之;",
"added": 1777884247,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "吾师道也, 夫庸知其年之先后生于吾乎?",
"added": 1777884298,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "是故无贵无贱, 无长无少, 道之所存, 师之所存也.",
"added": 1777884338,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "嗟乎! 师道之不传也久矣! 欲人之无惑也难矣!",
"added": 1777884371,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "古之圣人, 其出人也远矣, 犹且从师而问焉;",
"added": 1777884425,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "今之众人, 其下圣人也亦远矣, 而耻学于师.",
"added": 1777884480,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "圣人之所以为圣, 愚人之所以为愚, 其皆出于此乎!",
"added": 1777884505,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "爱其子, 择师而教之; 于其身也, 则耻师焉, 惑矣.",
"added": 1777884537,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "彼童子之师, 授之书而习其句读者, 非吾所谓传其道解其惑者也.",
"added": 1777884705,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "问之, 则曰: “彼与彼年相若也, 道相似也.",
"added": 1777884818,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "其称文小而其指极大, 举类迩而见义远.",
"added": 1777884887,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "惑而不从师, 其为惑也, 终不解矣.",
"added": 1777884938,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "句读之不知, 惑之不解, 或师焉, 或不焉, 小学而大遗, 吾未见其明也.",
"added": 1777885310,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "士大夫之族, 曰师曰弟子云者, 则群聚而笑之.",
"added": 1777885372,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "自疏濯淖污泥之中, 蝉蜕于浊秽, 以浮游尘埃之外, 不获世之滋垢, 皭然泥而不滓者也.",
"added": 1777885657,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "巫医乐师百工之人, 君子不齿, 今其智乃反不能及, 其可怪也欤!",
"added": 1777937005,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "圣人无常师. 孔子师郯子、苌弘、师襄、老聃.",
"added": 1777937060,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "郯子之徒, 其贤不及孔子.",
"added": 1777937080,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "是故弟子不必不如师, 师不必贤于弟子, 闻道有先后, 术业有专攻, 如是而已.",
"added": 1777937115,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "实迷途其未远, 觉今是而昨非.",
"added": 1777937271,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "引壶觞以自酌, 眄庭柯以怡颜.",
"added": 1777937411,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "园日涉以成趣, 门虽设而常关.",
"added": 1777937464,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "云无心以出岫, 鸟倦飞而知还.",
"added": 1777937517,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "归去来兮, 请息交以绝游.",
"added": 1777937573,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "悦亲戚之情话, 乐琴书以消忧.",
"added": 1777937619,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "农人告余以春及, 将有事于西畴.",
"added": 1777937642,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "李氏子蟠, 年十七, 好古文, 六艺经传皆通习之, 不拘于时, 学于余.",
"added": 1777937894,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "善万物之得时, 感吾生之行休.",
"added": 1777938016,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "策扶老以流憩, 时矫首而遐观.",
"added": 1777938520,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "既窈窕以寻壑, 亦崎岖而经丘.",
"added": 1777938937,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "怀良辰以孤往, 或植杖而耘耔.",
"added": 1777968294,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "淮左名都, 竹西佳处, 解鞍少驻初程.",
"added": 1777970555,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "古者富贵而名摩灭, 不可胜记, 唯倜傥非常之人称焉.",
"added": 1778018829,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "盖文王拘而演《周易》; 仲尼厄而作《春秋》; 屈原放逐, 乃赋《离骚》; 左丘失明, 厥有《国语》;",
"added": 1778018908,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "乃如左丘无目, 孙子断足, 终不可用, 退而论书策, 以舒其愤, 思垂空文以自见.",
"added": 1778019166,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "上计轩辕, 下至于兹, 为十表, 本纪十二, 书八章, 世家三十, 列传七十, 凡百三十篇.",
"added": 1778019396,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "草创未就, 会遭此祸, 惜其不成, 是以就极刑而无愠色.",
"added": 1778019511,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "心非木石岂无感, 吞声踯躅不敢言.",
"added": 1778019707,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "仆窃不逊, 近自托于无能之辞, 网罗天下放失旧闻, 略考其行事, 综其终始, 稽其成败兴坏之纪,",
"added": 1778020343,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "仆诚以著此书, 藏之名山, 传之其人, 通邑大都, 则仆偿前辱之责, 虽万被戮, 岂有悔哉!",
"added": 1778020491,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "江畔何人初见月? 江月何年初照人?",
"added": 1778025537,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "不知江月待何人, 但见长江送流水.",
"added": 1778025571,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "斜月沉沉藏海雾, 碣石潇湘无限路.",
"added": 1778025668,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "不知乘月几人归, 落月摇情满江树.",
"added": 1778025686,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "东南形胜, 三吴都会, 钱塘自古繁华.",
"added": 1778025708,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "江娥啼竹素女愁, 李凭中国弹箜篌.",
"added": 1778025886,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "十二门前融冷光, 二十三丝动紫皇.",
"added": 1778025946,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "羌管弄晴, 菱歌泛夜, 嬉嬉钓叟莲娃.",
"added": 1778026396,
"tags": []
},
{
"repo_path": "cngk-t",
"ident": "千骑拥高牙, 乘醉听箫鼓, 吟赏烟霞.",
"added": 1778026427,
"tags": []
}
]

View File

@@ -1,14 +0,0 @@
{
"临安春雨初霁": {
"SM-2": {
"efactor": 2.5,
"real_rept": 4,
"rept": 2,
"interval": 15,
"last_date": 20578,
"next_date": 20593,
"is_activated": 1,
"last_modify": 1777940498.2121851
}
}
}

View File

@@ -1,22 +0,0 @@
使用仪器分析分子:
质谱仪 -> 质量特征, 测分子质量(最大质荷比)
红外光谱 -> 化学键和官能团
核磁共振氢谱 -> 氢原子的种类和数目
X射线衍射 -> 复杂分子, 分析键长键角
元素分析仪 -> 确定元素种类及比例, 写出实验式
元素转换:
C -> CO2
S -> SO2
H -> H2O
N -> N2 (注意)
Cl -> HCl
烷烃:
可以燃烧, 火焰较明亮
可以在光照下和卤素单质发生取代(卤素单质光照下生成自由基 发生自由基取代反应)
可以高温分解为小的烷烃和烯烃
不和酸性高锰酸钾, 酸碱反应, 不和Br2(CCl4)反应
除 CH3Br 为气体外, 多溴代物为液体("油状液滴"), CBr4是固体
光照用紫外灯或强日光(太阳光直射),不能用普通白炽灯 uv含量低

View File

@@ -1,4 +0,0 @@
title = "测试用单元集"
package = "stub"
author = "__heurams__"
desc = ""

View File

@@ -1,5 +0,0 @@
["临安春雨初霁"]
note = ['陆游〔宋代〕']
content = "临安/春雨/初霁/"
translation = "临安春雨初霁"
keyword_note = { "临安" = "南宋都城, 今杭州", "霁" = "雨后或雪后转晴" }

View File

@@ -1,11 +0,0 @@
schedule = ["quick_review", "recognition", "final_review"]
[routes]
quick_review = [["SelectMeaning", "1.0"], ["Recognition", "1.0"]]
recognition = [["Recognition", "1.0"]]
final_review = [["FillBlank", "1.0"], ["Recognition", "1.0"]]
[annotation]
"quick_review" = "复习旧知"
"recognition" = "新知识"
"final_review" = "总复习"

View File

@@ -1,17 +0,0 @@
[annotation]
note = "笔记"
keyword_note = "关键词翻译"
translation = "语句翻译"
delimiter = "分隔符"
content = "内容"
tts_text = "文本转语音文本"
[common]
delimiter = "/"
tts_text = "eval:payload['content'].replace('/', '')"
[common.puzzles] # 谜题定义
# 我们称 "Recognition" 为 recognition 谜题的 alia
"Recognition" = { __origin__ = "recognition", __hint__ = "", primary = "eval:payload['content']", secondary = ["eval:payload['keyword_note']", "eval:payload['note']"], top_dim = ["eval:payload['translation']"] }
"SelectMeaning" = { __origin__ = "mcq", __hint__ = "eval:payload['content']", primary = "eval:payload['content']", mapping = "eval:payload['keyword_note']", jammer = "eval:list(payload['keyword_note'].values())", max_riddles_num = "eval:default['mcq']['max_riddles_num']", prefix = "选择正确项: " }
"FillBlank" = { __origin__ = "cloze", __hint__ = "", text = "eval:payload['content']", delimiter = "eval:nucleon['delimiter']", min_denominator = "eval:default['cloze']['min_denominator']"}

View File

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 554.4 554.4" version="1.1">
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<title>HeurAMS Monochrome Logo - Dark</title>
<desc>Dark monochrome logo of the HeurAMS Project</desc>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 554.4 L 554.4 554.4 L 554.4 0 L 0 0 L 0 554.4 z" style="fill: none"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 66.528 487.872 L 199.584 487.872 L 199.584 354.816 L 66.528 354.816 z" clip-path="url(#p4da876c7a0)" style="fill: #1A1A1A; stroke: #1A1A1A; stroke-linejoin: miter"/>
</g>
<g id="patch_3">
<path d="M 199.584 354.816 L 487.872 354.816 L 487.872 66.528 L 199.584 66.528 z" clip-path="url(#p4da876c7a0)" style="fill: #1A1A1A; stroke: #1A1A1A; stroke-linejoin: miter"/>
</g>
</g>
</g>
<defs>
<clipPath id="p4da876c7a0">
<rect x="0" y="0" width="554.4" height="554.4"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 554.4 554.4" version="1.1">
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<title>HeurAMS Monochrome Logo - Light</title>
<desc>Light monochrome logo of the HeurAMS Project</desc>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 554.4 L 554.4 554.4 L 554.4 0 L 0 0 L 0 554.4 z" style="fill: none"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 66.528 487.872 L 199.584 487.872 L 199.584 354.816 L 66.528 354.816 z" clip-path="url(#p4da876c7a0)" style="fill: #ffffff; stroke: #ffffff; stroke-linejoin: miter"/>
</g>
<g id="patch_3">
<path d="M 199.584 354.816 L 487.872 354.816 L 487.872 66.528 L 199.584 66.528 z" clip-path="url(#p4da876c7a0)" style="fill: #ffffff; stroke: #ffffff; stroke-linejoin: miter"/>
</g>
</g>
</g>
<defs>
<clipPath id="p4da876c7a0">
<rect x="0" y="0" width="554.4" height="554.4"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 554.4 554.4" version="1.1">
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<title>HeurAMS Logo</title>
<desc>The logo of the HeurAMS Project</desc>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 554.4 L 554.4 554.4 L 554.4 0 L 0 0 L 0 554.4 z" style="fill: none"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 66.528 487.872 L 199.584 487.872 L 199.584 354.816 L 66.528 354.816 z" clip-path="url(#p4da876c7a0)" style="fill: #1660a5; stroke: #1660a5; stroke-linejoin: miter"/>
</g>
<g id="patch_3">
<path d="M 199.584 354.816 L 487.872 354.816 L 487.872 66.528 L 199.584 66.528 z" clip-path="url(#p4da876c7a0)" style="fill: #545f70; stroke: #545f70; stroke-linejoin: miter"/>
</g>
</g>
</g>
<defs>
<clipPath id="p4da876c7a0">
<rect x="0" y="0" width="554.4" height="554.4"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

0
src/heurams/assets/data/cache/.keep vendored Normal file
View File

View File

View File

View File

View File

@@ -22,6 +22,13 @@ logger = get_logger(__name__)
logger.debug(f"包目录: {rootdir}")
logger.debug(f"工作目录: {workdir}")
default_data = rootdir / "assets" / "data"
user_data = workdir / "data"
if not user_data.exists():
logger.info("初始化数据目录: %s", user_data)
import shutil
shutil.copytree(default_data, user_data)
else:
(workdir / "data" / "config").mkdir(parents=True, exist_ok=True)
config_var: ContextVar[ConfigDict] = ContextVar(

View File

@@ -4,7 +4,7 @@ from heurams.services.logger import get_logger
logger = get_logger(__name__)
ver = "0.5.0"
stage = "rc.1"
stage = "stable"
codename = "fulcrum"
codename_cn = "支点"