# game_self_game_robots 迁移说明

## 目标

把旧 `hyapp_game.game_self_game_robots` 的机器人池迁移到 `hyapp_robot.robot_game_robots`，不删除旧库旧表。

## 迁移规则

- 来源表：`hyapp_game.game_self_game_robots`
- 目标表：`hyapp_robot.robot_game_robots`
- 聚合维度：`app_code + user_id`
- 目标 `game_id`：写入 `dice`，只作为兼容字段使用
- 状态规则：同一用户任意旧行是 `active`，目标状态就是 `active`；否则为 `disabled`
- 使用统计：`last_used_at_ms` 和 `used_count` 取旧行最大值

## 幂等

迁移成功后写入：

```sql
hyapp_robot.robot_service_migrations
```

迁移键：

```text
game_robots_from_game_self_game_robots_v1
```

标记存在后，后续启动不会再次从旧表覆盖新表。

## 回滚

旧表不删除、不重命名、不清空。需要回滚时，可以让旧版本继续读取 `hyapp_game.game_self_game_robots`。

## 新逻辑

迁移完成后：

- game-service 通过 `robot-service` gRPC 读写游戏机器人池。
- robot-service 只读写 `hyapp_robot.robot_game_robots`。
- 旧 `game_self_game_robots` 只保留给历史排查和回滚，不再作为新逻辑来源。
