Commit Graph

42 Commits

Author SHA1 Message Date
Janis d7df76b769 feat(official-bots): park expert bot on tournament server at startup
Build & Test (NowChessSystems) TeamCity build was removed from queue
Park the expert bot on the configured tournament server (default
http://141.37.123.132:8086) on startup, reusing a fixed
TOURNAMENT_BOT_TOKEN when present instead of minting a new identity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:34:48 +02:00
TeamCity f44d3ee376 ci: bump version with Build-125 2026-06-17 07:24:13 +00:00
lq64 688d30e2b1 fix: enable official bots to connect to external tournament server (#71)
Build & Test (NowChessSystems) TeamCity build finished
Two bugs prevented official bots from joining the external tournament-server:

1. JWT claim mismatch — bot tokens lacked the `isBot: true` claim the
   tournament server requires. Added the claim to generateBotToken() in
   AccountService, which covers both user-owned bots and official bots.

2. Broken join flow — TournamentBotGamePlayer.joinTournament() called
   registerBot() which hit POST /api/auth/register on the tournament server,
   an endpoint that does not exist. Removed registerBot() and updated
   JoinTournamentRequest to accept a botToken field so the caller supplies
   the pre-existing NowChessSystems token directly.

---------

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #71
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>
2026-06-17 09:10:13 +02:00
Janis 98c64fc0d5 fix(official-bots): configure JWT verification (#72)
The official-bots service enabled smallrye-jwt but never set
mp.jwt.verify.publickey.location or issuer, so it could not validate
any incoming token and rejected every authenticated request with 401.

Add the verify public key (issuer nowchess) mirroring tournament/core,
and ship keys/public.pem from the shared keypair.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Reviewed-on: #72
2026-06-17 09:10:01 +02:00
TeamCity 9e800ecb59 ci: bump version with Build-124 2026-06-16 19:41:52 +00:00
Janis 39f1657e1d feat(analytics): add Spark batch analytics module (#70)
Build & Test (NowChessSystems) TeamCity build finished
Co-authored-by: Janis Eccarius <eccariusjanis@gmail.com>
Reviewed-on: #70
2026-06-16 20:38:14 +02:00
TeamCity 60f4e87579 ci: bump version with Build-118 2026-06-09 22:12:20 +00:00
Janis db9d153391 feat(official-bots): consume GameOver stream for bot cleanup (#67)
Build & Test (NowChessSystems) TeamCity build finished
Add consumer group official-bots-game-over on {prefix}:game-over stream.
Track pub/sub subscribers per gameId in gameWatches map. On GameOver event,
unsubscribe from the game s2c channel and remove from watch map.
XACK after cleanup; DLQ after maxRetries failures.

Closes NCS-103
https://knockoutwhist.youtrack.cloud/issue/NCS-103

Reviewed-on: #67
2026-06-09 21:49:42 +02:00
TeamCity 225c2285b7 ci: bump version with Build-116 2026-06-09 13:28:34 +00:00
lq64 c5661de4a0 feat: NCS-82 add Swiss-system tournament module (#55)
Build & Test (NowChessSystems) TeamCity build finished
## Summary

  - Implements the full tournament lifecycle (create, join, withdraw, start,
    round progression, finish) as a standalone Quarkus module
  - All 11 endpoints from the OpenAPI spec (`docs/tournament-openapi.yaml`) are covered
  - Swiss pairing algorithm with Buchholz tiebreak and bye support
  - Per-bot NDJSON event stream with targeted `gameStart` events carrying
    the correct `color` field
  - Game results ingested via Redis writeback stream (`GameResultStreamListener`)

  ## Known gaps (deferred)

  - `GET /results` `nb` param defaults to 100 instead of all
  - `PairingDto` exposes an internal `id` field not in the spec
  - `GameExport.moves` emits PGN instead of UCI (upstream `GameWritebackEventDto`
    does not carry UCI moves)
  - `Pairing.white` can be `null` for bye rounds (spec has no bye concept)

  ## Test plan

  - [x] 23 `TournamentResourceTest` integration tests (H2, mocked core client) — all pass
  - [x] 5 `SwissPairingServiceTest` unit tests — all pass
  - [x] Redis listener excluded in test/dev profiles; no Docker required to run tests

---------

Co-authored-by: LQ63 <lkhermann@web.de>
Co-authored-by: Lala, Shahd <Shahd.Lala@sybit.de>
Reviewed-on: #55
2026-06-09 15:09:53 +02:00
TeamCity 3b6c5297f6 ci: bump version with Build-115 2026-06-09 08:54:49 +00:00
Janis a24924c230 feat(events): migrate game-creation and bot flows to Redis Streams NCS-89 (#62)
Build & Test (NowChessSystems) TeamCity build finished
Replace synchronous account→core game-creation HTTP call and plain
pub/sub bot game-start events with Redis Streams using consumer groups,
XACK, retry, and a Dead Letter Queue for at-least-once delivery and
observability.

- account: GameCreationStreamClient publishes game-creation requests and
  correlates responses via a per-instance consumer group (NCS-91)
- core: GameCreationStreamListener consumes requests, calls
  GameCreationService, publishes response events, retries, and routes
  exhausted/unparseable events to the DLQ (NCS-91, NCS-93, NCS-94)
- official-bots: bot game-start events migrated from pub/sub to Streams
  with consumer group, XACK, retry, and DLQ (NCS-92)
- account EventPublisher dual-writes to the stream and legacy pub/sub
  channel for backward compatibility
- all flows use the typed EventEnvelope (eventId/type/payload/timestamp/
  correlationId) with DLQ error context (eventType, error, attempt)
- register new DTOs and EventEnvelope/EventType for native reflection

Closes NCS-91, NCS-92, NCS-93, NCS-94

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Janis Eccarius <eccariusjanis@gmail.com>
Reviewed-on: #62
2026-06-09 10:31:32 +02:00
TeamCity 4762f6c0c3 ci: bump version with Build-111 2026-06-03 11:50:50 +00:00
shosho996 7117a93376 fix(official-bots): NCS-70-auto-register official bots with account service (#59)
Build & Test (NowChessSystems) TeamCity build finished
Co-authored-by: Janis <janis-e@gmx.de>
Reviewed-on: #59
2026-06-03 13:27:03 +02:00
TeamCity 2a5cfeee39 ci: bump version with Build-79 2026-05-12 22:21:53 +00:00
Janis 3870566349 revert: Revert "refactor: update metrics paths formatting in application.yml for clarity"
This reverts commit 760859d066.
2026-05-12 23:16:28 +02:00
TeamCity 5f177e1415 ci: bump version with Build-78 2026-05-12 20:36:44 +00:00
Janis 760859d066 refactor: update metrics paths formatting in application.yml for clarity
Build & Test (NowChessSystems) TeamCity build finished
2026-05-12 22:14:07 +02:00
TeamCity e81c3844ad ci: bump version with Build-77 2026-05-12 17:18:14 +00:00
Janis 3904d5ad8a feat: add OpenTelemetry trace configuration with parentbased sampler
Build & Test (NowChessSystems) TeamCity build finished
2026-05-12 19:00:08 +02:00
TeamCity 58e08f3807 ci: bump version with Build-76 2026-05-11 21:05:41 +00:00
Janis d438e97f32 feat: add initialization metrics for various services 2026-05-11 22:37:22 +02:00
TeamCity fcc251f777 ci: bump version with Build-75 2026-05-10 21:19:52 +00:00
Janis 7efdd69948 refactor: update meterRegistry usage to Option type and improve formatting
Build & Test (NowChessSystems) TeamCity build finished
2026-05-10 22:56:57 +02:00
Janis 9459203e0d refactor: update timer record calls to use Runnable type
Build & Test (NowChessSystems) TeamCity build failed
2026-05-10 22:24:55 +02:00
Janis d57c488661 feat: configure logging and add OpenTelemetry support (#49)
Build & Test (NowChessSystems) TeamCity build failed
Reviewed-on: #49
2026-05-10 20:31:48 +02:00
TeamCity e9a4ecf4ae ci: bump version with Build-73 2026-05-10 10:36:36 +00:00
Janis 87dfc6c2bc feat: NCS-78 Add Traceability to the Applications (#47)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #47
2026-05-10 12:15:53 +02:00
TeamCity 183ad670e3 ci: bump version with Build-72 2026-05-09 19:11:07 +00:00
Janis 649566eb3f feat: NCS-78 Add Traceability to the Applications (#46)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #46
2026-05-09 20:54:18 +02:00
TeamCity 18a4b1cc15 ci: bump version with Build-60 2026-05-02 15:53:05 +00:00
TeamCity 3c47d2b8c9 ci: bump version with Build-58 2026-05-01 18:23:46 +00:00
TeamCity 9f86cc421f ci: bump version with Build-57 2026-04-30 17:14:21 +00:00
TeamCity 77e498a326 ci: bump version with Build-56 2026-04-30 16:15:27 +00:00
TeamCity 0229147f4d ci: bump version with Build-55 2026-04-30 15:35:40 +00:00
Janis 2404e6164c feat(config): update application.yml for PostgreSQL and remove staging/production configurations 2026-04-30 16:14:10 +02:00
TeamCity 6a143a462a ci: bump version with Build-54 2026-04-30 09:55:43 +00:00
Janis 6113432a14 feat(config): update application.yml for staging and production environments
Build & Test (NowChessSystems) TeamCity build finished
2026-04-30 10:55:20 +02:00
Janis 34b9933046 feat(docker): add Dockerfiles for Quarkus application in JVM and native modes
Build & Test (NowChessSystems) TeamCity build finished
2026-04-30 09:28:02 +02:00
Janis c987d8e258 feat(docker): add .dockerignore and .gitignore files for build exclusions
Build & Test (NowChessSystems) TeamCity build was queued
2026-04-30 08:41:03 +02:00
Janis 3f2d2bb4c9 feat(docker): add Dockerfiles for building Quarkus application in native and JVM modes
Build & Test (NowChessSystems) TeamCity build failed
2026-04-30 08:32:04 +02:00
Janis 590924254e feat: true-microservices (#40)
Reviewed-on: #40
2026-04-29 22:06:01 +02:00