# IT资产模型管理 (IT Assets Management Models)

这是一个基于Node.js开发的IT资产管理模型库，专注于域名资源的管理与持久化存储抽象。该项目提供灵活的域名数据模型、统一的存储接口和可扩展的插件系统，支持多种存储类型的无缝切换，便于集成到各类IT资产管理系统中。

## 核心功能亮点

- **灵活的域名数据模型**：完整的域名资源定义，支持各种DNS记录类型和元数据扩展
- **统一存储抽象**：基于`StorageAdapter`接口的存储层抽象，实现业务逻辑与存储介质解耦
- **多存储类型支持**：内置文件系统、内存存储等适配器，支持灵活扩展到其他存储类型
- **插件化架构**：通过插件系统支持自定义存储适配器的动态加载和注册
- **完整的CRUD操作**：提供域名资源的创建、查询、更新和删除的标准接口
- **高级查询能力**：支持复杂查询条件、排序和分页功能
- **类型安全**：完整的TypeScript类型定义，提供开发时类型检查

## 文档导航索引

### 1. 入门指南

- [安装与构建指南](./docs/installation-guide.md) 🔧
  - 详细的系统要求和依赖说明
  - 两种安装方式（npm包安装和源码构建）
  - 环境配置和构建命令
  - 测试运行指南

- [使用教程](./docs/usage-guide.md) 📚
  - 域名管理器初始化步骤
  - 域名资源的CRUD操作示例
  - 高级查询功能使用方法
  - 内置存储适配器配置说明
  - 错误处理最佳实践

### 2. 架构与技术文档

- [架构与项目结构](./docs/architecture-guide.md) 🏗️
  - 项目目录结构详解
  - 分层架构设计说明
  - 核心组件职责划分
  - 数据流和调用链分析
  - 架构设计原则和优势

- [API参考](./docs/api-reference.md) 📝
  - `DomainManager`接口完整文档
  - `StorageAdapter`接口规范
  - `Domain`数据模型定义
  - 查询条件和选项参数说明
  - 返回值类型和错误码说明

### 3. 开发与扩展

- [扩展指南](./docs/extension-guide.md) 🔌
  - 自定义存储适配器开发教程
  - 插件系统使用方法
  - 数据模型扩展技巧
  - 高级功能定制案例

- [存储扩展指南](./docs/storage-extension-guide.md) 💾
  - 存储适配器开发最佳实践
  - 不同存储介质集成方案
  - 性能优化和缓存策略
  - 事务处理支持实现

- [模型层接口规范](./docs/模型层接口规范.md) 📋
  - 接口设计原则
  - 参数校验规则
  - 返回格式统一标准
  - 异常处理规范

### 4. 项目文档

- [需求分析](./docs/需求分析.md) 📊
  - 业务需求梳理
  - 用户场景分析
  - 功能优先级定义
  - 验收标准说明

- [域名模型设计](./docs/域名模型设计.md) 🔤
  - 域名实体定义
  - 关系模型设计
  - 属性约束说明
  - 版本演进规划

- [域名管理应用模型层需求文档](./docs/域名管理应用模型层需求文档.md) 📄
  - 功能需求详述
  - 非功能性需求
  - 接口需求列表
  - 数据需求说明

- [数据库抽象层设计](./docs/数据库抽象层设计.md) 🗄️
  - 数据访问层架构
  - 存储介质抽象策略
  - 适配器模式实现
  - 性能和扩展性考虑

### 5. 参与项目

- [贡献指南](./docs/contribution-guide.md) 🤝
  - 贡献流程详解
  - 代码规范和最佳实践
  - 提交PR和审核流程
  - 测试编写指南
  - 文档贡献标准

## 快速开始

### 安装

```bash
# 使用 npm
npm install it-assets-management-models

# 或使用 yarn
yarn add it-assets-management-models
```

### 基本使用

```typescript
import { DomainManager } from 'it-assets-management-models';

// 初始化域名管理器（使用内存存储）
const domainManager = DomainManager.create({ adapter: 'memory' });
await domainManager.initialize();

// 创建域名
const domain = await domainManager.create({
  name: 'example.com',
  description: '示例域名',
  targetAddress: '192.168.1.1',
  recordType: 'A',
  ttl: 3600,
  enabled: true
});

// 查询域名
const allDomains = await domainManager.findAll();

// 释放资源
await domainManager.release();
```

## 开发与测试

```bash
# 运行测试
npm test
```

## 许可证

本项目采用MIT许可证。详情请参阅项目根目录下的LICENSE文件。

---

*IT资产模型管理库 - 提供灵活、可扩展的IT资产管理模型和持久化解决方案*