Files
gaokao-volunteer-system/docs/ARCHITECTURE.md
Hermes Agent d786b8ee96 docs+tests: 完善文档体系,添加自动化测试
新增文档:
- docs/ARCHITECTURE.md - 系统架构设计
- docs/DEVELOPMENT.md - 开发指南
- docs/TUTORIAL.md - 使用教程(导航+快速上手+API参考)

新增测试:
- tests/test_all.py - 自动化测试脚本
  - 省份简称识别(5个)
  - 方案检查(5个用例)
  - 所有测试通过
- tests/cases/hunan-578.md - 湖南测试用例
- tests/cases/zhejiang-630.md - 浙江测试用例

测试结果:所有6个测试用例通过
- 湘/浙/鲁/粤/鄂简称识别
- 湖南错误版方案检测
- 湖南修正版方案通过
- 浙江错误模式检测
- 山东正确方案通过
- 未提供省份处理
2026-06-11 16:14:46 +08:00

181 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 架构设计
## 🏛️ 整体架构
```
┌─────────────────────────────────────────────────────────────┐
│ 用户交互层 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Hermes对话 │ │ 命令行 │ │
│ └────────┬────────┘ └────────┬────────┘ │
└───────────┼─────────────────────┼─────────────────────────────┘
│ │
┌───────────▼─────────────────────▼─────────────────────────────┐
│ 业务逻辑层 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 3个Hermes Skills │ │ 独立Python脚本 │ │
│ │ - advisor │ │ - visual-report │ │
│ │ - spec-checker │ │ - quick-3min │ │
│ │ - zhangxuefeng │ │ - collect-info │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
└───────────┼─────────────────────┼─────────────────────────────┘
│ │
┌───────────▼─────────────────────▼─────────────────────────────┐
│ 规则与数据层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ provinces/ │ │ errors/ │ │ templates/ │ │
│ │ 省份规则 │ │ 错误模式 │ │ 报告模板 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└───────────────────────────────────────────────────────────────┘
┌───────────▼─────────────────────────────────────────────────────┐
│ 持久化层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ docs/ │ │ data/ │ │ CHANGELOG.md │ │
│ │ 文档案例 │ │ 示例数据 │ │ 变更历史 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 🎯 设计原则
### 1. 关注点分离Separation of Concerns
- **Skills**:负责对话式交互
- **脚本**:负责批处理和数据处理
- **规则**:负责业务规则集中管理
- **数据**:负责持久化
### 2. 单点真相Single Source of Truth
- 规则统一在 `rules/`
- 文档统一在 `docs/`
- 示例统一在 `data/`
### 3. 可扩展性
- 省份可扩展(添加新省份只需修改 `PROVINCE_RULES`
- 错误模式可扩展(添加新错误到 `ERRORS.md`
- 案例可扩展(添加新案例到 `case-studies/`
### 4. 渐进增强
- 基础对话能力
- 增强:可视化报告
- 高级:自动检查
- 专家:数据驱动决策
## 🔄 数据流
### 场景A对话生成方案
```
用户输入 → Skill加载 → 收集信息
霍兰德评估 → 个性化匹配 → 院校推荐
生成方案 → 输出
(可选)调用 spec-checker 检查
```
### 场景B检查现有方案
```
用户方案 → spec-checker加载
省份识别 → 加载对应规则
规则匹配 → 发现问题
分类输出 → 修正建议
```
### 场景C生成可视化报告
```
考生数据 → 模板渲染
HTML生成 → PDF转换
Markdown输出
```
## 🔌 扩展点
### 添加新省份
```python
# 在 spec_checker_v2.py 中
PROVINCE_RULES["新省份"] = {
"mode": "院校专业组",
"max_volunteers": 45,
"max_majors_per_group": 6,
"has_adjustment": True,
"adjustment_scope": "组内专业",
"retrieval_rule": "...",
"collection_count": 2,
"subject_mode": "3+1+2",
"official_url": "...",
"exam_subject_total": 750,
}
```
### 添加新错误模式
```markdown
### E###<错误名称>
- **症状**<方案表现>
- **正确**<应该是>
- **场景**<何时出现>
- **修复**<如何修正>
- **首次发现**<日期>
```
### 添加新Skill
```
skills/
├── my-new-skill/
│ ├── SKILL.md
│ ├── references/
│ ├── templates/
│ └── scripts/
```
## 📊 技术栈
| 层 | 技术 |
| ----- | --------------------------- |
| Skill | Markdown + YAML frontmatter |
| 脚本 | Python 3.10+ |
| 数据 | JSON / YAML / Markdown |
| 版本 | Git |
| 文档 | Markdown |
## 🎓 学习路径
### 新手1天
1. 阅读 README.md
2. 了解3个Skill的作用
3. 体验1次完整对话流程
### 进阶3天
1. 熟悉 rules/ 目录结构
2. 学习 spec-checker 的工作原理
3. 修改一份现有方案
### 专家1周
1. 添加一个新省份规则
2. 添加一种新错误模式
3. 优化一个Skill的逻辑
---
**版本**v2.0
**最后更新**2026-06-11