Versjon 1 (Lansert) Teknisk Utviklerdokumentasjon
Dette dokumentet gir dyp teknisk innsikt i arkitekturen, filene og databaseendringene som ble implementert i Versjon 1 (Fase 1-4) av AI Chatbot-prosjektet i ClubSite.
1. Teknisk Arkitektur & Datamodell
Første versjon ble bygget for å injisere en flytende chat-widget på Clubsite CMS uten å forstyrre den eksisterende kjernen (Classic ASP).
Databaseendringer (MS SQL)
Når administratoren først besøker adminpanelet (ai_chatbot.asp), kjøres følgende SQL for å generere tabellen:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='AI_Chatbot_Settings' and xtype='U')
CREATE TABLE [AI_Chatbot_Settings] (
[Id] [int] IDENTITY(1,1) NOT NULL,
[IsActive] [bit] NOT NULL DEFAULT ((0)),
[BotName] [nvarchar](100) NULL,
[PrimaryColor] [nvarchar](50) NULL,
[HeaderTextColor] [nvarchar](50) NULL,
[ClubId] [int] NULL
) ON [PRIMARY];
IsActive = 1 i denne DB-raden).
2. Inkluderte Filer i V1 Deployment
| Kilde | Destinasjon | Funksjon | SPRÅK / STACK |
|---|---|---|---|
ai_chat_widget.html |
/ (Roten) |
Danner DOM-strukturen og inneholder JavaScript for state-management, API-kall (fetch) og toggling av chatboksen. | HTML5, CSS3, Vanilla JS |
ai_chatbot.asp |
/SKI/CSADMIN/ |
Backend grafisk grensesnitt for admin. Utfører CRUD-operasjoner direkte mot AI_Chatbot_Settings tabellen. Utfører også database-scaffolding på første last. |
Classic VBScript/ASP |
ai_chatbot_loader.asp |
/SKI/common-front/ |
Dynamisk script som leser klubbens visuelle fargekoder fra DB via ADODB.Connection og injecter <script> og CSS-variabler over HTML-dokumentet, dersom systemet er enablet. |
Classic VBScript/ASP |
3. Integrasjonsmetode (Footer Injection)
Selve chat-logikken holdes avkoblet CMSets kildekode via Server Side Includes (SSI). Modulen blir implementert via en enkelt fil i html_footer.asp:
Dette design-mønsteret betyr at en feil i Chatbot-koden isoleres fra ClubSites side-rendering. Filen html_footer.asp må ligge i samme mappe som ai_chatbot_loader.asp (eller justeres via virtuelt path).
4. Frontend Variabler (Dynamisk injection)
Fra ai_chatbot_loader.asp plukkes DB-innstillingene opp, og skyves inn som JavaScript-variabler bundet til window for at den underliggende widget-htmlen kan plukke opp kundesettede overrides:
window.AI_CHATBOT_CONFIG = {
botName: "<%=botName%>",
primaryColor: "<%=primaryColor%>",
headerTextColor: "<%=headerTextColor%>",
clubId: <%=Session("dbClientNumber")%>
};
5. API Backend (Python / FastAPI)
(Ref. Fase 2 av den opprinnelige kravspekken)
V1 støtter seg på en ekstern Python API-tjeneste bygget på FastAPI. Den kjører en isolert context som:
1. Gjør oppslag via Gemini.
2. Sender clubId i REST-kall for å få spesifikk klubbkontekst.
3. Behandler sessions via Cache.
REST Endpoint-kontrakten som V1-JS-widgeten bruker mot Python-serveren:
- Endpoint: /chat (POST)
- Payload: { "message": "Hei!", "clubId": 12, "history": [{...}] }
- Response: { "status": "success", "reply": "Hei, jeg kan hjelpe deg med greenfee" }
For den faktiske loggen for V2, eller planlegging videre, se Versjon 2 dokumentasjon.