fix(interface): 修复持久化问题
This commit is contained in:
@@ -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`), 确保严格评估.
|
||||
|
||||
Reference in New Issue
Block a user