# 贡献指南

感谢您对IT资产模型管理库的兴趣和支持！我们欢迎各种形式的贡献，包括代码改进、文档更新、问题报告和功能建议。

## 如何贡献

### 1. 报告问题或提出功能建议

如果您发现了bug或者有功能建议，请在GitHub仓库的Issues页面创建一个新的Issue。请尽可能详细地描述问题或建议，包括：

- 清晰的问题描述
- 复现步骤（对于bug）
- 期望的行为
- 当前的行为
- 相关的错误信息或截图
- 您的环境信息（操作系统、Node.js版本等）

### 2. 贡献代码

如果您想要直接贡献代码，请按照以下步骤操作：

#### Fork仓库

1. 访问项目的GitHub仓库
2. 点击"Fork"按钮创建您自己的副本

#### 克隆仓库

```bash
git clone https://github.com/YOUR_USERNAME/it-assets-management-models.git
cd it-assets-management-models
```

#### 创建分支

```bash
git checkout -b feature/your-feature-name
```

#### 安装依赖

```bash
npm install
```

#### 实现更改

- 编写代码时，请遵循项目的代码规范
- 添加测试用例以确保您的更改正常工作
- 更新相关文档

#### 运行测试

```bash
npm test
```

确保所有测试都通过，并且没有新的错误。

#### 提交更改

```bash
git add .
git commit -m "描述您的更改"
```

请使用清晰、描述性的提交信息。

#### 推送到您的Fork

```bash
git push origin feature/your-feature-name
```

#### 创建Pull Request

1. 访问原始仓库
2. 点击"Pull request"按钮
3. 选择您的分支
4. 填写Pull Request描述，清晰解释您的更改
5. 提交Pull Request

## 代码规范

### TypeScript规范

- 使用TypeScript的严格模式
- 为所有函数、接口和类型提供完整的类型注解
- 使用ES6+语法特性
- 使用箭头函数代替function声明，除非需要函数提升
- 避免使用any类型，尽可能使用更具体的类型

### 命名约定

- 类名：使用PascalCase（如`DomainManager`）
- 函数/方法名：使用camelCase（如`findDomainById`）
- 变量名：使用camelCase（如`domainData`）
- 常量：使用全大写加下划线（如`MAX_RETRIES`）
- 接口名：使用PascalCase，不添加I前缀（如`StorageAdapter`而非`IStorageAdapter`）

### 文档规范

- 使用JSDoc格式为公共API添加文档注释
- 提供清晰的参数描述和返回值说明
- 对于复杂功能，添加使用示例

## 测试规范

- 为新功能编写单元测试和集成测试
- 确保测试覆盖主要场景和边缘情况
- 遵循Arrange-Act-Assert模式编写测试

## 审核流程

提交Pull Request后，项目维护者将审核您的代码。审核过程可能需要一些时间，请耐心等待。维护者可能会要求您进行一些更改，这些反馈是为了确保代码质量和一致性。

## 行为准则

我们希望所有参与者能够保持友好、尊重和专业的态度。请尊重不同的意见和背景，避免任何形式的骚扰或歧视行为。

---

## 许可证

通过提交代码，您同意您的贡献将在项目的MIT许可证下发布。

---

## 相关文档

- [安装与构建指南](./installation-guide.md) - 详细的安装和构建步骤
- [使用教程](./usage-guide.md) - 全面的使用示例和代码片段
- [架构与项目结构](./architecture-guide.md) - 详细的系统架构和项目组织说明
- [API参考](./api-reference.md) - 完整的API接口文档和数据模型说明

## 联系方式

如有任何问题，可以通过项目的Issues页面联系我们。

感谢您的贡献！