2026-06-12 19:40:21 +08:00

76 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# robot-service
`robot-service` 是后端独立机器人账号池服务,当前拆成两个域:
- `game-robot`:自研游戏机器人池,给 `game-service` 匹配机器人补位使用。
- `room-robot`:房间机器人账号池,首版只管理账号可用性,不直接操作 Room Cell。
## 边界
- robot-service 只保存“哪些真实用户可以作为机器人”的登记事实。
- 用户资料、头像、昵称仍由 `user-service/likei` 用户库负责。
- 游戏局、结算、奖池、forced_result 仍由 `game-service` 负责。
- 房间进入、离开、麦位、IM 事件仍由 `room-service` 负责。
## 数据库
新逻辑使用独立库:
- `hyapp_robot.robot_game_robots`
- `hyapp_robot.robot_room_robots`
- `hyapp_robot.robot_service_migrations`
旧库旧表保留不删除:
- `hyapp_game.game_self_game_robots`
启动时如果 `legacy_game_database` 配置为 `hyapp_game`,服务会把旧 `game_self_game_robots` 聚合迁移到 `robot_game_robots`。迁移完成后会写入 `robot_service_migrations`,之后不会再用旧表覆盖新表。
## 配置
本地配置:
```yaml
grpc_addr: ":13011"
health_http_addr: ":13111"
mysql_dsn: "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_robot?parseTime=true&charset=utf8mb4&loc=UTC&multiStatements=true"
legacy_game_database: "hyapp_game"
```
Docker 配置使用 `mysql:3306`,线上配置使用 `ROBOT_MYSQL_DSN`
## RPC
Proto 文件:
- `api/proto/robot/v1/robot.proto`
服务:
- `GameRobotService`
- `RoomRobotService`
`PickGameRobot` 接收 `exclude_user_ids`,由 `game-service` 传入当前局参与者robot-service 不再读取游戏局表来排除用户。
## 本地运行
```bash
./scripts/apply-local-mysql-initdb.sh
make up robot
```
健康检查:
```bash
curl http://127.0.0.1:13111/healthz/ready
```
## 验证
```bash
PATH="/Users/hy/go/bin:$PATH" make proto
go test ./services/robot-service/...
go test ./services/game-service/internal/service/dice ./services/game-service/internal/client ./services/game-service/internal/app
docker compose config
```