Data-sync og cache¶
Oversikt¶
Datasynkroniseringen er ansvaret til sync_worker.py. Den kjøres som en planlagt Windows-oppgave (nattlig) og bygger JSON-cachen som FastAPI-backend bruker for å besvare spørsmål.
SQL Server masterbase (Clubs-tabell)
│
├── boolChatbot = 1 → Klubb inkluderes i sync
│
▼
Per klubb: spør 44 tillatte tabeller
│
▼
cache/{clubFolder}_context.json
sync_worker.py – Detaljert flyt¶
- Kobler til masterdatabasen med pyodbc-parametere fra
.env - Leser
Clubs-tabellen – henter alle rader derboolChatbot = 1 - For hver klubb:
- Kobler til klubbens egen database
- Spør mot 44 forhåndsgodkjente tabeller (nyhetssaker, aktiviteter, baneinfo, prislister, osv.)
- Samler resultatene i ett Python-dict
- Skriver
cache/{clubFolder}_context.json
Tillatte tabeller (44 stk.)¶
Sync-workeren har en eksplisitt godkjentliste (ALLOWED_TABLES) for å hindre at uvedkommende data eksponeres til AI-modellen. Eksempler:
| Tabell | Innhold |
|---|---|
tblNews |
Nyhetssaker |
tblActivities |
Aktiviteter og arrangementer |
tblCourseInfo |
Baneinformasjon |
tblPrices |
Prisliste |
tblContacts |
Kontaktinformasjon |
tblOpeningHours |
Åpningstider |
AI_Chatbot_Settings |
Chatbot-innstillinger per klubb |
Cache-format¶
Filen cache/{clubFolder}_context.json har følgende overordnede struktur:
{
"club_id": "SKI",
"synced_at": "2026-05-02T03:00:00Z",
"tables": {
"tblNews": [
{"id": 1, "title": "Sommer åpent!", "body": "..."},
...
],
"tblActivities": [...],
...
}
}
Planlagt kjøring (Windows Task Scheduler)¶
| Parameter | Verdi |
|---|---|
| Skript | API\chatbot\sync_worker.py |
| Utfører | Python venv: API\python\venv\Scripts\python.exe |
| Utløser | Daglig kl. 03:00 |
| Arbeidskatalog | C:\ftp\sites\clubsite-4\API\chatbot |
Kjør manuelt:
Legge til ny tenant i sync¶
- Sett
boolChatbot = 1for klubben iClubs-tabellen i masterdatabasen - Verifiser at
clubFolder-feltet er korrekt (brukes som filnavn for cache) - Kjør
sync_worker.pymanuelt - Sjekk at
cache/{clubFolder}_context.jsoner opprettet - Oppdater
ALLOWED_TENANT_IDiapp.py(fjernes i v2.1)
Fremtidig forbedring
I v2.1-planen fjernes ALLOWED_TENANT_ID-begrensningen. API-et vil da automatisk laste cache for hvilken som helst tenant med gyldig cache-fil.