Files
tssbot.web/backend/README.md
T
2026-06-20 21:58:27 -07:00

61 lines
2.1 KiB
Markdown

# tssbot backend
Rust backend API service for Toothless' TSS Bot.
It reads two SQLite databases:
- `TSS_BATTLES_DB` for `tss_battles.db` (matches, players, and the `match_logs` table)
- `TSS_TEAMS_DB` for `tss_teams.db`
- `TSS_TOURNAMENTS_DB` for `tss_tournaments.db`
If any of these are unset, the backend first looks under `STORAGE_VOL_PATH`
before falling back to the current working directory.
- `BACKEND_HOST` bind host, default `127.0.0.1`
- `BACKEND_ALLOWED_ORIGINS` comma-separated browser origins allowed by CORS
Both paths can be absolute or relative to the repo root when run through the root scripts/PM2.
## Vehicle translation + icons
At startup the backend loads two cache files (built by the bots, shared under
`STORAGE/CACHE`) into memory to translate `player_games_hist.vehicle_internal`
(the WT cdk) into localized vehicle names and icon filenames for the game scoreboard:
- `VEHICLE_TRANSLATIONS_JSON``vehicle_translations.json` (`{ cdk: { en, ru, ... } }`).
The `/api/tss/games/:id` endpoint honors `?lang=` (default `en`), falling back
`lang → en → raw cdk`.
- `VEHICLE_DATA_CACHE_JSON``vehicle_data_cache_all.json` (`[cdk, name, icon, tags]`),
used for icon filenames (fallback `<cdk>.png`).
The icon PNGs themselves are served statically by the frontend at `/vehicle-icons`
(deploy-time copy/symlink of `SHARED/ICONS/VEHICLES`).
It currently exposes:
- `GET /health`
- `GET /api/tss/leaderboard/teams?limit=100`
- `GET /api/tss/leaderboard/players?limit=100`
- `GET /api/tss/games/recent?limit=50`
- `GET /api/tss/games/:session_id?lang=en` — scoreboard (teams, players, vehicle lineup)
- `GET /api/tss/games/:session_id/logs` — chat + battle logs from `match_logs`
- `GET /api/tss/teams/resolve?name=...`
- `GET /api/tss/teams/search?q=...&limit=10`
- `GET /api/tss/teams/:team`
- `GET /api/tss/teams/:team/history`
- `GET /api/tss/teams/:team/games`
- `GET /api/tss/player/:uid`
## Local development
```sh
npm run dev:backend
```
The backend listens on <http://127.0.0.1:6000> by default. Override with `BACKEND_PORT` and `BACKEND_HOST`.
## Production build
```sh
npm run build:backend
```