fix(interface): 修复持久化问题

This commit is contained in:
2026-04-30 04:45:05 +08:00
parent face433660
commit 2625632e9c
11 changed files with 1239 additions and 463 deletions

View File

@@ -124,21 +124,18 @@ graph LR
Algodata[(algodata.json)]
Schedule[(schedule.toml)]
end
subgraph "运行时组装"
Nucleon -->|内容| Atom
Electron -->|状态| Atom
Orbital -->|策略| Atom
end
Payload --> Nucleon
Common --> Nucleon
Algodata --> Electron
Schedule --> Orbital
Payload -->|Repo| Nucleon
Common -->|Repo| Nucleon
Algodata -->|Repo| Electron
Schedule -->|Repo| Orbital
```
______________________________________________________________________
## 调度反应器 (Reactor)
调度反应器是核心业务流程引擎, 采用三层嵌套的有限状态机设计 (基于 `transitions` 库).
@@ -157,12 +154,12 @@ ______________________________________________________________________
| **ExpanderState** | `exammode` | 考试模式 (正面答题) |
| | `retronly` | 回溯模式 (仅识别) |
### 三层嵌套结构
### 状态机嵌套结构
```mermaid
graph TB
subgraph "Router (全局路由器)"
R[Router<br/>状态: unsure→quick_review→recognition→final_review→finished]
R[Router<br/>状态: unsure→quick_review<br/>→recognition→final_review<br/>→finished]
P1[Procession 队列1: 快速复习]
P2[Procession 队列2: 新记忆]
P3[Procession 队列3: 总复习]
@@ -222,7 +219,7 @@ Router.__init__(atoms)
└─ Algorithm.revisor(algodata, feedback)
```
______________________________________________________________________
评分累积机制: 原子在多谜题阶段的最终评分取所有谜题的最低评分 (`min_rate`), 确保严格评估.
## 算法系统
@@ -260,11 +257,9 @@ ______________________________________________________________________
}
```
______________________________________________________________________
## 仓库系统 (Repo)
仓库 TOML/JSON 文件目录, 无数据库依赖.
仓库 TOML/JSON 文件目录, 无数据库依赖.
### 目录结构
@@ -303,8 +298,6 @@ classDiagram
- `_generate_particles_data()` 在初始化时自动将 payload 数据转换为 `Nucleon` 所需的格式.
- 默认保存列表 `default_save_list = ["algodata"]`, 仅持久化算法状态.
______________________________________________________________________
## Lict 集合
`Lict` 继承 `MutableSequence`, 同时维护列表和字典访问:
@@ -320,8 +313,6 @@ lict.dicted_data # 纯字典导出
脏同步机制:修改列表时自动同步字典, 修改字典时自动同步列表. 用于 `payload``algodata` 的双模式访问需求.
______________________________________________________________________
## 配置系统 (ConfigDict)
`ConfigDict` 继承 `UserDict`, 是**单例模式**的 TOML 懒加载配置管理器.
@@ -361,8 +352,6 @@ with ConfigContext(test_config):
... # 临时使用测试配置
```
______________________________________________________________________
## 提供者系统 (Providers)
可插拔的后端实现, 通过 `providers/__init__.py` 中的字典注册.
@@ -377,8 +366,6 @@ ______________________________________________________________________
选择方式:`services/*.toml` 中的 `provider` 字段.
______________________________________________________________________
## 谜题系统 (Puzzles)
谜题引擎用于在复习阶段生成评估视图:
@@ -393,8 +380,6 @@ ______________________________________________________________________
谜题通过轨道策略 (Orbital)在 `Expander` 中按概率展开, 每个原子可产生多个谜题, 每个谜题独立评分.
______________________________________________________________________
## 服务层
| 服务 | 文件 | 说明 |
@@ -412,8 +397,6 @@ ______________________________________________________________________
日志系统:每个模块通过 `get_logger(__name__)` 创建自己的日志器, 日志文件 10MB 轮转, 最多 5 个备份, 追加到 `heurams.log`.
______________________________________________________________________
## 复习全流程
```mermaid
@@ -453,15 +436,3 @@ sequenceDiagram
Router-->>UI: 完成 (finished)
UI->>User: 显示总结
```
______________________________________________________________________
## 关键设计决策
1. **无数据库** — 所有持久化基于 TOML/JSON 文件目录, 方便版本管理和手动编辑.
2. **Lict 双模式访问** — payload 和 algodata 同时支持列表迭代和字典查找, 兼顾批处理和随机访问.
3. **物理隐喻分离** — 内容 (Nucleon)、状态 (Electron)、策略 (Orbital) 三者正交, 可独立替换, 便于组合不同算法和内容类型.
4. **transitions 状态机** — 使用 `transitions` 库实现 Router → Procession → Expander 三层嵌套状态机, 每个层次职责明确.
5. **Evalizer eval 模板** — 使用 `eval()` 实现动态模板替换, 功能灵活但存在安全风险 (标记为待替换).
6. **配置单例**`ConfigDict` 以规范化路径为键实现单例, 避免多实例导致的配置不一致问题.
7. **评分累积** — 原子在多谜题阶段的最终评分取所有谜题的最低评分 (`min_rate`), 确保严格评估.