docs: mark phases 3-5 complete, update API/FRONTEND/MODULES/CLAUDE.md

This commit is contained in:
Tran G. (Revernomad) Khoa
2026-04-17 20:50:19 +07:00
parent 5a62d21def
commit 8bac29fb68
5 changed files with 44 additions and 53 deletions

View File

@@ -42,42 +42,35 @@ All routers, services, repositories, game adapter system, WebSocket, background
### Frontend Type Mapping (API → Frontend)
Types below reflect the **current** API shape. Fields marked `(planned)` will be added during the UX enhancement plan.
| API Resource | Frontend Type | Key Fields |
|---|---|---|
| Server (enriched) | `Server` in useServers.ts | `game_port`, `current_players`, `max_players`, `cpu_percent`, `ram_mb` |
| Mission | `Mission` in useServerDetail.ts | `name`, `filename`, `size_bytes`, `terrain` *(planned)* |
| Mod | `Mod` in useServerDetail.ts | `name`, `path`, `size_bytes`, `enabled`, `display_name` *(planned)*, `workshop_id` *(planned)* |
| Mission | `Mission` in useServerDetail.ts | `name`, `filename`, `size_bytes`, `terrain` |
| Mod | `Mod` in useServerDetail.ts | `name`, `path`, `size_bytes`, `enabled`, `display_name`, `workshop_id` |
| Ban | `Ban` in useServerDetail.ts | `id`, `server_id`, `guid`, `name`, `reason`, `banned_by`, `banned_at`, `expires_at`, `is_active`, `game_data` |
| Player | `Player` in useServerDetail.ts | `id`, `slot_id`, `name`, `guid`, `ip`, `ping` |
| LogFile | `LogFile` in useServerDetail.ts | `filename`, `size_bytes`, `modified_at` |
### Upcoming: UX Enhancement Plan
### UX Enhancement Plan — ALL PHASES COMPLETE
**Plan file:** `.claude/plan/arma3-ux-enhancement.md` — approved, ready to implement.
**Plan file:** `.claude/plan/arma3-ux-enhancement.md`
| Phase | Feature | Status |
|-------|---------|--------|
| 1 | Config field UI widgets (textarea/toggle/select/tag-list per field) | Done |
| 2 | Mission rotation table + multi-file upload | Done |
| 3 | Mod display names (mod.cpp) + split-pane selector | Pending |
| 4 | Player Kick/Ban from Players tab via RCon | Pending |
| 5 | Historical log file browser + live log level filter | Pending |
| 1 | Config field UI widgets (textarea/toggle/select/tag-list per field) | **Done** |
| 2 | Mission rotation table + multi-file upload | **Done** |
| 3 | Mod display names (mod.cpp) + split-pane selector | **Done** |
| 4 | Player Kick/Ban from Players tab via RCon | **Done** |
| 5 | Historical log file browser + live log level filter | **Done** |
**New endpoints added by the plan:**
- `GET /api/servers/{id}/config/schema` — per-field widget hints (**implemented**)
- `GET|PUT /api/servers/{id}/missions/rotation` — mission rotation (**implemented**)
- `POST /api/servers/{id}/players/{slot_id}/kick`
- `POST /api/servers/{id}/players/{slot_id}/ban`
- `GET /api/servers/{id}/logfiles`
- `GET /api/servers/{id}/logfiles/{filename}/download`
- `DELETE /api/servers/{id}/logfiles/{filename}`
**New backend additions:**
- `Arma3ConfigGenerator.get_ui_schema()` — widget schema per config field
- `PlayerRepository.get_by_slot()` — lookup player by slot_id
- `ThreadRegistry.get_rcon_client()` — expose live RCon client for kick/ban
- `RPTParser.list_log_files()` / `get_log_file_path()` — historical log access
**Endpoints added:**
- `GET /api/servers/{id}/config/schema` — per-field widget hints
- `GET|PUT /api/servers/{id}/missions/rotation` — mission rotation with optimistic locking
- `POST /api/servers/{id}/players/{slot_id}/kick` — kick via RCon
- `POST /api/servers/{id}/players/{slot_id}/ban` — ban via RCon + DB record
- `GET /api/servers/{id}/logfiles` — list `.rpt` log files
- `GET /api/servers/{id}/logfiles/{filename}/download` — download log file
- `DELETE /api/servers/{id}/logfiles/{filename}` — delete log file
## Test Commands