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

6.7 KiB
Raw Blame History

架构设计

🏛️ 整体架构

┌─────────────────────────────────────────────────────────────┐
│                       用户交互层                              │
│  ┌─────────────────┐  ┌─────────────────┐                  │
│  │  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输出

🔌 扩展点

添加新省份

# 在 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,
}

添加新错误模式

### 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