项目结构调整

This commit is contained in:
CaiXiang
2025-11-15 14:31:47 +08:00
parent a77ae6fac1
commit ec1d6f0cee
12 changed files with 2242 additions and 110 deletions

450
ARCHIVE_USAGE_GUIDE.md Normal file
View File

@@ -0,0 +1,450 @@
# 自动归档配置使用指南
本文档说明如何使用项目的自动归档配置和辅助脚本。
---
## 配置文件
### `.claude/file_organization.json`
这是主配置文件,定义了项目的文件组织规则,包括:
- **目录结构定义**: 归档目录、文档目录、源码目录的路径和用途
- **文件类型规则**: 不同文件扩展名的默认存放位置
- **命名规范**: Bug修复、功能更新、版本发布的命名模板
- **工作流规则**: 各类归档的标准流程
- **自动分类规则**: 根据关键词自动识别归档类型
- **模板路径**: 文档模板的位置
- **脚本路径**: 辅助脚本的位置
### 配置加载
配置文件会被以下工具自动读取:
- Claude Code AI (自动识别文件组织规则)
- 辅助脚本 (使用配置生成归档)
---
## 文档模板
模板位置: `.claude/templates/`
### 1. `bug_fix_template.md`
Bug修复文档模板包含以下占位符
- `{{BUG_DESCRIPTION}}` - Bug描述
- `{{DATE}}` - 日期
- `{{AUTHOR}}` - 作者
- `{{COMMIT_HASH}}` - Git提交哈希
- `{{FILE_PATH}}` - 文件路径
- 等等...
### 2. `feature_update_template.md`
功能更新文档模板,包含以下占位符:
- `{{FEATURE_NAME}}` - 功能名称
- `{{DATE}}` - 日期
- `{{AUTHOR}}` - 开发者
- `{{COMMIT_HASH}}` - Git提交哈希
- 等等...
### 3. `release_notes_template.md`
版本发布说明模板,包含以下占位符:
- `{{VERSION}}` - 版本号
- `{{RELEASE_DATE}}` - 发布日期
- `{{RELEASE_TYPE}}` - 发布类型
- `{{COMMIT_COUNT}}` - 提交数量
- 等等...
---
## 辅助脚本
脚本位置: `scripts/`
### 1. Bug修复归档脚本
**脚本**: `scripts/archive_bug_fix.sh`
**功能**:
- 自动创建Bug修复归档目录结构
- 生成Bug修复文档
- 复制文档到快速查阅目录
**使用方法**:
```bash
# 基本用法
./scripts/archive_bug_fix.sh <bug名称>
# 指定作者
./scripts/archive_bug_fix.sh <bug名称> "作者名称"
# 示例
./scripts/archive_bug_fix.sh path_tracking_error
./scripts/archive_bug_fix.sh csv_load_issue "张三"
```
**执行流程**:
1. 验证是否在项目根目录
2. 创建归档目录: `archives/bug_fixes/YYYYMMDD_<bug名称>/`
3. 创建子目录: `code/`, `docs/`, `tests/`
4. 从模板生成文档并替换占位符
5. 复制文档到 `docs/fixes/` 供快速查阅
6. 显示下一步操作提示
**创建的目录结构**:
```
archives/bug_fixes/20251115_path_tracking_error/
├── code/ # 存放修复的代码文件
├── docs/ # 存放详细文档
│ └── BUG_path_tracking_error_20251115.md
└── tests/ # 存放测试文件
docs/fixes/ # 文档快速查阅副本
└── BUG_path_tracking_error_20251115.md
```
---
### 2. 功能更新归档脚本
**脚本**: `scripts/archive_feature.sh`
**功能**:
- 自动创建功能更新归档目录结构
- 生成功能更新文档
- 复制文档到快速查阅目录
**使用方法**:
```bash
# 基本用法
./scripts/archive_feature.sh <功能名称>
# 指定开发者
./scripts/archive_feature.sh <功能名称> "开发者名称"
# 示例
./scripts/archive_feature.sh adaptive_lookahead
./scripts/archive_feature.sh dynamic_obstacle_avoidance "李四"
```
**执行流程**:
1. 验证是否在项目根目录
2. 创建归档目录: `archives/updates/YYYYMMDD_<功能名称>/`
3. 创建子目录: `code/`, `docs/`, `tests/`
4. 从模板生成文档并替换占位符
5. 复制文档到 `docs/updates/` 供快速查阅
6. 显示下一步操作提示
**创建的目录结构**:
```
archives/updates/20251115_adaptive_lookahead/
├── code/ # 存放新增/修改的代码
├── docs/ # 存放详细文档
│ └── UPDATE_adaptive_lookahead_20251115.md
└── tests/ # 存放测试文件
docs/updates/ # 文档快速查阅副本
└── UPDATE_adaptive_lookahead_20251115.md
```
---
### 3. 版本发布脚本
**脚本**: `scripts/create_release.sh`
**功能**:
- 创建版本归档目录
- 生成Release Notes
- 创建Git Tag
- 可选备份完整代码
**使用方法**:
```bash
# 基本用法
./scripts/create_release.sh <版本号>
# 指定发布类型
./scripts/create_release.sh <版本号> <Major|Minor|Patch>
# 示例
./scripts/create_release.sh 1.2.0
./scripts/create_release.sh 2.0.0 Major
./scripts/create_release.sh 1.2.1 Patch
```
**版本号格式**: X.Y.Z
- **X** (Major): 重大版本可能包含不兼容的API变更
- **Y** (Minor): 次要版本,新增功能但向后兼容
- **Z** (Patch): 补丁版本仅bug修复
**执行流程**:
1. 验证版本号格式和git仓库
2. 确定发布类型 (自动或手动指定)
3. 创建版本目录: `archives/versions/vX.Y.Z/`
4. 统计提交和文件变更
5. 生成Release Notes
6. 创建Git Tag
7. 可选:备份源码到归档目录
8. 显示推送tag的命令
**创建的目录结构**:
```
archives/versions/v1.2.0/
├── release_notes.md # 版本发布说明
└── backup/ # 可选:完整代码备份
└── source_code.tar.gz
```
---
## 完整工作流程
### Bug修复流程
1. **在主代码目录修复bug**
```bash
vim src/path_tracker.cpp
# 修复bug...
```
2. **提交git**
```bash
git add src/path_tracker.cpp
git commit -m "fix: 修复路径跟踪误差累积问题"
```
3. **创建归档**
```bash
./scripts/archive_bug_fix.sh path_tracking_error "你的名字"
```
4. **编辑文档**
```bash
vim archives/bug_fixes/20251115_path_tracking_error/docs/BUG_path_tracking_error_20251115.md
# 填写详细的bug信息、原因分析、修复方案等
```
5. **复制相关文件到归档**
```bash
# 复制修复的代码
cp src/path_tracker.cpp archives/bug_fixes/20251115_path_tracking_error/code/
# 如有测试文件
cp tests/test_path_tracker.cpp archives/bug_fixes/20251115_path_tracking_error/tests/
```
6. **提交归档**
```bash
git add archives/bug_fixes/ docs/fixes/
git commit -m "archive: Bug修复 - path_tracking_error"
```
---
### 功能更新流程
1. **在主代码目录开发新功能**
```bash
vim src/adaptive_lookahead.cpp
vim include/adaptive_lookahead.h
# 开发新功能...
```
2. **提交git**
```bash
git add src/adaptive_lookahead.cpp include/adaptive_lookahead.h
git commit -m "feature: 实现自适应前视距离算法"
```
3. **创建归档**
```bash
./scripts/archive_feature.sh adaptive_lookahead "你的名字"
```
4. **编辑文档**
```bash
vim archives/updates/20251115_adaptive_lookahead/docs/UPDATE_adaptive_lookahead_20251115.md
# 填写功能说明、设计方案、使用方法等
```
5. **复制相关文件到归档**
```bash
# 复制新增的代码
cp src/adaptive_lookahead.cpp archives/updates/20251115_adaptive_lookahead/code/
cp include/adaptive_lookahead.h archives/updates/20251115_adaptive_lookahead/code/
# 如有测试和示例
cp tests/test_adaptive_lookahead.cpp archives/updates/20251115_adaptive_lookahead/tests/
cp examples/example_adaptive.cpp archives/updates/20251115_adaptive_lookahead/code/
```
6. **提交归档**
```bash
git add archives/updates/ docs/updates/
git commit -m "archive: 功能更新 - adaptive_lookahead"
```
---
### 版本发布流程
1. **确保所有变更已提交**
```bash
git status
# 应该显示 "working tree clean"
```
2. **运行发布脚本**
```bash
./scripts/create_release.sh 1.2.0
```
3. **编辑Release Notes**
```bash
vim archives/versions/v1.2.0/release_notes.md
# 填写版本概述、新增功能、bug修复等
```
4. **提交归档**
```bash
git add archives/versions/
git commit -m "release: v1.2.0"
```
5. **推送tag**
```bash
git push origin v1.2.0
```
6. **在GitHub/GitLab创建Release**
- 上传编译好的二进制文件
- 复制Release Notes内容
- 发布
---
## AI辅助使用
当使用Claude Code时AI会自动读取 `.claude/file_organization.json` 配置,并根据以下规则工作:
### 自动识别归档类型
AI会根据关键词自动识别任务类型
- **Bug修复关键词**: bug, fix, 修复, 错误, 问题
- 文件归档到: `archives/bug_fixes/`
- 文档归档到: `docs/fixes/`
- **功能更新关键词**: feature, update, 新增, 功能, 更新, add, implement
- 文件归档到: `archives/updates/`
- 文档归档到: `docs/updates/`
- **版本发布关键词**: version, release, 版本, 发布
- 文件归档到: `archives/versions/`
### 示例对话
```
用户: 我发现了一个路径跟踪的bug帮我修复并归档
AI: 我会帮你修复这个bug并按照项目规范归档。根据配置我会
1. 修复代码
2. 创建归档目录 archives/bug_fixes/YYYYMMDD_path_tracking/
3. 生成修复文档
4. 复制代码和文档到相应位置
```
```
用户: 实现一个新的自适应前视距离功能
AI: 我会实现这个新功能并归档。根据配置,我会:
1. 开发新功能代码
2. 创建归档目录 archives/updates/YYYYMMDD_adaptive_lookahead/
3. 生成功能文档
4. 创建使用示例
```
---
## 目录快速参考
```
project_root/
├── .claude/
│ ├── file_organization.json # 主配置文件
│ └── templates/ # 文档模板
│ ├── bug_fix_template.md
│ ├── feature_update_template.md
│ └── release_notes_template.md
├── scripts/ # 辅助脚本
│ ├── archive_bug_fix.sh # Bug修复归档
│ ├── archive_feature.sh # 功能更新归档
│ └── create_release.sh # 版本发布
├── archives/ # 归档目录
│ ├── bug_fixes/ # Bug修复归档
│ │ └── YYYYMMDD_bug名称/
│ │ ├── code/
│ │ ├── docs/
│ │ └── tests/
│ ├── updates/ # 功能更新归档
│ │ └── YYYYMMDD_功能名称/
│ │ ├── code/
│ │ ├── docs/
│ │ └── tests/
│ └── versions/ # 版本归档
│ └── vX.Y.Z/
│ ├── release_notes.md
│ └── backup/
├── docs/ # 当前文档
│ ├── fixes/ # Bug修复文档快速查阅
│ ├── updates/ # 功能更新文档(快速查阅)
│ ├── guides/ # 使用指南
│ └── protocol/ # 协议文档
├── src/ # 源代码(主工作目录)
├── include/ # 头文件(主工作目录)
└── examples/ # 示例代码(主工作目录)
```
---
## 常见问题
### Q: 为什么要同时保存到归档目录和docs目录?
A:
- **归档目录** (`archives/`): 完整归档,包含代码、文档、测试,用于长期保存和追溯
- **文档目录** (`docs/`): 文档副本,方便快速查阅最新的修复和更新
### Q: 脚本在Windows上能用吗?
A: 脚本是bash脚本需要在Git Bash、WSL或Cygwin中运行。也可以手动执行脚本中的步骤。
### Q: 如何自定义模板?
A: 直接编辑 `.claude/templates/` 下的模板文件,使用 `{{占位符}}` 格式添加自定义字段。
### Q: AI如何知道要使用这些配置?
A: AI会自动读取 `.claude/file_organization.json` 配置文件,并根据其中的规则工作。
### Q: 可以修改归档路径吗?
A: 可以,编辑 `.claude/file_organization.json` 中的 `directories` 部分,修改路径配置。
---
## 维护建议
1. **定期检查归档**: 每月检查归档目录,确保文档完整
2. **更新模板**: 根据实际需求不断完善文档模板
3. **脚本优化**: 根据使用反馈优化脚本功能
4. **配置同步**: 团队成员保持配置文件一致
---
最后更新: 2025-11-15