# 数据管理中心使用说明

## 系统概述

数据管理中心是帮战分团系统的核心模块，统一管理所有数据源，以 `member_uid` 作为全局唯一标识。

### 核心特性

- **全局唯一ID**: 所有数据都围绕 `member_uid` 进行组织和关联
- **数据源统一**: 集成接龙名单、帮战数据、装备内功数据、一线牵数据、ID映射数据
- **数据标准化**: 所有数据统一映射为 `xg_` 前缀格式
- **手动为主、智能为辅**: 智能分团结果可以一键导入手动编辑器继续调整

---

## 文件清单

### 核心文件

```
xg_nsh_battle_system/
├── xg_data_center.js              # 数据管理中心核心
├── xg_data_center_ui.js           # 数据管理中心UI
├── xg_data_integration.js         # 数据集成中心（打通所有模块）
├── auto_team_system.js            # 智能分团系统（贪心/模拟退火/遗传算法）
├── auto_team_ui.js                # 智能分团UI
├── xg_team_system_core.js         # 手动分团核心
├── equipment_csv_importer.js      # 装备内功数据导入
└── xg_team_system.html            # 主界面
```

### 依赖文件（从xg_libs文件夹加载）

- `chart.umd.min.js` - 图表库
- `chartjs-plugin-datalabels.min.js` - 图表数据标签插件

---

## 使用流程

### 1. 打开数据管理中心

在导航栏点击 **"数据中心"** 按钮，或点击手动分团页面的 **"数据中心"** 按钮。

### 2. 导入接龙名单（第一步）

**导入方式**：
- 切换到 **"数据导入"** 标签页
- 在 **"接龙名单导入"** 区域粘贴纯文本

**支持格式**：
```
1. 醉若曦 妙音 一线
2. 醉逍遥 惊鸿 一线
3. 醉清风 铁衣 无一线
```

**格式说明**：
- `编号` + `.` + `游戏ID` + `职业` + `是否有一线牵`
- 是否有一线牵：填写 **"一线"** 或 **"无一线"**

**操作**：
1. 粘贴文本到文本框
2. 点击 **"导入接龙名单"** 按钮
3. 查看导入统计（成功/失败数量）

### 3. 一线牵手动配对（可选）

**配对逻辑**：
1. 切换到 **"接龙名单"** 标签页
2. 在一线牵成员后面点击 **"选择"** 按钮
3. 第一个成员标记为 **①**
4. 第二个成员标记为 **②** 并自动成组
5. 点击第三个成员开始新的配对组

**查看配对**：
- 切换到 **"一线牵"** 标签页
- 查看所有已配对的组
- 可删除配对组

### 4. 导入帮战数据（可选）

**操作**：
1. 切换到 **"数据导入"** 标签页
2. 在 **"帮战数据导入"** 区域选择CSV文件
3. 点击 **"导入CSV"** 按钮

**CSV格式要求**：
- 必须包含字段：`玩家名字`、`职业`
- 建议包含：`击败`、`资源`、`对玩家伤害`、`对建筑伤害`、`治疗值`

### 5. 导入装备内功数据（可选）

**操作**：
1. 切换到 **"数据导入"** 标签页
2. 在 **"装备内功打造数据导入"** 区域选择CSV文件
3. 点击 **"导入CSV"** 按钮

**CSV格式要求**：
- 必须包含：`游戏名`、`主职业（主打职业）`
- 建议包含：装备信息、内功信息、打造情况、一线牵信息

### 6. 生成ID映射表

**作用**：
- 分析接龙名单成员在所有帮战数据中的历史ID
- 识别职业变化和ID变更
- 用于新旧ID更新

**操作**：
1. 切换到 **"数据导入"** 标签页
2. 点击 **"生成ID映射表"** 按钮
3. 切换到 **"ID映射"** 标签页查看结果

### 7. 执行智能分团

**操作**：
1. 返回主界面（手动分团页面）
2. 在 **"自动分团配置"** 面板下方选择数据源
3. 选择 **"接龙名单"** 作为数据源
4. 点击 **"自动分团"** 按钮
5. 等待计算完成（使用贪心/模拟退火/遗传算法）

**算法说明**：
- **局部贪心算法**：快速但可能局部最优
- **模拟退火算法**：避免局部最优
- **遗传算法**：全局搜索
- **OR-Tools约束规划**：精确约束求解

**结果**：
- 显示最优算法和综合得分
- 显示团队分布、职业分布、数据侧重统计
- 显示一线牵满足率

### 8. 导入到手动编辑器继续调整

**操作**：
1. 在智能分团结果页面，点击 **"导入到手动编辑器继续调整"**
2. 确认导入
3. 在手动分团页面查看导入的团队结构
4. 进行拖拽调整：
   - 从成员池拖拽成员到目标组
   - 在组之间拖拽调整
   - 右键删除成员

**特点**：
- 保留智能分团的所有分配结果
- 可以自由添加/删除/移动成员
- 实时显示团队统计数据

---

## 数据流图

```
接龙名单（文本）
    ↓
数据校验（格式检查、去重）
    ↓
member_uid生成（全局唯一ID）
    ↓
一线牵配对（手动选择1,2成组）
    ↓
帮战数据导入（多场数据）
    ↓
装备内功数据导入
    ↓
ID映射表生成（历史ID对比）
    ↓
数据标准化（xg_前缀映射）
    ↓
智能分团（多算法+约束校验）
    ↓
帕累托筛选（3-5套方案）
    ↓
一键导入手动编辑器
    ↓
手动调整（拖拽/增删改）
    ↓
导出分团方案（加密/图片/名单）
```

---

## 数据映射规则

### 接龙名单数据 → xg_relay_ 前缀

```javascript
{
    member_uid: "uid_123456_醉若曦",
    xg_relay_id: 1,
    xg_relay_game_id: "醉若曦",
    xg_relay_profession: "妙音",
    xg_relay_has_yxq: true,
    xg_relay_raw_text: "1. 醉若曦 妙音 一线",
    xg_relay_import_time: "2024-01-01T00:00:00.000Z"
}
```

### 帮战数据 → xg_bz_ 前缀

```javascript
{
    member_uid: "uid_123456_醉若曦",
    xg_bz_玩家名字: "醉若曦",
    xg_bz_职业: "妙音",
    xg_bz_击败: "15",
    xg_bz_资源: "1234",
    xg_bz_对玩家伤害: "1567890",
    xg_bz_对建筑伤害: "234567",
    xg_bz_治疗值: "345678"
}
```

### 装备内功数据 → xg_basic_ 前缀

```javascript
{
    member_uid: "uid_123456_醉若曦",
    xg_basic_游戏名: "醉若曦",
    xg_basic_主职业: "妙音",
    xg_basic_装备评分: 8500,
    xg_basic_内功评分: 7200,
    xg_basic_打造评分: 6800,
    xg_basic_一线牵: "醉逍遥"
}
```

### 一线牵数据 → xg_yxq_ 前缀

```javascript
{
    member_uid: "yxq_123456789",
    xg_yxq_member1_uid: "uid_111_醉若曦",
    xg_yxq_member2_uid: "uid_222_醉逍遥",
    xg_yxq_member1_game_id: "醉若曦",
    xg_yxq_member2_game_id: "醉逍遥",
    xg_yxq_member1_profession: "妙音",
    xg_yxq_member2_profession: "惊鸿",
    xg_yxq_create_time: "2024-01-01T00:00:00.000Z",
    xg_yxq_is_active: true
}
```

### ID映射数据 → xg_map_ 前缀

```javascript
{
    member_uid: "uid_123456_醉若曦",
    xg_map_current_id: "醉若曦",
    xg_map_historical_ids: ["醉若曦", "醉若曦丶", "醉若曦_new"],
    xg_map_profession_variants: ["妙音", "鸿音"],
    xg_map_last_seen: "2024-01-01T00:00:00.000Z",
    xg_map_is_active: true
}
```

---

## 快捷操作

### 快捷键

- `Ctrl + D` - 打开/关闭数据管理中心
- `Ctrl + S` - 保存当前分团配置
- `Ctrl + E` - 导出分团方案

### 快捷按钮

**手动分团页面**：
- **数据中心** - 打开数据管理中心
- **智能分团** - 执行智能分团
- **一线牵** - 管理一线牵配对
- **配置管理** - 保存/加载配置

**数据管理中心**：
- **文本导入** - 快速导入接龙名单
- **生成ID映射表** - 分析历史ID
- **一键导入手动编辑器** - 将智能分团结果导入手动编辑

---

## 常见问题

### Q1: 导入接龙名单时格式错误怎么办？

**A**: 检查格式是否为：`编号. 游戏ID 职业 一线/无一线`
- 编号后面必须有`.`和空格
- 各部分之间用空格分隔
- 一线牵状态必须是"一线"或"无一线"

### Q2: 一线牵配对不成功怎么办？

**A**: 
1. 确保成员在接龙名单中标记为"一线"
2. 在接龙名单页点击"选择"按钮，按顺序选择配对成员
3. 第一个成员标记为①，第二个标记为②自动成组
4. 切换到"一线牵"标签页查看配对结果

### Q3: 智能分团结果不满意怎么办？

**A**:
1. 在自动分团配置面板调整权重参数
2. 尝试禁用某些算法（如只使用遗传算法）
3. 手动调整一线牵配对权重
4. 将结果导入手动编辑器进行微调

### Q4: 如何备份和恢复数据？

**A**:
- **备份**: 在数据导入页点击"导出全部数据"
- **恢复**: 在数据导入页选择之前导出的JSON文件（暂不支持，需手动导入CSV）
- 数据自动保存到浏览器本地存储

### Q5: 如何识别新旧ID变更？

**A**:
1. 导入接龙名单（当前ID）
2. 导入历史帮战数据（包含旧ID）
3. 点击"生成ID映射表"
4. 切换到"ID映射"标签页查看
5. 表格显示历史ID和职业变化

---

## 技术架构

### 核心算法

**智能分团算法**：
- 局部贪心算法 - 快速初始解
- 模拟退火算法 - 避免局部最优
- 遗传算法 - 全局搜索
- OR-Tools约束规划 - 精确约束求解

**评分体系**：
- 波动比权重: 35%
- 基础战力权重: 25%
- 团队平衡权重: 25%
- 一线牵满足权重: 15%

### 数据存储

- 浏览器LocalStorage持久化
- JSON格式存储
- 自动保存机制
- 数据版本控制

### 前端框架

- 原生JavaScript（无框架依赖）
- TailwindCSS样式
- Font Awesome图标
- Chart.js图表（可选）

---

## 版本更新日志

### v1.0.0 (2024-01-01)

- ✨ 初始版本发布
- ✨ 接龙名单文本导入功能
- ✨ 一线牵手动配对功能（1,2编号机制）
- ✨ 帮战数据导入（xg_bz_前缀映射）
- ✨ 装备内功数据导入（xg_basic_前缀映射）
- ✨ ID映射表生成
- ✨ 智能分团多算法集成
- ✨ 手动分团拖拽编辑
- ✨ 一键导入手动编辑器
- ✨ 数据持久化存储

---

## 技术支持

如有问题或建议，请查看：
- 系统日志（浏览器Console）
- 数据验证（数据中心各标签页）
- 导入导出功能（数据备份）

**核心原则**：数据完整性 > 算法优化 > UI体验
