动态字段系统
动态字段系统允许管理员自定义 IP 地址的属性字段,满足不同场景的个性化需求。
功能概述
动态字段系统提供以下核心能力:
- 自定义字段定义:管理员可以定义字段名称、标签、类型
- 多种字段类型:支持文本、数字、下拉选择、日期等多种类型
- 字段验证:支持必填验证、格式验证
- 灵活启用:字段可以随时启用或禁用
- 数据绑定:IP 地址可以填写自定义字段值
字段定义
字段属性
go
type FieldDefinition struct {
ID int // 字段定义ID
Name string // 字段名称(英文,用于存储)
Label string // 字段标签(中文,用于显示)
FieldType string // 字段类型
IsRequired bool // 是否必填
Options JSON // 选项(用于下拉、单选等类型)
Description string // 字段描述
IsEnabled bool // 是否启用
SortOrder int // 排序顺序
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}字段类型
| 类型 | 说明 | 存储格式 | 示例 |
|---|---|---|---|
| text | 单行文本 | string | "服务器001" |
| textarea | 多行文本 | string | "这是详细描述..." |
| number | 数字 | number | 8080 |
| select | 下拉选择 | string | "生产环境" |
| radio | 单选 | string | "是" |
| checkbox | 多选 | array | ["Web", "DB"] |
| date | 日期 | string | "2024-01-15" |
| datetime | 日期时间 | string | "2024-01-15 10:30:00" |
| 邮箱 | string | "admin@example.com" | |
| url | URL | string | "https://example.com" |
字段管理
创建字段
- 进入字段定义管理页面
- 点击"新建字段"
- 填写字段信息:
- 字段名称(英文,如:server_type)
- 字段标签(中文,如:服务器类型)
- 选择字段类型
- 设置是否必填
- 添加字段描述
- 保存字段定义
配置选项
对于下拉选择、单选、多选类型,需要配置选项:
json
{
"options": [
{ "label": "物理服务器", "value": "physical" },
{ "label": "虚拟机", "value": "virtual" },
{ "label": "容器", "value": "container" }
]
}启用/禁用字段
- 启用:字段在 IP 编辑页面显示
- 禁用:字段隐藏,但已有数据保留
删除字段
删除字段定义时:
- 字段定义被删除
- 所有 IP 地址上的该字段数据被清除
- 操作不可恢复,请谨慎操作
IP 地址绑定
填写自定义字段
编辑 IP 地址时,可以填写已启用的自定义字段:
go
type IPAddress struct {
// ... 其他字段
CustomFields JSON `json:"custom_fields"` // 自定义字段值
}示例数据:
json
{
"server_type": "virtual",
"environment": "production",
"port": 8080,
"services": ["Web", "API"],
"expiry_date": "2024-12-31"
}字段验证
保存 IP 地址时,系统自动验证自定义字段:
- 必填验证:检查必填字段是否已填写
- 类型验证:检查值是否符合字段类型
- 选项验证:检查值是否在预定义选项中
使用场景
场景1:服务器管理
定义字段记录服务器信息:
| 字段名称 | 字段标签 | 类型 | 说明 |
|---|---|---|---|
| server_type | 服务器类型 | select | 物理机/虚拟机/容器 |
| os_type | 操作系统 | select | Windows/Linux/macOS |
| cpu_cores | CPU核心数 | number | CPU配置 |
| memory_gb | 内存(GB) | number | 内存配置 |
| disk_gb | 磁盘(GB) | number | 磁盘配置 |
| services | 运行服务 | checkbox | Web/DB/Cache等 |
场景2:网络设备管理
定义字段记录网络设备信息:
| 字段名称 | 字段标签 | 类型 | 说明 |
|---|---|---|---|
| device_type | 设备类型 | select | 交换机/路由器/防火墙 |
| brand | 品牌 | text | 设备品牌 |
| model | 型号 | text | 设备型号 |
| serial_number | 序列号 | text | 设备序列号 |
| purchase_date | 购买日期 | date | 购买时间 |
| warranty_expiry | 保修到期 | date | 保修期限 |
场景3:业务系统管理
定义字段记录业务系统信息:
| 字段名称 | 字段标签 | 类型 | 说明 |
|---|---|---|---|
| system_name | 系统名称 | text | 业务系统名称 |
| environment | 环境 | select | 开发/测试/生产 |
| owner | 负责人 | text | 系统负责人 |
| priority | 优先级 | select | 高/中/低 |
| description | 描述 | textarea | 系统描述 |
导入导出支持
Excel 导入
自定义字段支持通过 Excel 导入:
- 导出模板包含自定义字段列
- 填写自定义字段值
- 导入时自动验证和保存
Excel 列名映射:
IP地址 | 主机名 | 服务器类型 | 操作系统 | 环境
-------|--------|-----------|----------|------
192.168.1.10 | web01 | 虚拟机 | Linux | 生产Excel 导出
导出 IP 地址时包含自定义字段:
- 每个自定义字段作为一列
- 字段标签作为列标题
- 多选类型以逗号分隔
API 接口
字段定义接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/field-definitions | 获取字段定义列表 |
| POST | /api/field-definitions | 创建字段定义 |
| PUT | /api/field-definitions/:id | 更新字段定义 |
| DELETE | /api/field-definitions/:id | 删除字段定义 |
| PUT | /api/field-definitions/:id/toggle | 启用/禁用字段 |
IP 地址字段接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/ip-addresses/:id/custom-fields | 获取 IP 的自定义字段值 |
| PUT | /api/ip-addresses/:id/custom-fields | 更新 IP 的自定义字段值 |
最佳实践
字段设计原则
- 命名规范:字段名称使用英文小写,单词间用下划线分隔
- 标签清晰:字段标签使用中文,清晰表达字段含义
- 类型选择:根据数据特点选择合适的字段类型
- 选项完整:下拉选项要覆盖所有可能的情况
字段管理建议
- 规划先行:在添加字段前规划好字段结构
- 避免冗余:不要创建重复或相似的字段
- 定期清理:定期检查和清理不再使用的字段
- 文档记录:记录每个字段的用途和填写规范
数据质量
- 必填设置:关键字段设置为必填
- 格式验证:使用合适的字段类型确保数据格式
- 选项限制:使用下拉选择限制输入范围
- 定期检查:定期检查自定义字段数据的完整性