# 数据结构定义

> DDS-Section: 10. 附录 - 结构体定义
> DDS-Lines: L880-L993

## 基本信息结构体 (BasicInfo)

```go
type BasicInfo struct {
    Province         string `json:"province"`         // 省份
    City             string `json:"city"`             // 城市 (级联)
    IndustryContact  string `json:"industry_contact"` // 行业组人员姓名
    IndustryPhone    string `json:"industry_phone"`   // 行业组人员电话
    ProjectNature    string `json:"project_nature"`   // 项目性质: research/test/trial/market/sub_platform
}
```

### 项目性质枚举

| 代码 | 说明 |
|:---|:---|
| `research` | 科研 |
| `test` | 测试 |
| `trial` | 试用 |
| `market` | 市场化 |
| `sub_platform` | 二级平台 |

## 业务部署结构体 (DeployBusiness)

```go
type DeployBusiness struct {
    DeployerName      string `json:"deployer_name"`       // 部署人姓名
    DeployerPhone     string `json:"deployer_phone"`      // 部署人电话
    DeployStartTime   string `json:"deploy_start_time"`   // 部署开始时间
    DeployEndTime     string `json:"deploy_end_time"`     // 部署结束时间
    SystemVersion     string `json:"system_version"`      // 部署系统版本
    SystemType        string `json:"system_type"`         // 系统类型
    MainEntrance      string `json:"main_entrance"`       // 业务主要入口URL
    AdminUsername     string `json:"admin_username"`      // 系统超管用户名
    AdminPassword     string `json:"admin_password"`      // 系统超管密码 (加密存储)
}
```

### 系统类型枚举

| 代码 | 说明 |
|:---|:---|
| `business` | 业务系统 |
| `fly-control` | 飞控系统 |
| `supervisor` | 监管系统 |

## 部署环境结构体 (DeployEnv)

```go
type DeployEnv struct {
    // 主机信息
    Hosts             []HostInfo `json:"hosts"`
    
    // 网络环境
    NetworkType       string     `json:"network_type"`     // internal/single_public/full_public
    MainPublicIP      string     `json:"main_public_ip"`   // 主要公网IP
    DomainURL         string     `json:"domain_url"`       // 域名URL
    SSLEnabled        bool       `json:"ssl_enabled"`      // 是否开启SSL
    
    // 管理方式
    ManagementType    string     `json:"management_type"`  // bastion/whitelist/vpn
    ManagementURL     string     `json:"management_url"`   // 管理后台URL
    ManagementUser    string     `json:"management_user"`  // 管理后台用户名
    ManagementPwd     string     `json:"management_pwd"`   // 管理后台密码 (加密存储)
    
    // 统计信息
    HostCount         int        `json:"host_count"`       // 主机台数
    TotalCPU          int        `json:"total_cpu"`        // CPU总核数
    CPUModel          string     `json:"cpu_model"`        // CPU型号
    TotalMemory       int        `json:"total_memory"`     // 内存总大小(GB)
    TotalStorage      int        `json:"total_storage"`    // 存储总大小(GB)
}

type HostInfo struct {
    Hostname          string `json:"hostname"`
    InternalIP        string `json:"internal_ip"`
    PublicIP          string `json:"public_ip"`
    CanAccessPublic   bool   `json:"can_access_public"` // 能否访问公网
    SSHPort           int    `json:"ssh_port"`
    SSHUser           string `json:"ssh_user"`
    SSHPwd            string `json:"ssh_pwd"`           // SSH密码 (加密存储)
    Role              string `json:"role"`              // master/worker/storage
}
```

### 网络类型枚举

| 代码 | 说明 |
|:---|:---|
| `internal` | 完全内网 |
| `single_public` | 单主机公网 |
| `full_public` | 全访问公网 |

### 管理方式枚举

| 代码 | 说明 |
|:---|:---|
| `bastion` | 堡垒机 |
| `whitelist` | 白名单 |
| `vpn` | VPN |

### 主机角色枚举

| 代码 | 说明 |
|:---|:---|
| `master` | 主节点 |
| `worker` | 工作节点 |
| `storage` | 存储节点 |

## 部署中间件结构体 (DeployMiddleware)

```go
type DeployMiddleware struct {
    MySQL         MiddlewareInfo `json:"mysql"`
    Redis         MiddlewareInfo `json:"redis"`
    EMQX          MiddlewareInfo `json:"emqx"`
    MinIO         MiddlewareInfo `json:"minio"`
    InfluxDB      MiddlewareInfo `json:"influxdb"`
    Nacos         MiddlewareInfo `json:"nacos"`
    K8SDashboard  MiddlewareInfo `json:"k8s_dashboard"`
}

// MiddlewareInfo 通用中间件信息
type MiddlewareInfo struct {
    PublicIP        string `json:"public_ip"`
    PublicPort      int    `json:"public_port"`
    InternalIP      string `json:"internal_ip"`
    InternalPort    int    `json:"internal_port"`
    K8SAddress      string `json:"k8s_address"`     // K8S集群内访问地址
    K8SPort         int    `json:"k8s_port"`
    AdminUser       string `json:"admin_user"`
    AdminPwd        string `json:"admin_pwd"`       // 超管密码 (加密存储)
    Version         string `json:"version"`         // 中间件版本
}
```

## 项目授权信息结构体 (AuthorizationInfo)

```go
type AuthorizationInfo struct {
    TierOneSecret    string    `json:"tier_one_secret"`    // 一级TOTP密钥
    TimeOffset       int       `json:"time_offset"`        // 允许时间偏移(秒)
    TOTPEnabled      bool      `json:"totp_enabled"`       // 是否开启TOTP
    TierTwoSecret    string    `json:"tier_two_secret"`    // 二级TOTP密钥 (来自Watchdog)
    
    AuthType         string    `json:"auth_type"`          // permanent/time_limited
    AuthDays         int       `json:"auth_days"`          // 授权有效期(天)
    AuthorizedAt     time.Time `json:"authorized_at"`      // 授权时间
    RevokedAt        time.Time `json:"revoked_at"`         // 撤销授权时间
    IsOffline        bool      `json:"is_offline"`         // 是否离线授权
}
```

### 授权类型枚举

| 代码 | 说明 |
|:---|:---|
| `permanent` | 永久授权 |
| `time_limited` | 限时授权 |

## 敏感字段加密规则

遵循系统规范，以下字段必须加密存储 (AES-256):
- `DeployBusiness.AdminPassword`
- `DeployEnv.SSHPassword`
- `DeployEnv.ManagementPassword`
- `DeployMiddleware.*.AdminPassword`
