# 数据源预设配置

本目录包含所有预定义的数据源配置。

## 已注册的数据源

### 部署相关 (deploy.ts)

#### 1. ENVIRONMENTS - 环境列表
```typescript
import { DataSourceType, loadDataSource } from '@/domain/dataSource';

// 使用示例
const options = await loadDataSource(DataSourceType.ENVIRONMENTS);
```

**接口:** `GET /api/v1/environments/list?enabled=true`

**返回格式:**
```typescript
{
  label: string;      // 环境名称
  value: number;      // 环境 ID
  code: string;       // 环境代码
  type: string;       // 环境类型
  description: string;// 描述
}
```

#### 2. PROJECT_GROUPS - 项目组列表
```typescript
const options = await loadDataSource(DataSourceType.PROJECT_GROUPS);
```

**接口:** `GET /api/v1/project-groups/list?enabled=true`

**返回格式:**
```typescript
{
  label: string;      // 项目组名称
  value: number;      // 项目组 ID
  code: string;       // 项目组代码
  description: string;// 描述
}
```

#### 3. APPLICATIONS - 应用列表
```typescript
const options = await loadDataSource(DataSourceType.APPLICATIONS);
```

**接口:** `GET /api/v1/applications/list?enabled=true`

**返回格式:**
```typescript
{
  label: string;       // 应用名称
  value: number;       // 应用 ID
  code: string;        // 应用代码
  projectGroupId: number; // 所属项目组 ID
  description: string; // 描述
}
```

### 外部系统 (jenkins.ts, k8s.ts, git.ts, docker.ts)

- **JENKINS_SERVERS** - Jenkins 服务器列表
- **K8S_CLUSTERS** - K8s 集群列表
- **GIT_REPOSITORIES** - Git 仓库列表
- **DOCKER_REGISTRIES** - Docker 镜像仓库列表

### 通知相关 (notification.ts)

- **NOTIFICATION_CHANNEL_TYPES** - 通知渠道类型
- **NOTIFICATION_CHANNELS** - 通知渠道列表

### 用户相关 (user.ts)

- **USERS** - 用户列表
- **ROLES** - 角色列表
- **DEPARTMENTS** - 部门列表

## 使用示例

### 在 React 组件中使用

```typescript
import { useState, useEffect } from 'react';
import { DataSourceType, loadDataSource } from '@/domain/dataSource';

function MyComponent() {
  const [environments, setEnvironments] = useState([]);
  const [projectGroups, setProjectGroups] = useState([]);
  const [applications, setApplications] = useState([]);

  useEffect(() => {
    // 加载环境列表
    loadDataSource(DataSourceType.ENVIRONMENTS).then(setEnvironments);
    
    // 加载项目组列表
    loadDataSource(DataSourceType.PROJECT_GROUPS).then(setProjectGroups);
    
    // 加载应用列表
    loadDataSource(DataSourceType.APPLICATIONS).then(setApplications);
  }, []);

  return (
    <select>
      {environments.map(env => (
        <option key={env.value} value={env.value}>
          {env.label}
        </option>
      ))}
    </select>
  );
}
```

### 在表单设计器中使用

这些数据源可以直接在表单设计器的下拉框、单选框等组件中使用：

```typescript
{
  type: 'select',
  label: '选择环境',
  dataSource: DataSourceType.ENVIRONMENTS
}
```

## 添加新数据源

1. 在 `types.ts` 中添加枚举类型
2. 在 `presets/` 目录创建配置文件
3. 在 `DataSourceRegistry.ts` 中注册

详见主 README.md。

