docs(diagrams): align §28 sequence diagrams with implemented routes

Adversarial cross-check of the three §28 diagrams against the wake, claim
and link code paths surfaced two fidelity drifts:

- The wake/status/join-event lanes used abbreviated /internal/... paths;
  the registered internal-face routes carry the /api/v1 prefix (api.go),
  matching the convention the claim and link diagrams already use.
- The /link diagram showed the game posting {mc_uuid, auth_source}, but no
  shipped in-game caller sends auth_source — LinkClient posts {mc_uuid}
  and the API defaults auth_source to mojang server-side.

The claim diagram already matched the code (verbatim atomic UPDATE,
404/409/200 mapping) and is unchanged.
This commit is contained in:
flyemoji committed 2026-06-30 13:18:47 +09:00
1 parent 8ac5e64d8a
commit 676407d036
1 file changed
+7 -7
+7 -7
View File
@@ -30,7 +30,7 @@ sequenceDiagram
Player->>Backend: connect Player->>Backend: connect
else backend not ready and lobby configured else backend not ready and lobby configured
Velocity-->>Player: initial server = lobby Velocity-->>Player: initial server = lobby
Velocity->>API: POST /internal/servers/{name}/wake {mc_uuid} Velocity->>API: POST /api/v1/internal/servers/{name}/wake {mc_uuid}
API->>Cluster: GetServer(name) API->>Cluster: GetServer(name)
API->>API: authorize autostartPolicy, cooldown, running cap API->>API: authorize autostartPolicy, cooldown, running cap
API->>Cluster: SetDesiredState(name, Running) API->>Cluster: SetDesiredState(name, Running)
@@ -41,7 +41,7 @@ sequenceDiagram
Backend-->>Operator: RCON-ready / lifecycle ready Backend-->>Operator: RCON-ready / lifecycle ready
Operator-->>Cluster: status.ready=true Operator-->>Cluster: status.ready=true
loop every waiting tick loop every waiting tick
Velocity->>API: GET /internal/servers/{name}/status Velocity->>API: GET /api/v1/internal/servers/{name}/status
API->>Cluster: GetServer(name) API->>Cluster: GetServer(name)
API-->>Velocity: ready flag API-->>Velocity: ready flag
end end
@@ -49,12 +49,12 @@ sequenceDiagram
Velocity-->>Player: "ready - moving you in" Velocity-->>Player: "ready - moving you in"
Velocity->>Player: Connect request to backend Velocity->>Player: Connect request to backend
Player->>Backend: connect Player->>Backend: connect
Velocity->>API: POST /internal/servers/{name}/join-event {mc_uuid} Velocity->>API: POST /api/v1/internal/servers/{name}/join-event {mc_uuid}
API->>API: RecordJoin; refresh activity and allowlist UUID API->>API: RecordJoin; refresh activity and allowlist UUID
API-->>Velocity: 204 API-->>Velocity: 204
else backend not ready and no lobby configured else backend not ready and no lobby configured
Velocity-->>Player: disconnect with reconnect-later message Velocity-->>Player: disconnect with reconnect-later message
Velocity->>API: POST /internal/servers/{name}/wake {mc_uuid} Velocity->>API: POST /api/v1/internal/servers/{name}/wake {mc_uuid}
API->>Cluster: SetDesiredState(name, Running) if authorized API->>Cluster: SetDesiredState(name, Running) if authorized
API-->>Velocity: 202 or branchable error API-->>Velocity: 202 or branchable error
end end
@@ -117,10 +117,10 @@ sequenceDiagram
participant APIExternal as felis-api external face participant APIExternal as felis-api external face
Player->>Game: /link Player->>Game: /link
Game->>Game: read verified online-mode UUID and auth_source Game->>Game: read verified online-mode UUID
Game->>LinkClient: requestCode(mc_uuid) Game->>LinkClient: requestCode(mc_uuid)
LinkClient->>APIInternal: POST /api/v1/internal/account/link/code {mc_uuid, auth_source} LinkClient->>APIInternal: POST /api/v1/internal/account/link/code {mc_uuid}
APIInternal->>APIInternal: validate UUID and auth_source; generate 8-symbol code APIInternal->>APIInternal: validate UUID; default auth_source=mojang if absent; generate 8-symbol code
APIInternal->>Repo: CreateLinkCode(code, mc_uuid, auth_source, expires_at) APIInternal->>Repo: CreateLinkCode(code, mc_uuid, auth_source, expires_at)
Repo-->>APIInternal: inserted account_link_codes row Repo-->>APIInternal: inserted account_link_codes row
APIInternal-->>LinkClient: 201 {code, expires_at} APIInternal-->>LinkClient: 201 {code, expires_at}