Sync service
strijdercloud-sync · v0.14.2
healthy · 4d uptime
Elasticsearch
ES 9.0 · 1 node · cluster green
healthy · 4.2 GB / 12 GB
Virtuagym API
Rate-limit: 412 / 500 (15min)
82% · bucket bijna vol
Anthropic API
Claude Haiku 4.5 + Sonnet 4.6
healthy · 87% cache-hit

Incremental sync · 15 min cycle

R-010 · 9 entiteiten incrementeel

on schedule
Volgende run 11:45 (in 11 min)
Gem. duur 38s
Gem. records / run 62

Full refresh · 03:00 UTC daily

R-011 · alle 13 indices · audit-log per run

last: 7m12s
DatumDuurRecordsAPI-callsStatus
5 mei 03:00 7m 12s 56.892 247
4 mei 03:00 6m 48s 56.741 241
3 mei 03:00 9m 02s 56.612 248 retry · 1× 429
2 mei 03:00 6m 31s 56.498 239
1 mei 03:00 6m 44s 56.301 237

ES indices · `virtuagym-*` + `strijdercloud-*`

R-015 · 13 indices · ILM 90d retention

virtuagym-members 454 docs 2.4 MB lag < 5s synced
virtuagym-employees 12 docs 68 KB lag < 1s synced
virtuagym-events 25.579 docs 28.4 MB lag 12s synced
virtuagym-event-participants 21.653 docs 18.1 MB lag 18s synced
virtuagym-membership-definitions 46 docs 220 KB lag < 1s synced
virtuagym-membership-instances 213 docs 512 KB lag < 5s synced
virtuagym-credits 623 docs 1.1 MB lag < 5s synced
virtuagym-notes 281 docs 418 KB lag 12 min 429 retry
virtuagym-bodymetrics 33.647 docs 14.2 MB lag 22s synced
virtuagym-profiles 181 docs 3.4 MB rebuild 11:00 computed · hourly
virtuagym-weather 2.847 docs 812 KB lag 1h KNMI · hourly
virtuagym-ai-history 1.842 docs 2.6 MB live AI chat · live
virtuagym-sync-logs 14.892 docs 8.9 MB live audit · ILM 90d

authId ↔ member_id koppeling · R-019

Mobile-app authIds ↔ VG member_ids · auto via e-mail

98.4% auto
Auto-gekoppeld
187
Handmatig
2
Pending intake
1
Conflict
0
Te koppelen — handmatig
JK
Joris Kemp
authId a_3a1b9d5e · email mismatch (j.kemp@x.nl vs jorisk@y.nl in VG)
RV
Roos Vermeulen
authId a_91d4c2bc · geen VG-account gevonden

VG API rate-limiter · R-012

Token-bucket 500/15min · 50 reserve · 60s wait bij 429

Bucket gebruik 15m 412 / 500
Reserve 50
429 events 24u 3
5xx events 24u 0

Brand-config · A5 / R-071

White-label-tokens · alle UI-strings refereren naar deze waarden

white-label-ready
Active tokens (env)
APP_NAME Strijder PT
TRAINER_NAME Samora Rietveld
TRAINER_FIRST Samora
CLUB_ID 13133
LOCATION_ID strijder-zoetermeer · R-160 default
PRIMARY_LANG nl-NL · u-vorm
BRAND_HUE_OKLCH 38°
DOMAIN dashboard.strijderpt.cloud · R-008
Compliance check
Hardcoded "Strijder" in code 0 hits
Hardcoded "Samora" in code 0 hits
Strings via APP_NAME / TRAINER_NAME 247 refs
External API namen in UI 0 hits
AC4 — brand-config gate pass
Voorbeeld white-label preview
Briefing-titel
"Goedemorgen Samora · Strijder PT dagbriefing"
AI-persona-opening
"U spreekt met de AI-assistent van Samora bij Strijder PT…"
Wijzigingen vereisen redeploy van service · runtime-overrides via env-vars

Flow logs · R-068

Per-request log met `correlation_id` (UUID) · async non-blocking · index `strijdercloud-flow-logs-2026-05`

TIME LEVEL CORR MESSAGE
11:34:18 INFO 7e3c2a.. sync.incremental.start entity=virtuagym-event-participants
11:34:18 INFO 7e3c2a.. vg.api.fetch page=1 since=2026-05-05T11:30:00Z
11:34:19 INFO 7e3c2a.. vg.api.ok records=14 remaining_bucket=88
11:34:19 INFO 7e3c2a.. es.bulk.indexed docs=14 took=42ms
11:34:19 INFO 7e3c2a.. sync.incremental.done duration=1.2s records=14
11:32:04 INFO b1f8d9.. dashboard.api.chat tool=list_by_signal user=<REDACTED> member=<REDACTED>
11:32:05 INFO b1f8d9.. anthropic.haiku.completion input_tokens=12.4k output=812 cache_hit=87%
11:30:47 WARN e2a7f1.. vg.api.429 entity=virtuagym-notes retry_in=60s backoff=exponential
11:31:47 INFO e2a7f1.. vg.api.retry.ok records=8 bucket=412
11:14:22 INFO 3d9e02.. intake.completed authId=<REDACTED> sections=9/9
11:14:23 INFO 3d9e02.. intake.koppel.auto strategy=email_match result=ok
10:48:11 WARN f4c1b7.. intake.koppel.auto strategy=email_match result=mismatch authId=<REDACTED> — manual_required
R-060: PII allowlist-redacted in flow-logs (zie <REDACTED> markers) Toon laatste 12 van 8.412 in venster · 14u terug